@ecopages/core 0.2.0-alpha.23 → 0.2.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +93 -226
- package/src/adapters/abstract/application-adapter.test.ts +172 -0
- package/src/adapters/abstract/application-adapter.ts +379 -0
- package/src/adapters/abstract/router-adapter.ts +30 -0
- package/src/adapters/abstract/server-adapter.ts +79 -0
- package/src/adapters/bun/client-bridge.ts +62 -0
- package/src/adapters/bun/create-app.ts +180 -0
- package/src/adapters/bun/hmr-manager.test.ts +267 -0
- package/src/adapters/bun/hmr-manager.ts +406 -0
- package/src/adapters/bun/index.ts +2 -0
- package/src/adapters/bun/server-adapter.ts +500 -0
- package/src/adapters/bun/server-lifecycle.ts +124 -0
- package/src/adapters/create-app.test.ts +10 -0
- package/src/adapters/create-app.ts +91 -0
- package/src/adapters/index.ts +2 -0
- package/src/adapters/node/create-app.test.ts +53 -0
- package/src/adapters/node/create-app.ts +183 -0
- package/src/adapters/node/node-client-bridge.test.ts +198 -0
- package/src/adapters/node/node-client-bridge.ts +79 -0
- package/src/adapters/node/node-hmr-manager.test.ts +322 -0
- package/src/adapters/node/node-hmr-manager.ts +378 -0
- package/src/adapters/node/server-adapter.ts +502 -0
- package/src/adapters/node/static-content-server.test.ts +60 -0
- package/src/adapters/node/static-content-server.ts +239 -0
- package/src/adapters/shared/api-response.test.ts +97 -0
- package/src/adapters/shared/api-response.ts +104 -0
- package/src/adapters/shared/application-adapter.ts +199 -0
- package/src/adapters/shared/define-api-handler.ts +66 -0
- package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
- package/src/adapters/shared/explicit-static-route-matcher.ts +140 -0
- package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
- package/src/adapters/shared/file-route-middleware-pipeline.ts +127 -0
- package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
- package/src/adapters/shared/fs-server-response-factory.ts +118 -0
- package/src/adapters/shared/fs-server-response-matcher.test.ts +285 -0
- package/src/adapters/shared/fs-server-response-matcher.ts +189 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
- package/src/adapters/shared/hmr-html-response.ts +52 -0
- package/src/adapters/shared/hmr-manager.contract.test.ts +232 -0
- package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
- package/src/adapters/shared/render-context.test.ts +150 -0
- package/src/adapters/shared/render-context.ts +123 -0
- package/src/adapters/shared/runtime-bootstrap.ts +79 -0
- package/src/adapters/shared/server-adapter.test.ts +77 -0
- package/src/adapters/shared/server-adapter.ts +493 -0
- package/src/adapters/shared/server-route-handler.test.ts +110 -0
- package/src/adapters/shared/server-route-handler.ts +153 -0
- package/src/adapters/shared/server-static-builder.test.ts +338 -0
- package/src/adapters/shared/server-static-builder.ts +170 -0
- package/src/build/build-adapter-serialization.test.ts +281 -0
- package/src/build/build-adapter.test.ts +1240 -0
- package/src/build/build-adapter.ts +1012 -0
- package/src/build/build-manifest.ts +54 -0
- package/src/build/build-types.ts +83 -0
- package/src/build/dev-build-coordinator.ts +220 -0
- package/src/build/esbuild-build-adapter.ts +660 -0
- package/src/build/runtime-build-executor.test.ts +81 -0
- package/src/build/runtime-build-executor.ts +40 -0
- package/src/build/runtime-specifier-alias-plugin.test.ts +67 -0
- package/src/build/runtime-specifier-alias-plugin.ts +62 -0
- package/src/build/runtime-specifier-aliases.ts +135 -0
- package/src/config/config-builder.test.ts +443 -0
- package/src/config/config-builder.ts +742 -0
- package/src/config/config-builder.typecheck.test.ts +96 -0
- package/src/config/{constants.d.ts → constants.ts} +22 -13
- package/src/dev/sc-server.ts +143 -0
- package/src/eco/eco.browser.test.ts +43 -0
- package/src/eco/eco.browser.ts +118 -0
- package/src/eco/eco.test.ts +654 -0
- package/src/eco/eco.ts +205 -0
- package/src/eco/eco.types.ts +221 -0
- package/src/eco/eco.utils.test.ts +219 -0
- package/src/eco/eco.utils.ts +5 -0
- package/src/eco/global-injector-map.test.ts +42 -0
- package/src/eco/global-injector-map.ts +112 -0
- package/src/eco/lazy-injector-map.test.ts +66 -0
- package/src/eco/lazy-injector-map.ts +120 -0
- package/src/eco/module-dependencies.test.ts +30 -0
- package/src/eco/module-dependencies.ts +75 -0
- package/src/errors/http-error.test.ts +134 -0
- package/src/errors/http-error.ts +72 -0
- package/src/errors/{index.d.ts → index.ts} +2 -2
- package/src/errors/locals-access-error.ts +7 -0
- package/src/global/app-logger.ts +4 -0
- package/src/global/utils.test.ts +12 -0
- 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 +160 -0
- package/src/hmr/hmr-strategy.test.ts +124 -0
- package/src/hmr/hmr-strategy.ts +177 -0
- package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
- package/src/hmr/hmr.test.e2e.ts +66 -0
- package/src/hmr/strategies/default-hmr-strategy.ts +60 -0
- package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
- package/src/hmr/strategies/js-hmr-strategy.ts +320 -0
- package/src/index.browser.ts +3 -0
- package/src/index.ts +15 -0
- package/src/integrations/ghtml/ghtml-renderer.test.ts +253 -0
- package/src/integrations/ghtml/ghtml-renderer.ts +97 -0
- package/src/integrations/ghtml/ghtml.constants.ts +1 -0
- package/src/integrations/ghtml/ghtml.plugin.ts +28 -0
- package/src/plugins/alias-resolver-plugin.test.ts +41 -0
- package/src/plugins/alias-resolver-plugin.ts +63 -0
- package/src/plugins/eco-component-meta-plugin.test.ts +406 -0
- package/src/plugins/eco-component-meta-plugin.ts +495 -0
- package/src/plugins/foreign-jsx-override-plugin.test.ts +65 -0
- package/src/plugins/foreign-jsx-override-plugin.ts +67 -0
- package/src/plugins/integration-plugin.test.ts +156 -0
- package/src/plugins/integration-plugin.ts +311 -0
- package/src/plugins/processor.test.ts +148 -0
- package/src/plugins/processor.ts +240 -0
- package/src/plugins/{runtime-capability.d.ts → runtime-capability.ts} +8 -3
- package/src/plugins/source-transform.test.ts +82 -0
- package/src/plugins/source-transform.ts +123 -0
- package/src/route-renderer/orchestration/boundary-planning.service.ts +146 -0
- package/src/route-renderer/orchestration/component-render-context.ts +318 -0
- package/src/route-renderer/orchestration/integration-renderer.test.ts +2088 -0
- package/src/route-renderer/orchestration/integration-renderer.ts +1285 -0
- package/src/route-renderer/orchestration/page-packaging.service.test.ts +76 -0
- package/src/route-renderer/orchestration/page-packaging.service.ts +85 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.ts +25 -0
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.test.ts +319 -0
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.ts +289 -0
- package/src/route-renderer/orchestration/render-execution.service.test.ts +196 -0
- package/src/route-renderer/orchestration/render-execution.service.ts +182 -0
- package/src/route-renderer/orchestration/render-output.utils.ts +302 -0
- package/src/route-renderer/orchestration/render-preparation.service.test.ts +569 -0
- package/src/route-renderer/orchestration/render-preparation.service.ts +508 -0
- package/src/route-renderer/orchestration/route-shell-composer.service.ts +162 -0
- package/src/route-renderer/orchestration/template-serialization.test.ts +110 -0
- package/src/route-renderer/orchestration/template-serialization.ts +117 -0
- package/src/route-renderer/page-loading/component-dependency-collection.ts +196 -0
- package/src/route-renderer/page-loading/declared-asset-collection.ts +156 -0
- package/src/route-renderer/page-loading/dependency-resolver.test.ts +665 -0
- package/src/route-renderer/page-loading/dependency-resolver.ts +150 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +75 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.ts +167 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.ts +74 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.ts +60 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.ts +16 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.ts +205 -0
- package/src/route-renderer/page-loading/page-module-loader.test.ts +183 -0
- package/src/route-renderer/page-loading/page-module-loader.ts +184 -0
- package/src/route-renderer/route-renderer.ts +136 -0
- package/src/router/client/link-intent.test.browser.ts +51 -0
- package/src/router/client/link-intent.ts +92 -0
- package/src/router/client/navigation-coordinator.test.ts +237 -0
- package/src/router/client/navigation-coordinator.ts +453 -0
- package/src/router/server/fs-router-scanner.test.ts +83 -0
- package/src/router/server/fs-router-scanner.ts +224 -0
- package/src/router/server/fs-router.test.ts +214 -0
- package/src/router/server/fs-router.ts +122 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +66 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +476 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +345 -0
- package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
- package/src/services/assets/asset-processing-service/asset.factory.ts +105 -0
- package/src/services/assets/asset-processing-service/assets.types.ts +125 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +74 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +96 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +104 -0
- package/src/services/assets/asset-processing-service/index.ts +5 -0
- package/src/services/assets/asset-processing-service/{processor.interface.d.ts → processor.interface.ts} +10 -5
- package/src/services/assets/asset-processing-service/processor.registry.ts +18 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +83 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +174 -0
- package/src/services/assets/asset-processing-service/processors/index.ts +5 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +192 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +134 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +326 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +110 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +87 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +261 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +71 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +81 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +65 -0
- package/src/services/assets/browser-bundle.service.test.ts +66 -0
- package/src/services/assets/browser-bundle.service.ts +109 -0
- package/src/services/cache/cache.types.ts +126 -0
- package/src/services/cache/index.ts +18 -0
- package/src/services/cache/memory-cache-store.test.ts +225 -0
- package/src/services/cache/memory-cache-store.ts +130 -0
- package/src/services/cache/page-cache-service.test.ts +175 -0
- package/src/services/cache/page-cache-service.ts +202 -0
- package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
- package/src/services/cache/page-request-cache-coordinator.service.ts +131 -0
- package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
- package/src/services/html/html-rewriter-provider.service.ts +104 -0
- package/src/services/html/html-transformer.service.test.ts +479 -0
- package/src/services/html/html-transformer.service.ts +275 -0
- package/src/services/invalidation/development-invalidation.service.test.ts +87 -0
- package/src/services/invalidation/development-invalidation.service.ts +262 -0
- package/src/services/module-loading/app-module-loader.service.ts +9 -0
- package/src/services/module-loading/app-server-module-transpiler.service.test.ts +130 -0
- package/src/services/module-loading/app-server-module-transpiler.service.ts +143 -0
- package/src/services/module-loading/host-module-loader-registry.ts +15 -0
- package/src/services/module-loading/{module-loading-types.d.ts → module-loading-types.ts} +1 -0
- package/src/services/module-loading/node-bootstrap-plugin.test.ts +335 -0
- package/src/services/module-loading/node-bootstrap-plugin.ts +297 -0
- package/src/services/module-loading/page-module-import.service.test.ts +504 -0
- package/src/services/module-loading/page-module-import.service.ts +252 -0
- package/src/services/module-loading/server-module-transpiler.service.test.ts +243 -0
- package/src/services/module-loading/server-module-transpiler.service.ts +104 -0
- package/src/services/module-loading/source-module-support.ts +19 -0
- package/src/services/runtime-state/dev-graph.service.ts +217 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
- package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
- package/src/services/validation/schema-validation-service.test.ts +223 -0
- package/src/services/validation/schema-validation-service.ts +204 -0
- package/src/services/validation/{standard-schema.types.d.ts → standard-schema.types.ts} +20 -17
- package/src/static-site-generator/static-site-generator.test.ts +316 -0
- package/src/static-site-generator/static-site-generator.ts +462 -0
- package/src/types/internal-types.ts +242 -0
- package/src/types/public-types.ts +1443 -0
- package/src/utils/deep-merge.test.ts +114 -0
- package/src/utils/deep-merge.ts +47 -0
- package/src/utils/hash.ts +5 -0
- package/src/utils/html-escaping.ts +9 -0
- package/src/utils/invariant.test.ts +22 -0
- package/src/utils/invariant.ts +15 -0
- package/src/utils/locals-utils.ts +37 -0
- package/src/utils/parse-cli-args.test.ts +69 -0
- package/src/utils/parse-cli-args.ts +105 -0
- package/src/utils/path-utils.module.ts +14 -0
- package/src/utils/path-utils.test.ts +15 -0
- package/src/utils/resolve-work-dir.ts +45 -0
- package/src/utils/runtime.ts +44 -0
- package/src/utils/server-utils.module.ts +67 -0
- package/src/utils/server-utils.test.ts +38 -0
- package/src/watchers/project-watcher.integration.test.ts +337 -0
- package/src/watchers/project-watcher.test-helpers.ts +41 -0
- package/src/watchers/project-watcher.test.ts +768 -0
- package/src/watchers/project-watcher.ts +357 -0
- package/CHANGELOG.md +0 -51
- package/src/adapters/abstract/application-adapter.d.ts +0 -194
- package/src/adapters/abstract/application-adapter.js +0 -121
- package/src/adapters/abstract/router-adapter.d.ts +0 -26
- package/src/adapters/abstract/router-adapter.js +0 -5
- package/src/adapters/abstract/server-adapter.d.ts +0 -69
- package/src/adapters/abstract/server-adapter.js +0 -15
- package/src/adapters/bun/client-bridge.d.ts +0 -34
- package/src/adapters/bun/client-bridge.js +0 -48
- package/src/adapters/bun/create-app.d.ts +0 -52
- package/src/adapters/bun/create-app.js +0 -116
- package/src/adapters/bun/hmr-manager.d.ts +0 -143
- package/src/adapters/bun/hmr-manager.js +0 -333
- package/src/adapters/bun/index.d.ts +0 -2
- package/src/adapters/bun/index.js +0 -8
- package/src/adapters/bun/server-adapter.d.ts +0 -155
- package/src/adapters/bun/server-adapter.js +0 -374
- package/src/adapters/bun/server-lifecycle.d.ts +0 -63
- package/src/adapters/bun/server-lifecycle.js +0 -92
- package/src/adapters/create-app.d.ts +0 -20
- package/src/adapters/create-app.js +0 -66
- package/src/adapters/index.d.ts +0 -2
- package/src/adapters/index.js +0 -8
- package/src/adapters/node/create-app.d.ts +0 -18
- package/src/adapters/node/create-app.js +0 -149
- package/src/adapters/node/node-client-bridge.d.ts +0 -26
- package/src/adapters/node/node-client-bridge.js +0 -66
- package/src/adapters/node/node-hmr-manager.d.ts +0 -133
- package/src/adapters/node/node-hmr-manager.js +0 -311
- package/src/adapters/node/server-adapter.d.ts +0 -161
- package/src/adapters/node/server-adapter.js +0 -359
- package/src/adapters/node/static-content-server.d.ts +0 -60
- package/src/adapters/node/static-content-server.js +0 -194
- package/src/adapters/shared/api-response.d.ts +0 -52
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.d.ts +0 -18
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -103
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -99
- package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
- package/src/adapters/shared/fs-server-response-factory.js +0 -97
- package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -67
- package/src/adapters/shared/fs-server-response-matcher.js +0 -147
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.d.ts +0 -22
- package/src/adapters/shared/hmr-html-response.js +0 -32
- package/src/adapters/shared/render-context.d.ts +0 -15
- package/src/adapters/shared/render-context.js +0 -72
- package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
- package/src/adapters/shared/runtime-bootstrap.js +0 -43
- package/src/adapters/shared/server-adapter.d.ts +0 -97
- package/src/adapters/shared/server-adapter.js +0 -390
- package/src/adapters/shared/server-route-handler.d.ts +0 -89
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.d.ts +0 -70
- package/src/adapters/shared/server-static-builder.js +0 -100
- package/src/build/build-adapter.d.ts +0 -239
- package/src/build/build-adapter.js +0 -642
- package/src/build/build-manifest.d.ts +0 -27
- package/src/build/build-manifest.js +0 -30
- package/src/build/build-types.d.ts +0 -57
- package/src/build/build-types.js +0 -0
- package/src/build/dev-build-coordinator.d.ts +0 -72
- package/src/build/dev-build-coordinator.js +0 -154
- package/src/build/esbuild-build-adapter.d.ts +0 -78
- package/src/build/esbuild-build-adapter.js +0 -505
- package/src/build/runtime-build-executor.d.ts +0 -14
- package/src/build/runtime-build-executor.js +0 -22
- package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
- package/src/build/runtime-specifier-alias-plugin.js +0 -35
- package/src/build/runtime-specifier-aliases.d.ts +0 -5
- package/src/build/runtime-specifier-aliases.js +0 -95
- package/src/config/config-builder.d.ts +0 -252
- package/src/config/config-builder.js +0 -603
- package/src/config/constants.js +0 -25
- package/src/dev/sc-server.d.ts +0 -30
- package/src/dev/sc-server.js +0 -111
- package/src/eco/eco.browser.d.ts +0 -2
- package/src/eco/eco.browser.js +0 -83
- package/src/eco/eco.d.ts +0 -9
- package/src/eco/eco.js +0 -85
- package/src/eco/eco.types.d.ts +0 -178
- package/src/eco/eco.types.js +0 -0
- package/src/eco/eco.utils.d.ts +0 -1
- package/src/eco/eco.utils.js +0 -10
- package/src/eco/global-injector-map.d.ts +0 -16
- package/src/eco/global-injector-map.js +0 -80
- package/src/eco/lazy-injector-map.d.ts +0 -8
- package/src/eco/lazy-injector-map.js +0 -70
- package/src/eco/module-dependencies.d.ts +0 -18
- package/src/eco/module-dependencies.js +0 -49
- package/src/errors/http-error.d.ts +0 -31
- package/src/errors/http-error.js +0 -50
- package/src/errors/index.js +0 -4
- package/src/errors/locals-access-error.d.ts +0 -4
- package/src/errors/locals-access-error.js +0 -9
- package/src/global/app-logger.d.ts +0 -2
- package/src/global/app-logger.js +0 -6
- package/src/hmr/client/hmr-runtime.d.ts +0 -5
- package/src/hmr/client/hmr-runtime.js +0 -109
- package/src/hmr/hmr-strategy.d.ts +0 -162
- package/src/hmr/hmr-strategy.js +0 -44
- package/src/hmr/hmr.postcss.test.e2e.d.ts +0 -1
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.d.ts +0 -1
- package/src/hmr/hmr.test.e2e.js +0 -43
- package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
- package/src/hmr/strategies/default-hmr-strategy.js +0 -34
- package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -139
- package/src/hmr/strategies/js-hmr-strategy.js +0 -178
- package/src/index.browser.d.ts +0 -3
- package/src/index.browser.js +0 -4
- package/src/index.d.ts +0 -6
- package/src/index.js +0 -21
- package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -20
- package/src/integrations/ghtml/ghtml-renderer.js +0 -63
- package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
- package/src/integrations/ghtml/ghtml.constants.js +0 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
- package/src/integrations/ghtml/ghtml.plugin.js +0 -20
- package/src/plugins/alias-resolver-plugin.d.ts +0 -2
- package/src/plugins/alias-resolver-plugin.js +0 -53
- package/src/plugins/eco-component-meta-plugin.d.ts +0 -108
- package/src/plugins/eco-component-meta-plugin.js +0 -163
- package/src/plugins/foreign-jsx-override-plugin.d.ts +0 -31
- package/src/plugins/foreign-jsx-override-plugin.js +0 -35
- package/src/plugins/integration-plugin.d.ts +0 -219
- package/src/plugins/integration-plugin.js +0 -196
- package/src/plugins/processor.d.ts +0 -95
- package/src/plugins/processor.js +0 -136
- package/src/plugins/runtime-capability.js +0 -0
- package/src/plugins/source-transform.d.ts +0 -46
- package/src/plugins/source-transform.js +0 -71
- package/src/route-renderer/orchestration/boundary-planning.service.d.ts +0 -25
- package/src/route-renderer/orchestration/boundary-planning.service.js +0 -97
- package/src/route-renderer/orchestration/component-render-context.d.ts +0 -83
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- package/src/route-renderer/orchestration/integration-renderer.d.ts +0 -554
- package/src/route-renderer/orchestration/integration-renderer.js +0 -957
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +0 -89
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +0 -155
- package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -43
- package/src/route-renderer/orchestration/render-execution.service.js +0 -106
- package/src/route-renderer/orchestration/render-output.utils.d.ts +0 -46
- package/src/route-renderer/orchestration/render-output.utils.js +0 -65
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -120
- package/src/route-renderer/orchestration/render-preparation.service.js +0 -341
- package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +0 -50
- package/src/route-renderer/orchestration/route-shell-composer.service.js +0 -81
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- package/src/route-renderer/page-loading/dependency-resolver.d.ts +0 -35
- package/src/route-renderer/page-loading/dependency-resolver.js +0 -444
- package/src/route-renderer/page-loading/page-module-loader.d.ts +0 -90
- package/src/route-renderer/page-loading/page-module-loader.js +0 -127
- package/src/route-renderer/route-renderer.d.ts +0 -67
- package/src/route-renderer/route-renderer.js +0 -103
- package/src/router/client/link-intent.js +0 -34
- package/src/router/client/link-intent.test.browser.d.ts +0 -1
- package/src/router/client/link-intent.test.browser.js +0 -43
- package/src/router/client/navigation-coordinator.d.ts +0 -149
- package/src/router/client/navigation-coordinator.js +0 -215
- package/src/router/server/fs-router-scanner.d.ts +0 -41
- package/src/router/server/fs-router-scanner.js +0 -161
- package/src/router/server/fs-router.d.ts +0 -26
- package/src/router/server/fs-router.js +0 -100
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +0 -120
- package/src/services/assets/asset-processing-service/asset-processing.service.js +0 -331
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +0 -17
- package/src/services/assets/asset-processing-service/asset.factory.js +0 -82
- package/src/services/assets/asset-processing-service/assets.types.d.ts +0 -89
- package/src/services/assets/asset-processing-service/assets.types.js +0 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +0 -55
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +0 -48
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +0 -20
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +0 -41
- package/src/services/assets/asset-processing-service/index.d.ts +0 -5
- package/src/services/assets/asset-processing-service/index.js +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.js +0 -6
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +0 -8
- package/src/services/assets/asset-processing-service/processor.registry.js +0 -15
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +0 -24
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +0 -64
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -17
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +0 -72
- package/src/services/assets/asset-processing-service/processors/index.d.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/index.js +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +0 -57
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -9
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +0 -75
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -66
- package/src/services/assets/browser-bundle.service.d.ts +0 -32
- package/src/services/assets/browser-bundle.service.js +0 -33
- package/src/services/cache/cache.types.d.ts +0 -107
- package/src/services/cache/cache.types.js +0 -0
- package/src/services/cache/index.d.ts +0 -7
- package/src/services/cache/index.js +0 -7
- package/src/services/cache/memory-cache-store.d.ts +0 -42
- package/src/services/cache/memory-cache-store.js +0 -98
- package/src/services/cache/page-cache-service.d.ts +0 -70
- package/src/services/cache/page-cache-service.js +0 -152
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +0 -75
- package/src/services/cache/page-request-cache-coordinator.service.js +0 -109
- package/src/services/html/html-rewriter-provider.service.d.ts +0 -37
- package/src/services/html/html-rewriter-provider.service.js +0 -68
- package/src/services/html/html-transformer.service.d.ts +0 -77
- package/src/services/html/html-transformer.service.js +0 -215
- package/src/services/invalidation/development-invalidation.service.d.ts +0 -74
- package/src/services/invalidation/development-invalidation.service.js +0 -190
- package/src/services/module-loading/app-module-loader.service.d.ts +0 -28
- package/src/services/module-loading/app-module-loader.service.js +0 -35
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +0 -24
- package/src/services/module-loading/app-server-module-transpiler.service.js +0 -109
- package/src/services/module-loading/host-module-loader-registry.d.ts +0 -4
- package/src/services/module-loading/host-module-loader-registry.js +0 -15
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/node-bootstrap-plugin.d.ts +0 -42
- package/src/services/module-loading/node-bootstrap-plugin.js +0 -204
- package/src/services/module-loading/page-module-import.service.d.ts +0 -76
- package/src/services/module-loading/page-module-import.service.js +0 -173
- package/src/services/module-loading/server-module-transpiler.service.d.ts +0 -72
- package/src/services/module-loading/server-module-transpiler.service.js +0 -64
- package/src/services/runtime-state/dev-graph.service.d.ts +0 -118
- package/src/services/runtime-state/dev-graph.service.js +0 -162
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +0 -41
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +0 -85
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
- package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +0 -26
- package/src/services/runtime-state/server-invalidation-state.service.js +0 -35
- package/src/services/validation/schema-validation-service.d.ts +0 -122
- package/src/services/validation/schema-validation-service.js +0 -101
- package/src/services/validation/standard-schema.types.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +0 -104
- package/src/static-site-generator/static-site-generator.js +0 -338
- package/src/types/internal-types.d.ts +0 -231
- package/src/types/internal-types.js +0 -0
- package/src/types/public-types.d.ts +0 -1219
- package/src/types/public-types.js +0 -0
- package/src/utils/deep-merge.d.ts +0 -14
- package/src/utils/deep-merge.js +0 -32
- package/src/utils/hash.d.ts +0 -1
- package/src/utils/hash.js +0 -7
- package/src/utils/html-escaping.d.ts +0 -7
- package/src/utils/html-escaping.js +0 -6
- package/src/utils/html.js +0 -4
- package/src/utils/invariant.d.ts +0 -5
- package/src/utils/invariant.js +0 -11
- package/src/utils/locals-utils.d.ts +0 -15
- package/src/utils/locals-utils.js +0 -24
- package/src/utils/parse-cli-args.d.ts +0 -27
- package/src/utils/parse-cli-args.js +0 -62
- package/src/utils/path-utils.module.d.ts +0 -5
- package/src/utils/path-utils.module.js +0 -14
- package/src/utils/resolve-work-dir.d.ts +0 -11
- package/src/utils/resolve-work-dir.js +0 -31
- package/src/utils/runtime.d.ts +0 -11
- package/src/utils/runtime.js +0 -40
- package/src/utils/server-utils.module.d.ts +0 -19
- package/src/utils/server-utils.module.js +0 -56
- package/src/watchers/project-watcher.d.ts +0 -136
- package/src/watchers/project-watcher.js +0 -275
- package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
- package/src/watchers/project-watcher.test-helpers.js +0 -52
- /package/src/utils/{html.d.ts → html.ts} +0 -0
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JavaScript HMR Strategy
|
|
3
|
-
*
|
|
4
|
-
* Handles hot module replacement for JavaScript and TypeScript entrypoints.
|
|
5
|
-
* Bundles files, inspects the emitted output, and decides whether the browser
|
|
6
|
-
* can hot-accept the change or must reload.
|
|
7
|
-
*
|
|
8
|
-
* @module
|
|
9
|
-
*/
|
|
10
|
-
import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
|
|
11
|
-
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
12
|
-
import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.js';
|
|
13
|
-
import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
14
|
-
/**
|
|
15
|
-
* Context interface providing access to HmrManager state.
|
|
16
|
-
* Required for JsHmrStrategy to access registered entrypoints and configuration.
|
|
17
|
-
*/
|
|
18
|
-
export interface JsHmrContext {
|
|
19
|
-
/**
|
|
20
|
-
* Map of registered entrypoints to their output URLs.
|
|
21
|
-
*/
|
|
22
|
-
getWatchedFiles(): Map<string, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Map of bare specifiers to vendor URLs for import resolution.
|
|
25
|
-
*/
|
|
26
|
-
getSpecifierMap(): Map<string, string>;
|
|
27
|
-
getEntrypointDependencyGraph(): EntrypointDependencyGraph;
|
|
28
|
-
/**
|
|
29
|
-
* Directory where HMR bundles are written.
|
|
30
|
-
*/
|
|
31
|
-
getDistDir(): string;
|
|
32
|
-
/**
|
|
33
|
-
* Build plugins to use during bundling.
|
|
34
|
-
*/
|
|
35
|
-
getPlugins(): EcoBuildPlugin[];
|
|
36
|
-
/**
|
|
37
|
-
* Absolute path to the source directory.
|
|
38
|
-
*/
|
|
39
|
-
getSrcDir(): string;
|
|
40
|
-
/**
|
|
41
|
-
* Absolute path to the pages directory.
|
|
42
|
-
*/
|
|
43
|
-
getPagesDir(): string;
|
|
44
|
-
/**
|
|
45
|
-
* Absolute path to the layouts directory.
|
|
46
|
-
*/
|
|
47
|
-
getLayoutsDir(): string;
|
|
48
|
-
/**
|
|
49
|
-
* All configured route-template extensions across integrations.
|
|
50
|
-
*/
|
|
51
|
-
getTemplateExtensions(): string[];
|
|
52
|
-
/**
|
|
53
|
-
* Browser bundler used to rebuild changed entrypoints.
|
|
54
|
-
*/
|
|
55
|
-
getBrowserBundleService(): BrowserBundleExecutor;
|
|
56
|
-
/**
|
|
57
|
-
* Returns whether a watched entrypoint should be rebuilt by the generic JS strategy.
|
|
58
|
-
*
|
|
59
|
-
* @remarks
|
|
60
|
-
* Integrations with higher-priority HMR strategies can use this to keep the
|
|
61
|
-
* generic JS strategy from overwriting their emitted entrypoints when a shared
|
|
62
|
-
* dependency changes.
|
|
63
|
-
*/
|
|
64
|
-
shouldProcessEntrypoint?(entrypointPath: string): boolean;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Strategy for handling JavaScript/TypeScript file changes with hot reloading.
|
|
68
|
-
*
|
|
69
|
-
* The processing steps are:
|
|
70
|
-
* 1. Check if any entrypoints are registered
|
|
71
|
-
* 2. Rebuild impacted entrypoints, or all watched entrypoints when no runtime
|
|
72
|
-
* dependency graph is available
|
|
73
|
-
* 3. Emit rebuilt entrypoint bundles for browser delivery
|
|
74
|
-
* 4. Inject generic HMR boilerplate
|
|
75
|
-
* 5. Broadcast update events for each rebuilt entrypoint
|
|
76
|
-
*
|
|
77
|
-
* @remarks
|
|
78
|
-
* Node can provide dependency-graph metadata, so this strategy can rebuild only
|
|
79
|
-
* the entrypoints impacted by a changed dependency. Runtimes that do not expose
|
|
80
|
-
* that metadata intentionally keep the rebuild-all fallback.
|
|
81
|
-
*
|
|
82
|
-
* @see https://bun.sh/docs/runtime/transpiler
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* ```typescript
|
|
86
|
-
* const context = {
|
|
87
|
-
* getWatchedFiles: () => watchedFilesMap,
|
|
88
|
-
* getSpecifierMap: () => specifierMap,
|
|
89
|
-
* getDistDir: () => '/path/to/dist/_hmr',
|
|
90
|
-
* getPlugins: () => [],
|
|
91
|
-
* getSrcDir: () => '/path/to/src'
|
|
92
|
-
* };
|
|
93
|
-
* const strategy = new JsHmrStrategy(context);
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export declare class JsHmrStrategy extends HmrStrategy {
|
|
97
|
-
readonly type: 25;
|
|
98
|
-
private context;
|
|
99
|
-
constructor(context: JsHmrContext);
|
|
100
|
-
/**
|
|
101
|
-
* Determines if the file is a JS/TS file that could affect registered entrypoints.
|
|
102
|
-
*
|
|
103
|
-
* Matches if:
|
|
104
|
-
* 1. There are registered entrypoints to rebuild
|
|
105
|
-
* 2. The changed file is a JS/TS file in the src directory
|
|
106
|
-
*
|
|
107
|
-
* @param filePath - Absolute path to the changed file
|
|
108
|
-
* @returns True if this file should trigger entrypoint rebuilds
|
|
109
|
-
*/
|
|
110
|
-
matches(filePath: string): boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Processes a file change by rebuilding affected entrypoints.
|
|
113
|
-
*
|
|
114
|
-
* @param filePath - Absolute path to the changed file
|
|
115
|
-
*
|
|
116
|
-
* @remarks
|
|
117
|
-
* If runtime-specific dependency graph hooks are unavailable, this strategy
|
|
118
|
-
* falls back to rebuilding all watched entrypoints.
|
|
119
|
-
* When multiple entrypoints are impacted they are bundled in a single esbuild
|
|
120
|
-
* invocation to share AST parsing and chunk deduplication.
|
|
121
|
-
* @returns Action to broadcast update events
|
|
122
|
-
*/
|
|
123
|
-
process(filePath: string): Promise<HmrAction>;
|
|
124
|
-
/**
|
|
125
|
-
* Bundles one or more entrypoints in a single esbuild invocation.
|
|
126
|
-
* Uses the source directory as the output base so that the directory structure
|
|
127
|
-
* is preserved under the HMR dist folder.
|
|
128
|
-
*/
|
|
129
|
-
private bundleEntrypoints;
|
|
130
|
-
/**
|
|
131
|
-
* Processes bundled output and determines whether the browser can hot-accept
|
|
132
|
-
* the update or must fall back to a full reload.
|
|
133
|
-
*
|
|
134
|
-
* @param filepath - Path to the bundled output file
|
|
135
|
-
* @param url - URL path for the bundled file
|
|
136
|
-
* @returns True if processing was successful and update should be broadcast
|
|
137
|
-
*/
|
|
138
|
-
private processOutput;
|
|
139
|
-
}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
-
import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
|
|
4
|
-
import { appLogger } from "../../global/app-logger.js";
|
|
5
|
-
class JsHmrStrategy extends HmrStrategy {
|
|
6
|
-
type = HmrStrategyType.SCRIPT;
|
|
7
|
-
context;
|
|
8
|
-
constructor(context) {
|
|
9
|
-
super();
|
|
10
|
-
this.context = context;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Determines if the file is a JS/TS file that could affect registered entrypoints.
|
|
14
|
-
*
|
|
15
|
-
* Matches if:
|
|
16
|
-
* 1. There are registered entrypoints to rebuild
|
|
17
|
-
* 2. The changed file is a JS/TS file in the src directory
|
|
18
|
-
*
|
|
19
|
-
* @param filePath - Absolute path to the changed file
|
|
20
|
-
* @returns True if this file should trigger entrypoint rebuilds
|
|
21
|
-
*/
|
|
22
|
-
matches(filePath) {
|
|
23
|
-
const watchedFiles = this.context.getWatchedFiles();
|
|
24
|
-
const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
|
|
25
|
-
const isInSrc = filePath.startsWith(this.context.getSrcDir());
|
|
26
|
-
const isRouteTemplate = filePath.startsWith(this.context.getPagesDir()) || filePath.startsWith(this.context.getLayoutsDir());
|
|
27
|
-
const isIntegrationTemplate = isRouteTemplate && this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
|
|
28
|
-
if (watchedFiles.size === 0) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
if (!isJsTs || !isInSrc) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
if (isIntegrationTemplate) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
if (watchedFiles.has(filePath)) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
const entrypointDependencyGraph = this.context.getEntrypointDependencyGraph();
|
|
41
|
-
if (entrypointDependencyGraph.supportsSelectiveInvalidation()) {
|
|
42
|
-
return entrypointDependencyGraph.getDependencyEntrypoints(filePath).size > 0;
|
|
43
|
-
}
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Processes a file change by rebuilding affected entrypoints.
|
|
48
|
-
*
|
|
49
|
-
* @param filePath - Absolute path to the changed file
|
|
50
|
-
*
|
|
51
|
-
* @remarks
|
|
52
|
-
* If runtime-specific dependency graph hooks are unavailable, this strategy
|
|
53
|
-
* falls back to rebuilding all watched entrypoints.
|
|
54
|
-
* When multiple entrypoints are impacted they are bundled in a single esbuild
|
|
55
|
-
* invocation to share AST parsing and chunk deduplication.
|
|
56
|
-
* @returns Action to broadcast update events
|
|
57
|
-
*/
|
|
58
|
-
async process(filePath) {
|
|
59
|
-
appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
|
|
60
|
-
const watchedFiles = this.context.getWatchedFiles();
|
|
61
|
-
if (watchedFiles.size === 0) {
|
|
62
|
-
appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
|
|
63
|
-
return { type: "none" };
|
|
64
|
-
}
|
|
65
|
-
const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
|
|
66
|
-
const hasDependencyHit = dependencyHits.size > 0;
|
|
67
|
-
const impactedEntrypoints = hasDependencyHit ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint)) : Array.from(watchedFiles.keys());
|
|
68
|
-
const buildableEntrypoints = impactedEntrypoints.filter(
|
|
69
|
-
(entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true
|
|
70
|
-
);
|
|
71
|
-
if (!hasDependencyHit) {
|
|
72
|
-
appLogger.debug("[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints");
|
|
73
|
-
}
|
|
74
|
-
if (buildableEntrypoints.length === 0) {
|
|
75
|
-
return { type: "none" };
|
|
76
|
-
}
|
|
77
|
-
const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
|
|
78
|
-
if (!buildResult.success) {
|
|
79
|
-
return { type: "none" };
|
|
80
|
-
}
|
|
81
|
-
const updates = [];
|
|
82
|
-
let reloadRequired = false;
|
|
83
|
-
for (const entrypoint of buildableEntrypoints) {
|
|
84
|
-
const outputUrl = watchedFiles.get(entrypoint);
|
|
85
|
-
if (!outputUrl) continue;
|
|
86
|
-
if (buildResult.dependencies) {
|
|
87
|
-
const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
|
|
88
|
-
this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
|
|
89
|
-
}
|
|
90
|
-
const srcDir = this.context.getSrcDir();
|
|
91
|
-
const relativePath = path.relative(srcDir, entrypoint);
|
|
92
|
-
const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
|
|
93
|
-
const outputPath = path.join(this.context.getDistDir(), relativePathJs);
|
|
94
|
-
const result = await this.processOutput(outputPath, outputUrl);
|
|
95
|
-
if (result.success) {
|
|
96
|
-
updates.push(outputUrl);
|
|
97
|
-
if (result.requiresReload) {
|
|
98
|
-
reloadRequired = true;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (updates.length > 0) {
|
|
103
|
-
if (reloadRequired) {
|
|
104
|
-
appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
|
|
105
|
-
return {
|
|
106
|
-
type: "broadcast",
|
|
107
|
-
events: [{ type: "reload" }]
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
return {
|
|
111
|
-
type: "broadcast",
|
|
112
|
-
events: updates.map((p) => ({
|
|
113
|
-
type: "update",
|
|
114
|
-
path: p,
|
|
115
|
-
timestamp: Date.now()
|
|
116
|
-
}))
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
return { type: "none" };
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Bundles one or more entrypoints in a single esbuild invocation.
|
|
123
|
-
* Uses the source directory as the output base so that the directory structure
|
|
124
|
-
* is preserved under the HMR dist folder.
|
|
125
|
-
*/
|
|
126
|
-
async bundleEntrypoints(entrypoints) {
|
|
127
|
-
try {
|
|
128
|
-
const result = await this.context.getBrowserBundleService().bundle({
|
|
129
|
-
profile: "hmr-entrypoint",
|
|
130
|
-
entrypoints,
|
|
131
|
-
outdir: this.context.getDistDir(),
|
|
132
|
-
outbase: this.context.getSrcDir(),
|
|
133
|
-
naming: "[dir]/[name]",
|
|
134
|
-
plugins: this.context.getPlugins(),
|
|
135
|
-
minify: false
|
|
136
|
-
});
|
|
137
|
-
if (!result.success) {
|
|
138
|
-
appLogger.error("[JsHmrStrategy] Batched build failed:", result.logs);
|
|
139
|
-
return { success: false };
|
|
140
|
-
}
|
|
141
|
-
const dependencies = /* @__PURE__ */ new Map();
|
|
142
|
-
if (result.dependencyGraph?.entrypoints) {
|
|
143
|
-
for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
|
|
144
|
-
dependencies.set(path.resolve(entrypoint), deps);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return { success: true, dependencies };
|
|
148
|
-
} catch (error) {
|
|
149
|
-
appLogger.error("[JsHmrStrategy] Error in batched build:", error);
|
|
150
|
-
return { success: false };
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Processes bundled output and determines whether the browser can hot-accept
|
|
155
|
-
* the update or must fall back to a full reload.
|
|
156
|
-
*
|
|
157
|
-
* @param filepath - Path to the bundled output file
|
|
158
|
-
* @param url - URL path for the bundled file
|
|
159
|
-
* @returns True if processing was successful and update should be broadcast
|
|
160
|
-
*/
|
|
161
|
-
async processOutput(filepath, url) {
|
|
162
|
-
try {
|
|
163
|
-
const code = await fileSystem.readFile(filepath);
|
|
164
|
-
if (code.includes("/* [ecopages] hmr */")) {
|
|
165
|
-
return { success: true, requiresReload: !code.includes("import.meta.hot.accept") };
|
|
166
|
-
}
|
|
167
|
-
appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
|
|
168
|
-
const hasHmrAccept = code.includes("import.meta.hot.accept");
|
|
169
|
-
return { success: true, requiresReload: !hasHmrAccept };
|
|
170
|
-
} catch (error) {
|
|
171
|
-
appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error);
|
|
172
|
-
return { success: false, requiresReload: false };
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
export {
|
|
177
|
-
JsHmrStrategy
|
|
178
|
-
};
|
package/src/index.browser.d.ts
DELETED
package/src/index.browser.js
DELETED
package/src/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type * from './types/public-types.js';
|
|
2
|
-
export type * from './eco/eco.types.js';
|
|
3
|
-
export { eco } from './eco/eco.js';
|
|
4
|
-
export { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.js';
|
|
5
|
-
export { createEcoBuildPluginFromSourceTransform, createVitePluginsFromAppSourceTransforms, getAppSourceTransforms, createVitePluginFromSourceTransform, normalizeTransformId, type EcoSourceTransform, type EcoSourceTransformResult, type EcoViteCompatiblePlugin, } from './plugins/source-transform.js';
|
|
6
|
-
export { createEcoComponentMetaTransform } from './plugins/eco-component-meta-plugin.js';
|
package/src/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { eco } from "./eco/eco.js";
|
|
2
|
-
import { defineApiHandler, defineGroupHandler } from "./adapters/shared/define-api-handler.js";
|
|
3
|
-
import {
|
|
4
|
-
createEcoBuildPluginFromSourceTransform,
|
|
5
|
-
createVitePluginsFromAppSourceTransforms,
|
|
6
|
-
getAppSourceTransforms,
|
|
7
|
-
createVitePluginFromSourceTransform,
|
|
8
|
-
normalizeTransformId
|
|
9
|
-
} from "./plugins/source-transform.js";
|
|
10
|
-
import { createEcoComponentMetaTransform } from "./plugins/eco-component-meta-plugin.js";
|
|
11
|
-
export {
|
|
12
|
-
createEcoBuildPluginFromSourceTransform,
|
|
13
|
-
createEcoComponentMetaTransform,
|
|
14
|
-
createVitePluginFromSourceTransform,
|
|
15
|
-
createVitePluginsFromAppSourceTransforms,
|
|
16
|
-
defineApiHandler,
|
|
17
|
-
defineGroupHandler,
|
|
18
|
-
eco,
|
|
19
|
-
getAppSourceTransforms,
|
|
20
|
-
normalizeTransformId
|
|
21
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This module contains the ghtml renderer
|
|
3
|
-
* @module
|
|
4
|
-
*/
|
|
5
|
-
import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../types/public-types.js';
|
|
6
|
-
import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/orchestration/integration-renderer.js';
|
|
7
|
-
/**
|
|
8
|
-
* A renderer for the ghtml integration.
|
|
9
|
-
* It renders a page using the HtmlTemplate and Page components.
|
|
10
|
-
*/
|
|
11
|
-
export declare class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
|
|
12
|
-
name: string;
|
|
13
|
-
renderComponent(input: ComponentRenderInput): Promise<ComponentRenderResult>;
|
|
14
|
-
protected createComponentBoundaryRuntime(options: {
|
|
15
|
-
boundaryInput: ComponentRenderInput;
|
|
16
|
-
rendererCache: Map<string, IntegrationRenderer<any>>;
|
|
17
|
-
}): import("../../index.browser.js").ComponentBoundaryRuntime;
|
|
18
|
-
render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
|
|
19
|
-
renderToResponse<P = Record<string, unknown>>(view: EcoComponent<P>, props: P, ctx: RenderToResponseContext): Promise<Response>;
|
|
20
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IntegrationRenderer
|
|
3
|
-
} from "../../route-renderer/orchestration/integration-renderer.js";
|
|
4
|
-
import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
|
|
5
|
-
class GhtmlRenderer extends IntegrationRenderer {
|
|
6
|
-
name = GHTML_PLUGIN_NAME;
|
|
7
|
-
async renderComponent(input) {
|
|
8
|
-
return this.renderStringComponentBoundaryWithQueuedForeignBoundaries(
|
|
9
|
-
input,
|
|
10
|
-
input.component
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
createComponentBoundaryRuntime(options) {
|
|
14
|
-
return this.createQueuedBoundaryRuntime({
|
|
15
|
-
boundaryInput: options.boundaryInput,
|
|
16
|
-
rendererCache: options.rendererCache
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
async render({
|
|
20
|
-
params,
|
|
21
|
-
query,
|
|
22
|
-
props,
|
|
23
|
-
locals,
|
|
24
|
-
pageLocals,
|
|
25
|
-
metadata,
|
|
26
|
-
Page,
|
|
27
|
-
Layout,
|
|
28
|
-
HtmlTemplate
|
|
29
|
-
}) {
|
|
30
|
-
try {
|
|
31
|
-
return await this.renderPageWithDocumentShell({
|
|
32
|
-
page: {
|
|
33
|
-
component: Page,
|
|
34
|
-
props: { params, query, ...props, locals: pageLocals }
|
|
35
|
-
},
|
|
36
|
-
layout: Layout ? {
|
|
37
|
-
component: Layout,
|
|
38
|
-
props: locals ? { locals } : {}
|
|
39
|
-
} : void 0,
|
|
40
|
-
htmlTemplate: HtmlTemplate,
|
|
41
|
-
metadata,
|
|
42
|
-
pageProps: props ?? {}
|
|
43
|
-
});
|
|
44
|
-
} catch (error) {
|
|
45
|
-
throw this.createRenderError("Error rendering page", error);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async renderToResponse(view, props, ctx) {
|
|
49
|
-
try {
|
|
50
|
-
return await this.renderViewWithDocumentShell({
|
|
51
|
-
view,
|
|
52
|
-
props,
|
|
53
|
-
ctx,
|
|
54
|
-
layout: view.config?.layout
|
|
55
|
-
});
|
|
56
|
-
} catch (error) {
|
|
57
|
-
throw this.createRenderError("Error rendering view", error);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export {
|
|
62
|
-
GhtmlRenderer
|
|
63
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const GHTML_PLUGIN_NAME = "ghtml";
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin.js';
|
|
2
|
-
import { GhtmlRenderer } from './ghtml-renderer.js';
|
|
3
|
-
/**
|
|
4
|
-
* The Ghtml plugin class
|
|
5
|
-
* This plugin provides support for ghtml components in Ecopages
|
|
6
|
-
*/
|
|
7
|
-
export declare class GhtmlPlugin extends IntegrationPlugin {
|
|
8
|
-
renderer: typeof GhtmlRenderer;
|
|
9
|
-
constructor(options?: Omit<IntegrationPluginConfig, 'name'>);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Factory function to create a Ghtml plugin instance
|
|
13
|
-
* @param options Configuration options for the Ghtml plugin
|
|
14
|
-
* @returns A new GhtmlPlugin instance
|
|
15
|
-
*/
|
|
16
|
-
export declare function ghtmlPlugin(options?: Omit<IntegrationPluginConfig, 'name'>): GhtmlPlugin;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { IntegrationPlugin } from "../../plugins/integration-plugin.js";
|
|
2
|
-
import { GhtmlRenderer } from "./ghtml-renderer.js";
|
|
3
|
-
import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
|
|
4
|
-
class GhtmlPlugin extends IntegrationPlugin {
|
|
5
|
-
renderer = GhtmlRenderer;
|
|
6
|
-
constructor(options) {
|
|
7
|
-
super({
|
|
8
|
-
name: GHTML_PLUGIN_NAME,
|
|
9
|
-
extensions: [".ghtml.ts", ".ghtml.tsx", ".ghtml"],
|
|
10
|
-
...options
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
function ghtmlPlugin(options) {
|
|
15
|
-
return new GhtmlPlugin(options);
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
GhtmlPlugin,
|
|
19
|
-
ghtmlPlugin
|
|
20
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
const RESOLVABLE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".mdx", ".css", ".scss", ".sass", ".less"];
|
|
4
|
-
function findResolvablePath(candidate) {
|
|
5
|
-
if (path.extname(candidate)) {
|
|
6
|
-
if (existsSync(candidate)) {
|
|
7
|
-
return candidate;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
11
|
-
const fileCandidate = `${candidate}${extension}`;
|
|
12
|
-
if (existsSync(fileCandidate)) {
|
|
13
|
-
return fileCandidate;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
17
|
-
const indexCandidate = path.join(candidate, `index${extension}`);
|
|
18
|
-
if (existsSync(indexCandidate)) {
|
|
19
|
-
return indexCandidate;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return void 0;
|
|
23
|
-
}
|
|
24
|
-
function resolveAliasedBarrelTarget(resolvedPath) {
|
|
25
|
-
if (!path.basename(resolvedPath).startsWith("index.")) {
|
|
26
|
-
return resolvedPath;
|
|
27
|
-
}
|
|
28
|
-
const source = readFileSync(resolvedPath, "utf8").trim();
|
|
29
|
-
const match = source.match(/^export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?$/);
|
|
30
|
-
if (!match?.[1]?.startsWith(".")) {
|
|
31
|
-
return resolvedPath;
|
|
32
|
-
}
|
|
33
|
-
const target = findResolvablePath(path.resolve(path.dirname(resolvedPath), match[1]));
|
|
34
|
-
return target ?? resolvedPath;
|
|
35
|
-
}
|
|
36
|
-
function createAliasResolverPlugin(srcDir) {
|
|
37
|
-
return {
|
|
38
|
-
name: "ecopages-alias-resolver",
|
|
39
|
-
setup(build) {
|
|
40
|
-
build.onResolve({ filter: /^@\// }, (args) => {
|
|
41
|
-
const candidate = path.join(srcDir, args.path.slice(2));
|
|
42
|
-
const resolved = findResolvablePath(candidate);
|
|
43
|
-
if (resolved) {
|
|
44
|
-
return { path: resolveAliasedBarrelTarget(resolved) };
|
|
45
|
-
}
|
|
46
|
-
return {};
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export {
|
|
52
|
-
createAliasResolverPlugin
|
|
53
|
-
};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bun plugin that auto-injects `__eco` metadata into EcoComponent config objects.
|
|
3
|
-
*
|
|
4
|
-
* This plugin uses AST parsing (via oxc-parser) to reliably inject the `__eco` property
|
|
5
|
-
* into EcoComponent config objects at import time. The injected metadata contains:
|
|
6
|
-
* - `dir`: The directory path of the component file (used for dependency resolution)
|
|
7
|
-
* - `integration`: The integration type (e.g., 'react', 'kitajs', 'ghtml', 'lit')
|
|
8
|
-
*
|
|
9
|
-
* The plugin intercepts file loading for all configured integration extensions and
|
|
10
|
-
* transforms component configs before they are executed.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* // Before transformation:
|
|
15
|
-
* export default eco.page({
|
|
16
|
-
* render: () => '<div>Hello</div>',
|
|
17
|
-
* });
|
|
18
|
-
*
|
|
19
|
-
* // After transformation:
|
|
20
|
-
* export default eco.page({
|
|
21
|
-
* __eco: { id: "<hash>", file: "/path/to/pages/index.tsx", integration: "react" },
|
|
22
|
-
* render: () => '<div>Hello</div>',
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @module eco-component-meta-plugin
|
|
27
|
-
*/
|
|
28
|
-
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
29
|
-
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
30
|
-
import { type EcoSourceTransform, type EcoViteCompatiblePlugin } from './source-transform.js';
|
|
31
|
-
/**
|
|
32
|
-
* Options for creating the eco-component-meta-plugin.
|
|
33
|
-
*/
|
|
34
|
-
export interface EcoComponentDirPluginOptions {
|
|
35
|
-
/** The EcoPages application configuration containing integration settings */
|
|
36
|
-
config: EcoPagesAppConfig;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Creates the bundler-neutral metadata transform used by Ecopages loaders and
|
|
40
|
-
* Vite-compatible adapters.
|
|
41
|
-
*/
|
|
42
|
-
export declare function createEcoComponentMetaTransform(options: EcoComponentDirPluginOptions): EcoSourceTransform;
|
|
43
|
-
/**
|
|
44
|
-
* Creates a build plugin that auto-injects `__eco` metadata into EcoComponent config objects.
|
|
45
|
-
*
|
|
46
|
-
* This plugin intercepts file loading for all integration-compatible files and:
|
|
47
|
-
* 1. Strips any query string from the file path (for dev mode cache-busting)
|
|
48
|
-
* 2. Reads the file contents
|
|
49
|
-
* 3. Parses the AST using oxc-parser to find injection points
|
|
50
|
-
* 4. Injects `__eco: { id: "...", file: "...", integration: "..." }` into config objects
|
|
51
|
-
* 5. Returns the transformed content with the appropriate loader
|
|
52
|
-
*
|
|
53
|
-
* Supported patterns:
|
|
54
|
-
* - `eco.page({ ... })` - Page component declarations
|
|
55
|
-
* - `eco.component({ ... })` - Reusable component declarations
|
|
56
|
-
* - `eco.html({ ... })` - HTML shell declarations
|
|
57
|
-
* - `eco.layout({ ... })` - Layout declarations
|
|
58
|
-
* - `Component.config = { ... }` - Config assignment pattern
|
|
59
|
-
* - `config: { ... }` - Config property in object literals
|
|
60
|
-
* - `export const config = { ... }` - Exported config declarations
|
|
61
|
-
*
|
|
62
|
-
* @param options - Plugin options containing the EcoPages config
|
|
63
|
-
* @returns A build plugin instance ready for registration
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* import { createEcoComponentMetaPlugin } from '@ecopages/core';
|
|
68
|
-
*
|
|
69
|
-
* const plugin = createEcoComponentMetaPlugin({ config: appConfig });
|
|
70
|
-
* appConfig.loaders.set(plugin.name, plugin);
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
export declare function createEcoComponentMetaPlugin(options: EcoComponentDirPluginOptions): EcoBuildPlugin;
|
|
74
|
-
/**
|
|
75
|
-
* Creates a Vite-compatible metadata injection plugin from the shared
|
|
76
|
-
* Ecopages source-transform primitive.
|
|
77
|
-
*/
|
|
78
|
-
export declare function createEcoComponentMetaVitePlugin(options: EcoComponentDirPluginOptions): EcoViteCompatiblePlugin;
|
|
79
|
-
/**
|
|
80
|
-
* Injects `__eco` metadata into EcoComponent config objects in file content.
|
|
81
|
-
*
|
|
82
|
-
* Uses oxc-parser for robust AST-based code analysis, which handles edge cases
|
|
83
|
-
* that regex-based approaches would miss (e.g., complex generics, nested objects,
|
|
84
|
-
* comments, string literals containing similar patterns).
|
|
85
|
-
*
|
|
86
|
-
* The injection is performed by:
|
|
87
|
-
* 1. Parsing the source code into an AST
|
|
88
|
-
* 2. Walking the AST to find all config object patterns
|
|
89
|
-
* 3. Collecting insertion points (sorted in reverse order to preserve positions)
|
|
90
|
-
* 4. Inserting the `__eco` property at each point
|
|
91
|
-
*
|
|
92
|
-
* @param contents - The source code content to transform
|
|
93
|
-
* @param filePath - Absolute path to the file (used to derive the directory)
|
|
94
|
-
* @param integration - The integration identifier for this file type
|
|
95
|
-
* @returns Transformed source code with `__eco` injected, or original if no patterns found
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* ```typescript
|
|
99
|
-
* const result = injectEcoMeta(
|
|
100
|
-
* 'export default eco.page({ render: () => "<div>Hi</div>" });',
|
|
101
|
-
* '/app/src/pages/index.tsx',
|
|
102
|
-
* 'react'
|
|
103
|
-
* );
|
|
104
|
-
* // Result: 'export default eco.page({ __eco: { id: "<hash>", file: "/app/src/pages/index.tsx", integration: "react" }, render: () => "<div>Hi</div>" });'
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
export declare function injectEcoMeta(contents: string, filePath: string, integration: string): string;
|
|
108
|
-
export default createEcoComponentMetaPlugin;
|