@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/package.json +82 -3
- package/src/adapters/abstract/application-adapter.d.ts +0 -8
- package/src/adapters/abstract/application-adapter.js +252 -261
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.js +132 -134
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.js +171 -161
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.js +2 -31
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +0 -1
- package/src/adapters/bun/server-adapter.js +561 -561
- package/src/adapters/bun/static-preview-host.js +43 -46
- package/src/adapters/create-app.js +11 -14
- package/src/adapters/index.js +2 -30
- package/src/adapters/node/create-app.js +123 -129
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -21
- package/src/adapters/node/server-adapter.d.ts +0 -1
- package/src/adapters/node/server-adapter.js +347 -326
- package/src/adapters/node/static-content-server.js +172 -191
- package/src/adapters/node/static-preview-host.js +87 -78
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/hmr/hmr-html-response.js +46 -32
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
- package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
- package/src/adapters/shared/http/api-request-pipeline.js +122 -119
- package/src/adapters/shared/http/api-response.js +77 -77
- package/src/adapters/shared/http/create-body-response.js +22 -19
- package/src/adapters/shared/http/define-api-handler.js +41 -55
- package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
- package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
- package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
- package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
- package/src/adapters/shared/http/run-middleware-chain.js +15 -15
- package/src/adapters/shared/runtime/application-adapter.js +72 -87
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
- package/src/adapters/shared/runtime/port-manager.js +207 -177
- package/src/adapters/shared/runtime/render-context.js +94 -79
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
- package/src/adapters/shared/runtime/runtime-host.js +1 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
- package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
- package/src/adapters/shared/runtime/server-adapter.js +233 -217
- package/src/adapters/shared/runtime/server-route-handler.js +74 -70
- package/src/adapters/shared/runtime/server-static-builder.js +165 -184
- package/src/adapters/shared/runtime/static-preview-host.js +1 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
- package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
- package/src/build/README.md +52 -1
- package/src/build/app-build-manifest-runtime.js +129 -108
- package/src/build/browser/browser-runtime-manifest.js +47 -50
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
- package/src/build/browser/browser-runtime-plugin.js +206 -160
- package/src/build/browser/jsx-ownership-plugins.js +51 -37
- package/src/build/browser/lit-static-render-worker-context.js +3 -5
- package/src/build/build-adapter.js +276 -139
- package/src/build/cache/build-input-fingerprint.js +28 -26
- package/src/build/cache/cache-constants.js +4 -6
- package/src/build/cache/cache-keys.js +64 -56
- package/src/build/cache/pages-unified-graph-build.js +179 -178
- package/src/build/cache/production-build-cache.js +47 -54
- package/src/build/cache/server-entry-build-cache.js +134 -146
- package/src/build/contracts/build-contracts.d.ts +4 -4
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.js +58 -43
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
- package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
- package/src/build/rolldown/rolldown-build-adapter.js +53 -61
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
- package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
- package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
- package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
- package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
- package/src/build/runtime/build-profile-options.js +36 -36
- package/src/build/runtime/build-request-identity.js +70 -45
- package/src/build/runtime/build-request-policy.js +80 -42
- package/src/build/runtime/build-runtime.js +64 -54
- package/src/build/runtime/deduping-build-executor.js +38 -32
- package/src/build/runtime/parallel-build-executor.js +58 -50
- package/src/build/runtime/serialized-build-executor.js +78 -62
- package/src/cache/index.js +6 -6
- package/src/cache/module-parse-cache.js +99 -68
- package/src/client/navigation-scripts/classification.js +45 -37
- package/src/client/navigation-scripts/index.js +3 -23
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
- package/src/client/navigation-scripts/registry.js +15 -11
- package/src/client/navigation-scripts/rerun-queue.js +81 -64
- package/src/client/scroll.js +32 -24
- package/src/client/scroll.test.browser.js +27 -33
- package/src/client/view-transitions.js +68 -55
- package/src/config/config-builder.d.ts +8 -0
- package/src/config/config-builder.js +637 -642
- package/src/config/constants.js +44 -24
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.js +7 -12
- package/src/dev/dev-client-ownership.js +7 -5
- package/src/dev/hmr-manager-registry.js +7 -12
- package/src/dev/host-runtime.js +25 -30
- package/src/dev/runtime-server-started-message.js +2 -5
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +110 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +27 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +51 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
- package/src/dev-toolbar/dev-toolbar-package.js +72 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.js +34 -28
- package/src/diagnostics/startup-trace.d.ts +10 -1
- package/src/diagnostics/startup-trace.js +269 -241
- package/src/eco/README.md +6 -0
- package/src/eco/eco-declared-component.js +19 -14
- package/src/eco/eco.browser.js +56 -69
- package/src/eco/eco.js +156 -96
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.js +59 -49
- package/src/errors/http-error.js +50 -49
- package/src/errors/index.js +3 -12
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.js +15 -15
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +10 -0
- package/src/hmr/client/hmr-runtime.js +117 -113
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +11 -39
- package/src/hmr/hmr-entrypoint-output.js +28 -54
- package/src/hmr/hmr-file-change-prep.js +13 -16
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +5 -11
- package/src/hmr/hmr-strategy.js +113 -61
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
- package/src/hmr/strategies/js-hmr-strategy.js +104 -217
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
- package/src/index.browser.js +1 -4
- package/src/index.d.ts +1 -0
- package/src/index.js +6 -47
- package/src/integrations/ghtml/ghtml-renderer.js +12 -7
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.js +9 -12
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.js +33 -47
- package/src/plugins/define-integration.js +18 -17
- package/src/plugins/eco-component-meta-plugin.js +387 -145
- package/src/plugins/foreign-jsx-override-plugin.js +49 -35
- package/src/plugins/integration-plugin.js +212 -203
- package/src/plugins/jsx-import-source.utils.js +16 -21
- package/src/plugins/processor.js +159 -149
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.js +109 -79
- package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
- package/src/plugins/tsconfig-import-resolver.js +218 -142
- package/src/route-renderer/README.md +12 -1
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
- package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
- package/src/route-renderer/orchestration/integration-renderer.js +731 -750
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
- package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
- package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +68 -54
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.js +130 -124
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/client/link-intent.js +55 -39
- package/src/router/client/link-intent.test.browser.js +49 -49
- package/src/router/client/link-navigation-policy.js +114 -93
- package/src/router/client/link-navigation-policy.test.browser.js +70 -80
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/server/route-registry.js +237 -242
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -53
- package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +106 -69
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
- package/src/services/assets/asset-processing-service/index.js +8 -8
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -117
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +27 -29
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
- package/src/services/assets/browser-bundle.service.js +52 -47
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/index.js +6 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.js +156 -145
- package/src/services/cache/page-request-cache-coordinator.service.js +102 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.js +252 -241
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.js +235 -243
- package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.js +195 -200
- package/src/services/module-loading/route-module-build-manifest.js +61 -74
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
- package/src/services/module-loading/server-module-transpiler.service.js +68 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.js +157 -95
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.js +13 -13
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
- package/src/static-site-generator/sitemap-routes.js +33 -28
- package/src/static-site-generator/sitemap.js +38 -29
- package/src/static-site-generator/static-build-invalidation.js +34 -56
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.js +517 -553
- package/src/types/internal-types.d.ts +19 -3
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +16 -46
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.js +27 -23
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.js +21 -8
- package/src/utils/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.js +73 -65
- package/src/utils/path-pattern.js +38 -23
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.js +60 -52
- package/src/utils/static-file-extensions.js +52 -46
- package/src/watchers/project-watcher-ignore.js +16 -15
- package/src/watchers/project-watcher.js +385 -366
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
- package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
- package/src/build/cache/dev-browser-script-cache.js +0 -90
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import path from
|
|
1
|
+
import path from 'node:path';
|
|
2
2
|
function getEcoTemplateExtension(filePath) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const { name, ext } = path.parse(filePath);
|
|
4
|
+
const nameParts = name.split('.');
|
|
5
|
+
const descriptor = nameParts.length > 1 ? nameParts.pop() : undefined;
|
|
6
|
+
const templateExtension = descriptor ? `.${descriptor}${ext}` : ext;
|
|
7
|
+
return templateExtension;
|
|
8
8
|
}
|
|
9
|
-
const PathUtils = {
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
export {
|
|
13
|
-
PathUtils
|
|
9
|
+
export const PathUtils = {
|
|
10
|
+
getEcoTemplateExtension,
|
|
14
11
|
};
|
|
@@ -1,41 +1,73 @@
|
|
|
1
|
-
import { parseArgs } from
|
|
2
|
-
import { getRuntimeArgv } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { parseArgs } from 'node:util';
|
|
2
|
+
import { getRuntimeArgv } from './runtime.js';
|
|
3
|
+
/**
|
|
4
|
+
* The default entry file name when no other source provides a value.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_ENTRY_FILE = 'app.ts';
|
|
7
|
+
/**
|
|
8
|
+
* The environment variable used to override the entry file path.
|
|
9
|
+
*/
|
|
10
|
+
export const ENTRY_FILE_ENV = 'ECOPAGES_ENTRY_FILE';
|
|
11
|
+
/**
|
|
12
|
+
* Centralized definition of the entry-file CLI argument.
|
|
13
|
+
*
|
|
14
|
+
* Exported so callers (CLI, tests, docs) reference a single source of truth
|
|
15
|
+
* for the flag name, short alias, and type. Keep this in sync with
|
|
16
|
+
* `resolveEntryFile` below.
|
|
17
|
+
*/
|
|
18
|
+
export const entryFileOptions = {
|
|
19
|
+
'entry-file': { type: 'string', short: 'e' },
|
|
7
20
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The long flag name for the entry file option. Re-exported as a
|
|
23
|
+
* constant so consumers don't hardcode the string.
|
|
24
|
+
*/
|
|
25
|
+
export const ENTRY_FILE_FLAG = 'entry-file';
|
|
26
|
+
/**
|
|
27
|
+
* Resolves the entry file path using standard precedence.
|
|
28
|
+
*
|
|
29
|
+
* This is the single source of truth for entry-file resolution across
|
|
30
|
+
* the CLI, build pipeline, and runtime. Both the CLI layer and the
|
|
31
|
+
* runtime builders call into this function instead of reimplementing
|
|
32
|
+
* the precedence chain.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* resolveEntryFile(); // 'app.ts' (or env/argv)
|
|
36
|
+
* resolveEntryFile({ entryFile: 'src/server.ts' }); // 'src/server.ts'
|
|
37
|
+
* resolveEntryFile({ env: { ECOPAGES_ENTRY_FILE: 'x' }}); // 'x'
|
|
38
|
+
* resolveEntryFile({ argv: ['node', '-e', 'flag.ts'] }); // 'flag.ts'
|
|
39
|
+
*/
|
|
40
|
+
export function resolveEntryFile({ entryFile, env = process.env, argv = getRuntimeArgv(), } = {}) {
|
|
41
|
+
if (entryFile && entryFile.length > 0)
|
|
42
|
+
return entryFile;
|
|
43
|
+
const fromEnv = env[ENTRY_FILE_ENV];
|
|
44
|
+
if (fromEnv && fromEnv.length > 0)
|
|
45
|
+
return fromEnv;
|
|
46
|
+
const fromFlag = readEntryFileFlag(argv);
|
|
47
|
+
if (fromFlag)
|
|
48
|
+
return fromFlag;
|
|
49
|
+
return DEFAULT_ENTRY_FILE;
|
|
20
50
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Parses argv for the entry-file flag using the shared `parseArgs` config.
|
|
53
|
+
*
|
|
54
|
+
* Exposed for callers that need the raw flag value without the full
|
|
55
|
+
* precedence chain (e.g. CLI help text, validation).
|
|
56
|
+
*/
|
|
57
|
+
export function readEntryFileFlag(argv = getRuntimeArgv()) {
|
|
58
|
+
const { values } = parseArgs({
|
|
59
|
+
args: argv.slice(1),
|
|
60
|
+
options: { ...entryFileOptions },
|
|
61
|
+
strict: false,
|
|
62
|
+
});
|
|
63
|
+
const raw = values[ENTRY_FILE_FLAG];
|
|
64
|
+
return typeof raw === 'string' && raw.length > 0 ? raw : undefined;
|
|
29
65
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
entryFileOptions,
|
|
39
|
-
readEntryFileFlag,
|
|
40
|
-
resolveEntryFile
|
|
41
|
-
};
|
|
66
|
+
/**
|
|
67
|
+
* The subdirectory inside `dist/` where the bundled server entry is placed.
|
|
68
|
+
*/
|
|
69
|
+
export const SERVER_BUNDLE_DIR = '.server';
|
|
70
|
+
/**
|
|
71
|
+
* The filename of the bundled server entry.
|
|
72
|
+
*/
|
|
73
|
+
export const SERVER_BUNDLE_FILENAME = 'app.mjs';
|
|
@@ -1,31 +1,27 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { DEFAULT_ECOPAGES_WORK_DIR } from
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { DEFAULT_ECOPAGES_WORK_DIR } from '../config/constants.js';
|
|
3
3
|
function isInsideNodeModules(directory) {
|
|
4
|
-
|
|
4
|
+
return path.normalize(directory).split(path.sep).includes('node_modules');
|
|
5
5
|
}
|
|
6
|
-
function resolveInternalWorkDir(appConfig) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
export function resolveInternalWorkDir(appConfig) {
|
|
7
|
+
if (appConfig.absolutePaths?.workDir) {
|
|
8
|
+
return appConfig.absolutePaths.workDir;
|
|
9
|
+
}
|
|
10
|
+
if (appConfig.rootDir) {
|
|
11
|
+
return path.join(appConfig.rootDir, appConfig.workDir ?? DEFAULT_ECOPAGES_WORK_DIR);
|
|
12
|
+
}
|
|
13
|
+
if (appConfig.workDir) {
|
|
14
|
+
return appConfig.workDir;
|
|
15
|
+
}
|
|
16
|
+
return DEFAULT_ECOPAGES_WORK_DIR;
|
|
17
17
|
}
|
|
18
|
-
function resolveInternalExecutionDir(appConfig) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
export function resolveInternalExecutionDir(appConfig) {
|
|
19
|
+
const workDir = resolveInternalWorkDir(appConfig);
|
|
20
|
+
if (!isInsideNodeModules(workDir)) {
|
|
21
|
+
return workDir;
|
|
22
|
+
}
|
|
23
|
+
if (appConfig.rootDir) {
|
|
24
|
+
return path.join(appConfig.rootDir, DEFAULT_ECOPAGES_WORK_DIR);
|
|
25
|
+
}
|
|
26
|
+
return DEFAULT_ECOPAGES_WORK_DIR;
|
|
27
27
|
}
|
|
28
|
-
export {
|
|
29
|
-
resolveInternalExecutionDir,
|
|
30
|
-
resolveInternalWorkDir
|
|
31
|
-
};
|
package/src/utils/runtime.js
CHANGED
|
@@ -1,40 +1,31 @@
|
|
|
1
|
-
import { createHash } from
|
|
2
|
-
const RUNTIME_ERRORS = {
|
|
3
|
-
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export const RUNTIME_ERRORS = {
|
|
3
|
+
BUN_RUNTIME_REQUIRED: 'Bun runtime is required',
|
|
4
4
|
};
|
|
5
|
-
function getBunRuntime() {
|
|
6
|
-
|
|
5
|
+
export function getBunRuntime() {
|
|
6
|
+
return globalThis.Bun;
|
|
7
7
|
}
|
|
8
|
-
function getRequiredBunRuntime() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
export function getRequiredBunRuntime() {
|
|
9
|
+
const bun = getBunRuntime();
|
|
10
|
+
if (!bun) {
|
|
11
|
+
throw new Error(RUNTIME_ERRORS.BUN_RUNTIME_REQUIRED);
|
|
12
|
+
}
|
|
13
|
+
return bun;
|
|
14
14
|
}
|
|
15
|
-
function getRuntimeArgv() {
|
|
16
|
-
|
|
15
|
+
export function getRuntimeArgv() {
|
|
16
|
+
return process.argv;
|
|
17
17
|
}
|
|
18
|
-
function isDevelopmentRuntime() {
|
|
19
|
-
|
|
18
|
+
export function isDevelopmentRuntime() {
|
|
19
|
+
return process.env.NODE_ENV === 'development';
|
|
20
20
|
}
|
|
21
|
-
function isProductionRuntime() {
|
|
22
|
-
|
|
21
|
+
export function isProductionRuntime() {
|
|
22
|
+
return process.env.NODE_ENV === 'production';
|
|
23
23
|
}
|
|
24
|
-
function runtimeHash(content) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
export function runtimeHash(content) {
|
|
25
|
+
const bun = getBunRuntime();
|
|
26
|
+
if (bun) {
|
|
27
|
+
return bun.hash(content);
|
|
28
|
+
}
|
|
29
|
+
const hex = createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
30
|
+
return BigInt(`0x${hex}`);
|
|
31
31
|
}
|
|
32
|
-
export {
|
|
33
|
-
RUNTIME_ERRORS,
|
|
34
|
-
getBunRuntime,
|
|
35
|
-
getRequiredBunRuntime,
|
|
36
|
-
getRuntimeArgv,
|
|
37
|
-
isDevelopmentRuntime,
|
|
38
|
-
isProductionRuntime,
|
|
39
|
-
runtimeHash
|
|
40
|
-
};
|
|
@@ -1,55 +1,63 @@
|
|
|
1
|
-
import { hasKnownStaticExtension } from
|
|
2
|
-
const ContentTypeMap =
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
import { hasKnownStaticExtension } from './static-file-extensions.js';
|
|
2
|
+
const ContentTypeMap = new Map([
|
|
3
|
+
['jpg', 'image/jpeg'],
|
|
4
|
+
['jpeg', 'image/jpeg'],
|
|
5
|
+
['png', 'image/png'],
|
|
6
|
+
['gif', 'image/gif'],
|
|
7
|
+
['bmp', 'image/bmp'],
|
|
8
|
+
['svg', 'image/svg+xml'],
|
|
9
|
+
['tiff', 'image/tiff'],
|
|
10
|
+
['webp', 'image/webp'],
|
|
11
|
+
['avif', 'image/avif'],
|
|
12
|
+
['ico', 'image/x-icon'],
|
|
13
|
+
['mp3', 'audio/mpeg'],
|
|
14
|
+
['ogg', 'audio/ogg'],
|
|
15
|
+
['wav', 'audio/wav'],
|
|
16
|
+
['mp4', 'video/mp4'],
|
|
17
|
+
['webm', 'video/webm'],
|
|
18
|
+
['ogv', 'video/ogg'],
|
|
19
|
+
['mov', 'video/quicktime'],
|
|
20
|
+
['txt', 'text/plain'],
|
|
21
|
+
['md', 'text/markdown'],
|
|
22
|
+
['html', 'text/html'],
|
|
23
|
+
['css', 'text/css'],
|
|
24
|
+
['js', 'text/javascript'],
|
|
25
|
+
['mjs', 'text/javascript'],
|
|
26
|
+
['json', 'application/json'],
|
|
27
|
+
['map', 'application/json'],
|
|
28
|
+
['xml', 'application/xml'],
|
|
29
|
+
['webmanifest', 'application/manifest+json'],
|
|
30
|
+
['wasm', 'application/wasm'],
|
|
31
|
+
['csv', 'text/csv'],
|
|
32
|
+
['ttf', 'font/ttf'],
|
|
33
|
+
['woff', 'font/woff'],
|
|
34
|
+
['woff2', 'font/woff2'],
|
|
35
|
+
['otf', 'font/otf'],
|
|
36
|
+
['eot', 'application/vnd.ms-fontobject'],
|
|
37
|
+
['gz', 'application/x-gzip'],
|
|
38
|
+
['zip', 'application/zip'],
|
|
39
|
+
['pdf', 'application/pdf'],
|
|
40
|
+
['doc', 'application/msword'],
|
|
41
41
|
]);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Get the content type of a file based on its extension.
|
|
44
|
+
* @param file - The file name.
|
|
45
|
+
* @returns The content type.
|
|
46
|
+
*/
|
|
47
|
+
export const getContentType = (file) => {
|
|
48
|
+
const extension = file.split('.').pop() || 'txt';
|
|
49
|
+
return ContentTypeMap.get(extension) || 'text/plain';
|
|
45
50
|
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
export {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Check if a file path has a known static file extension.
|
|
53
|
+
* @param file - The file name or path.
|
|
54
|
+
* @returns true if the extension is recognized.
|
|
55
|
+
*/
|
|
56
|
+
export { hasKnownStaticExtension } from './static-file-extensions.js';
|
|
57
|
+
/**
|
|
58
|
+
* A module for server utilities.
|
|
59
|
+
*/
|
|
60
|
+
export const ServerUtils = {
|
|
61
|
+
getContentType,
|
|
62
|
+
hasKnownStaticExtension,
|
|
55
63
|
};
|
|
@@ -1,48 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Known static asset extensions served directly from disk.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Keep this list aligned with server static-file handling and client routers
|
|
6
|
+
* that must bypass SPA navigation for same-origin asset links.
|
|
7
|
+
*/
|
|
8
|
+
export const STATIC_FILE_EXTENSIONS = new Set([
|
|
9
|
+
'jpg',
|
|
10
|
+
'jpeg',
|
|
11
|
+
'png',
|
|
12
|
+
'gif',
|
|
13
|
+
'bmp',
|
|
14
|
+
'svg',
|
|
15
|
+
'tiff',
|
|
16
|
+
'webp',
|
|
17
|
+
'avif',
|
|
18
|
+
'ico',
|
|
19
|
+
'mp3',
|
|
20
|
+
'ogg',
|
|
21
|
+
'wav',
|
|
22
|
+
'mp4',
|
|
23
|
+
'webm',
|
|
24
|
+
'ogv',
|
|
25
|
+
'mov',
|
|
26
|
+
'txt',
|
|
27
|
+
'md',
|
|
28
|
+
'html',
|
|
29
|
+
'css',
|
|
30
|
+
'js',
|
|
31
|
+
'mjs',
|
|
32
|
+
'json',
|
|
33
|
+
'map',
|
|
34
|
+
'xml',
|
|
35
|
+
'webmanifest',
|
|
36
|
+
'wasm',
|
|
37
|
+
'csv',
|
|
38
|
+
'ttf',
|
|
39
|
+
'woff',
|
|
40
|
+
'woff2',
|
|
41
|
+
'otf',
|
|
42
|
+
'eot',
|
|
43
|
+
'gz',
|
|
44
|
+
'zip',
|
|
45
|
+
'pdf',
|
|
46
|
+
'doc',
|
|
40
47
|
]);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Returns whether a path or filename ends with a known static asset extension.
|
|
50
|
+
*/
|
|
51
|
+
export function hasKnownStaticExtension(fileOrPath) {
|
|
52
|
+
const extension = fileOrPath.split('.').pop();
|
|
53
|
+
return extension !== undefined && STATIC_FILE_EXTENSIONS.has(extension);
|
|
44
54
|
}
|
|
45
|
-
export {
|
|
46
|
-
STATIC_FILE_EXTENSIONS,
|
|
47
|
-
hasKnownStaticExtension
|
|
48
|
-
};
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* @remarks
|
|
4
|
+
* chokidar v4+ no longer treats glob strings in `ignored` as patterns. A path
|
|
5
|
+
* predicate keeps node_modules, VCS metadata, and scoped artifact dirs out of
|
|
6
|
+
* the watch tree without descending into symlinked monorepo node_modules.
|
|
7
|
+
*/
|
|
8
|
+
export function createProjectWatcherIgnorePredicate(absolutePaths) {
|
|
9
|
+
const ignoredPrefixes = [absolutePaths.workDir, absolutePaths.distDir];
|
|
10
|
+
return (watchedPath) => {
|
|
11
|
+
const segments = watchedPath.split(path.sep);
|
|
12
|
+
if (segments.includes('node_modules') || segments.includes('.git')) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return ignoredPrefixes.some((prefix) => watchedPath === prefix || watchedPath.startsWith(`${prefix}${path.sep}`));
|
|
16
|
+
};
|
|
13
17
|
}
|
|
14
|
-
export {
|
|
15
|
-
createProjectWatcherIgnorePredicate
|
|
16
|
-
};
|