veryfront 0.0.86 → 0.0.88
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/esm/deno.d.ts +0 -1
- package/esm/deno.js +8 -9
- package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts +2 -0
- package/esm/deps/esm.sh/react-dom@19.1.1/client.d.ts.map +1 -0
- package/esm/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
- package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts +2 -0
- package/esm/deps/esm.sh/react-dom@19.1.1/server.d.ts.map +1 -0
- package/esm/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
- package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +2 -0
- package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts.map +1 -0
- package/esm/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
- package/esm/deps/esm.sh/react@19.1.1.d.ts +2 -0
- package/esm/deps/esm.sh/react@19.1.1.d.ts.map +1 -0
- package/esm/deps/esm.sh/react@19.1.1.js +3 -0
- package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts +2 -0
- package/esm/deps/esm.sh/scheduler@^0.26.0.d.ts.map +1 -0
- package/esm/deps/esm.sh/scheduler@^0.26.0.js +3 -0
- package/esm/proxy/main.d.ts +2 -0
- package/esm/proxy/main.d.ts.map +1 -0
- package/esm/proxy/main.js +400 -0
- package/esm/src/agent/react/use-agent.js +1 -1
- package/esm/src/agent/react/use-chat/use-chat.js +1 -1
- package/esm/src/agent/react/use-completion.js +1 -1
- package/esm/src/agent/react/use-streaming.js +1 -1
- package/esm/src/agent/react/use-voice-input.js +1 -1
- package/esm/src/cli/commands/init/config-generator.js +1 -1
- package/esm/src/cli/index/arg-parser.d.ts.map +1 -1
- package/esm/src/cli/index/arg-parser.js +1 -0
- package/esm/src/cli/index/command-router.d.ts.map +1 -1
- package/esm/src/cli/index/command-router.js +54 -39
- package/esm/src/cli/index/types.d.ts +4 -0
- package/esm/src/cli/index/types.d.ts.map +1 -1
- package/esm/src/cli/mcp/advanced-tools.d.ts +2 -2
- package/esm/src/config/loader.d.ts.map +1 -1
- package/esm/src/config/loader.js +5 -4
- package/esm/src/html/utils.js +2 -2
- package/esm/src/modules/component-registry/registry.d.ts +1 -1
- package/esm/src/modules/component-registry/registry.d.ts.map +1 -1
- package/esm/src/modules/import-map/default-import-map.d.ts +1 -11
- package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
- package/esm/src/modules/import-map/default-import-map.js +3 -20
- package/esm/src/modules/import-map/loader.d.ts.map +1 -1
- package/esm/src/modules/import-map/loader.js +7 -22
- package/esm/src/modules/import-map/resolver.d.ts.map +1 -1
- package/esm/src/modules/import-map/resolver.js +12 -8
- package/esm/src/modules/react-loader/component-loader.d.ts +1 -1
- package/esm/src/modules/react-loader/component-loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/component-loader.js +2 -0
- package/esm/src/modules/react-loader/extract-component.d.ts +1 -1
- package/esm/src/modules/react-loader/extract-component.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +2 -7
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.js +40 -32
- package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts +2 -0
- package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts.map +1 -1
- package/esm/src/modules/react-loader/types.d.ts +3 -1
- package/esm/src/modules/react-loader/types.d.ts.map +1 -1
- package/esm/src/modules/react-loader/unified-loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/unified-loader.js +7 -4
- package/esm/src/modules/server/module-batch-handler.d.ts +2 -0
- package/esm/src/modules/server/module-batch-handler.d.ts.map +1 -1
- package/esm/src/modules/server/module-batch-handler.js +3 -1
- package/esm/src/modules/server/module-server.d.ts +2 -0
- package/esm/src/modules/server/module-server.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.js +4 -2
- package/esm/src/modules/server/ssr-import-rewriter.d.ts.map +1 -1
- package/esm/src/modules/server/ssr-import-rewriter.js +9 -17
- package/esm/src/react/compat/hooks-adapter.d.ts +1 -1
- package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
- package/esm/src/react/compat/hooks-adapter.js +1 -1
- package/esm/src/react/compat/ssr-adapter/response-builder.d.ts +1 -1
- package/esm/src/react/compat/ssr-adapter/response-builder.d.ts.map +1 -1
- package/esm/src/react/compat/ssr-adapter/server-loader.d.ts +5 -5
- package/esm/src/react/compat/ssr-adapter/server-loader.d.ts.map +1 -1
- package/esm/src/react/compat/ssr-adapter/server-loader.js +2 -2
- package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts +1 -1
- package/esm/src/react/compat/ssr-adapter/stream-renderer.d.ts.map +1 -1
- package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts +1 -1
- package/esm/src/react/compat/ssr-adapter/string-renderer.d.ts.map +1 -1
- package/esm/src/react/compat/ssr-adapter/string-renderer.js +1 -1
- package/esm/src/react/compat/version-detector/feature-detector.js +1 -1
- package/esm/src/react/components/AppWrapper.d.ts +1 -1
- package/esm/src/react/components/AppWrapper.d.ts.map +1 -1
- package/esm/src/react/components/AppWrapper.js +1 -1
- package/esm/src/react/components/Head.d.ts +1 -1
- package/esm/src/react/components/Head.d.ts.map +1 -1
- package/esm/src/react/components/Head.js +7 -3
- package/esm/src/react/components/LayoutComponent.d.ts +1 -1
- package/esm/src/react/components/LayoutComponent.d.ts.map +1 -1
- package/esm/src/react/components/LayoutComponent.js +1 -1
- package/esm/src/react/components/Link.d.ts +1 -1
- package/esm/src/react/components/Link.d.ts.map +1 -1
- package/esm/src/react/components/Link.js +1 -1
- package/esm/src/react/components/MDXProvider.d.ts +1 -1
- package/esm/src/react/components/MDXProvider.d.ts.map +1 -1
- package/esm/src/react/components/MDXProvider.js +2 -2
- package/esm/src/react/components/ProviderComponent.d.ts +1 -1
- package/esm/src/react/components/ProviderComponent.d.ts.map +1 -1
- package/esm/src/react/components/ProviderComponent.js +1 -1
- package/esm/src/react/components/ai/agent-card.d.ts +2 -2
- package/esm/src/react/components/ai/agent-card.d.ts.map +1 -1
- package/esm/src/react/components/ai/agent-card.js +1 -1
- package/esm/src/react/components/ai/chat/components/animations.d.ts +1 -1
- package/esm/src/react/components/ai/chat/components/animations.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/animations.js +1 -1
- package/esm/src/react/components/ai/chat/components/empty-state.d.ts +1 -1
- package/esm/src/react/components/ai/chat/components/empty-state.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/empty-state.js +1 -1
- package/esm/src/react/components/ai/chat/components/message-actions.d.ts +1 -1
- package/esm/src/react/components/ai/chat/components/message-actions.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/message-actions.js +1 -1
- package/esm/src/react/components/ai/chat/components/reasoning.d.ts +1 -1
- package/esm/src/react/components/ai/chat/components/reasoning.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/reasoning.js +1 -1
- package/esm/src/react/components/ai/chat/components/tool-ui.d.ts +1 -1
- package/esm/src/react/components/ai/chat/components/tool-ui.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/tool-ui.js +1 -1
- package/esm/src/react/components/ai/chat/composition/api.d.ts +5 -4
- package/esm/src/react/components/ai/chat/composition/api.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/composition/api.js +1 -1
- package/esm/src/react/components/ai/chat/index.d.ts +8 -3
- package/esm/src/react/components/ai/chat/index.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/index.js +1 -1
- package/esm/src/react/components/ai/error-boundary.d.ts +1 -1
- package/esm/src/react/components/ai/error-boundary.d.ts.map +1 -1
- package/esm/src/react/components/ai/error-boundary.js +1 -1
- package/esm/src/react/components/ai/icons/index.d.ts +1 -1
- package/esm/src/react/components/ai/icons/index.d.ts.map +1 -1
- package/esm/src/react/components/ai/icons/index.js +1 -1
- package/esm/src/react/components/ai/markdown.d.ts +1 -1
- package/esm/src/react/components/ai/markdown.d.ts.map +1 -1
- package/esm/src/react/components/ai/markdown.js +1 -1
- package/esm/src/react/components/ai/message.d.ts +3 -3
- package/esm/src/react/components/ai/message.d.ts.map +1 -1
- package/esm/src/react/components/ai/message.js +1 -1
- package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts +1 -1
- package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.d.ts.map +1 -1
- package/esm/src/react/components/optimized-image/OptimizedBackgroundImage.js +1 -1
- package/esm/src/react/components/optimized-image/OptimizedImage.d.ts +1 -1
- package/esm/src/react/components/optimized-image/OptimizedImage.d.ts.map +1 -1
- package/esm/src/react/components/optimized-image/OptimizedImage.js +1 -1
- package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts +1 -1
- package/esm/src/react/components/optimized-image/SimpleOptimizedImage.d.ts.map +1 -1
- package/esm/src/react/components/optimized-image/utils.d.ts +1 -1
- package/esm/src/react/components/optimized-image/utils.d.ts.map +1 -1
- package/esm/src/react/components/optimized-image/utils.js +1 -1
- package/esm/src/react/context/index.d.ts +1 -1
- package/esm/src/react/context/index.d.ts.map +1 -1
- package/esm/src/react/context/index.js +1 -1
- package/esm/src/react/fonts/index.d.ts +1 -1
- package/esm/src/react/fonts/index.d.ts.map +1 -1
- package/esm/src/react/fonts/index.js +1 -1
- package/esm/src/react/primitives/agent-primitives.d.ts +4 -4
- package/esm/src/react/primitives/agent-primitives.d.ts.map +1 -1
- package/esm/src/react/primitives/agent-primitives.js +1 -1
- package/esm/src/react/primitives/chat-container.d.ts +2 -2
- package/esm/src/react/primitives/chat-container.d.ts.map +1 -1
- package/esm/src/react/primitives/chat-container.js +1 -1
- package/esm/src/react/primitives/input-box.d.ts +4 -4
- package/esm/src/react/primitives/input-box.d.ts.map +1 -1
- package/esm/src/react/primitives/input-box.js +7 -3
- package/esm/src/react/primitives/message-list.d.ts +5 -5
- package/esm/src/react/primitives/message-list.d.ts.map +1 -1
- package/esm/src/react/primitives/message-list.js +1 -1
- package/esm/src/react/primitives/tool-primitives.d.ts +4 -4
- package/esm/src/react/primitives/tool-primitives.d.ts.map +1 -1
- package/esm/src/react/primitives/tool-primitives.js +1 -1
- package/esm/src/react/router/index.d.ts +1 -1
- package/esm/src/react/router/index.d.ts.map +1 -1
- package/esm/src/react/router/index.js +1 -1
- package/esm/src/rendering/app-reserved.d.ts +1 -1
- package/esm/src/rendering/app-reserved.d.ts.map +1 -1
- package/esm/src/rendering/app-reserved.js +1 -1
- package/esm/src/rendering/client/router.js +1 -1
- package/esm/src/rendering/client/state-bridge.d.ts +1 -1
- package/esm/src/rendering/client/state-bridge.d.ts.map +1 -1
- package/esm/src/rendering/client/state-bridge.js +1 -1
- package/esm/src/rendering/component-handling.d.ts +3 -1
- package/esm/src/rendering/component-handling.d.ts.map +1 -1
- package/esm/src/rendering/component-handling.js +4 -2
- package/esm/src/rendering/element-validator/element-normalizer.d.ts +1 -1
- package/esm/src/rendering/element-validator/element-normalizer.d.ts.map +1 -1
- package/esm/src/rendering/element-validator/element-normalizer.js +1 -1
- package/esm/src/rendering/element-validator/primitive-checks.d.ts +1 -1
- package/esm/src/rendering/element-validator/primitive-checks.d.ts.map +1 -1
- package/esm/src/rendering/element-validator/primitive-checks.js +1 -1
- package/esm/src/rendering/element-validator/validator-core.d.ts +1 -1
- package/esm/src/rendering/element-validator/validator-core.d.ts.map +1 -1
- package/esm/src/rendering/layouts/layout-applicator.d.ts +1 -1
- package/esm/src/rendering/layouts/layout-applicator.d.ts.map +1 -1
- package/esm/src/rendering/layouts/layout-applicator.js +2 -0
- package/esm/src/rendering/layouts/utils/applicator.d.ts +1 -1
- package/esm/src/rendering/layouts/utils/applicator.d.ts.map +1 -1
- package/esm/src/rendering/layouts/utils/component-loader.d.ts +1 -1
- package/esm/src/rendering/layouts/utils/component-loader.d.ts.map +1 -1
- package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts +1 -1
- package/esm/src/rendering/layouts/utils/ensure-valid-child.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/layout.d.ts +1 -1
- package/esm/src/rendering/orchestrator/layout.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-loader/index.d.ts +3 -0
- package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-loader/index.js +74 -19
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +2 -0
- package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts +1 -1
- package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
- package/esm/src/rendering/page-renderer.d.ts +1 -1
- package/esm/src/rendering/page-renderer.d.ts.map +1 -1
- package/esm/src/rendering/page-rendering.d.ts +1 -1
- package/esm/src/rendering/page-rendering.d.ts.map +1 -1
- package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts +1 -1
- package/esm/src/rendering/rsc/server-renderer/component-detector.d.ts.map +1 -1
- package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts +1 -1
- package/esm/src/rendering/rsc/server-renderer/rsc-renderer.d.ts.map +1 -1
- package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts +1 -1
- package/esm/src/rendering/rsc/server-renderer/tree-processor.d.ts.map +1 -1
- package/esm/src/rendering/rsc/server-renderer/tree-processor.js +4 -2
- package/esm/src/rendering/snippet-renderer.js +2 -2
- package/esm/src/rendering/ssr/component-registry.d.ts +1 -1
- package/esm/src/rendering/ssr/component-registry.d.ts.map +1 -1
- package/esm/src/rendering/ssr/component-registry.js +1 -1
- package/esm/src/rendering/ssr-renderer.d.ts +1 -1
- package/esm/src/rendering/ssr-renderer.d.ts.map +1 -1
- package/esm/src/rendering/utils/react-helpers.d.ts +1 -1
- package/esm/src/rendering/utils/react-helpers.d.ts.map +1 -1
- package/esm/src/rendering/utils/react-helpers.js +1 -1
- package/esm/src/server/handlers/request/ssr/error-page-fallback.js +1 -1
- package/esm/src/server/handlers/request/ssr/not-found-fallback.js +1 -1
- package/esm/src/transforms/esm/http-bundler.d.ts +15 -4
- package/esm/src/transforms/esm/http-bundler.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-bundler.js +105 -12
- package/esm/src/transforms/esm/http-cache.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache.js +26 -27
- package/esm/src/transforms/esm/import-rewriter.d.ts.map +1 -1
- package/esm/src/transforms/esm/import-rewriter.js +3 -3
- package/esm/src/transforms/esm/package-registry.d.ts +15 -13
- package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
- package/esm/src/transforms/esm/package-registry.js +45 -32
- package/esm/src/transforms/esm/react-imports.d.ts.map +1 -1
- package/esm/src/transforms/esm/react-imports.js +3 -7
- package/esm/src/transforms/esm/types.d.ts +2 -0
- package/esm/src/transforms/esm/types.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts +14 -0
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.js +67 -0
- package/esm/src/transforms/mdx/esm-module-loader/loader.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/loader.js +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -0
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -0
- package/esm/src/transforms/mdx/esm-module-loader/types.d.ts +4 -0
- package/esm/src/transforms/mdx/esm-module-loader/types.d.ts.map +1 -1
- package/esm/src/transforms/mdx/index.d.ts +1 -1
- package/esm/src/transforms/mdx/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/index.js +1 -1
- package/esm/src/transforms/mdx/mdx-cache-adapter.js +1 -1
- package/esm/src/transforms/mdx/module-loader/types.d.ts +1 -1
- package/esm/src/transforms/mdx/module-loader/types.d.ts.map +1 -1
- package/esm/src/transforms/mdx/types.d.ts +2 -2
- package/esm/src/transforms/mdx/types.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/context.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/context.js +7 -15
- package/esm/src/transforms/pipeline/stages/finalize.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/stages/finalize.js +1 -1
- package/esm/src/types/app.d.ts +1 -1
- package/esm/src/types/app.d.ts.map +1 -1
- package/esm/src/types/global-guards.d.ts +1 -1
- package/esm/src/types/global-guards.d.ts.map +1 -1
- package/esm/src/types/index.d.ts +1 -1
- package/esm/src/types/index.d.ts.map +1 -1
- package/esm/src/utils/constants/cdn.d.ts.map +1 -1
- package/esm/src/utils/constants/cdn.js +22 -11
- package/esm/src/utils/hash-utils.d.ts +2 -0
- package/esm/src/utils/hash-utils.d.ts.map +1 -1
- package/esm/src/utils/hash-utils.js +4 -0
- package/esm/src/workflow/react/use-approval.js +1 -1
- package/esm/src/workflow/react/use-workflow-list.js +1 -1
- package/esm/src/workflow/react/use-workflow-start.js +1 -1
- package/esm/src/workflow/react/use-workflow.js +1 -1
- package/package.json +2 -1
- package/src/deno.js +8 -9
- package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/client.d.ts +105 -0
- package/src/deps/esm.sh/@types/react-dom@19.1.11/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/server.d.ts +162 -0
- package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/global.d.ts +165 -0
- package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjM/index.d.ts +4267 -0
- package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/global.d.ts +165 -0
- package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/index.d.ts +4267 -0
- package/src/deps/esm.sh/@types/react@19.1.17/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/jsx-runtime.d.ts +36 -0
- package/src/deps/esm.sh/@types/scheduler@0.26.0/index.d.ts +30 -0
- package/src/deps/esm.sh/csstype@3.2.3/index.d.ts +22569 -0
- package/src/deps/esm.sh/react-dom@19.1.1/client.d.ts +105 -0
- package/src/deps/esm.sh/react-dom@19.1.1/client.js +5 -0
- package/src/deps/esm.sh/react-dom@19.1.1/server.d.ts +162 -0
- package/src/deps/esm.sh/react-dom@19.1.1/server.js +5 -0
- package/src/deps/esm.sh/react@19.1.1/jsx-runtime.d.ts +36 -0
- package/src/deps/esm.sh/react@19.1.1/jsx-runtime.js +3 -0
- package/src/deps/esm.sh/react@19.1.1.d.ts +4267 -0
- package/src/deps/esm.sh/react@19.1.1.js +3 -0
- package/src/deps/esm.sh/scheduler@^0.26.0.d.ts +30 -0
- package/src/deps/esm.sh/scheduler@^0.26.0.js +3 -0
- package/src/proxy/main.ts +471 -0
- package/src/src/agent/react/use-agent.ts +1 -1
- package/src/src/agent/react/use-chat/use-chat.ts +1 -1
- package/src/src/agent/react/use-completion.ts +1 -1
- package/src/src/agent/react/use-streaming.ts +1 -1
- package/src/src/agent/react/use-voice-input.ts +1 -1
- package/src/src/cli/commands/init/config-generator.ts +1 -1
- package/src/src/cli/index/arg-parser.ts +1 -0
- package/src/src/cli/index/command-router.ts +57 -40
- package/src/src/cli/index/types.ts +5 -0
- package/src/src/config/loader.ts +5 -4
- package/src/src/html/utils.ts +2 -2
- package/src/src/modules/component-registry/registry.ts +1 -1
- package/src/src/modules/import-map/default-import-map.ts +3 -25
- package/src/src/modules/import-map/loader.ts +7 -23
- package/src/src/modules/import-map/resolver.ts +13 -8
- package/src/src/modules/react-loader/component-loader.ts +3 -1
- package/src/src/modules/react-loader/extract-component.ts +1 -1
- package/src/src/modules/react-loader/ssr-module-loader/loader.ts +52 -38
- package/src/src/modules/react-loader/ssr-module-loader/types.ts +2 -0
- package/src/src/modules/react-loader/types.ts +3 -1
- package/src/src/modules/react-loader/unified-loader.ts +7 -4
- package/src/src/modules/server/module-batch-handler.ts +7 -0
- package/src/src/modules/server/module-server.ts +6 -1
- package/src/src/modules/server/ssr-import-rewriter.ts +9 -17
- package/src/src/react/compat/hooks-adapter.ts +1 -1
- package/src/src/react/compat/ssr-adapter/response-builder.ts +1 -1
- package/src/src/react/compat/ssr-adapter/server-loader.ts +10 -10
- package/src/src/react/compat/ssr-adapter/stream-renderer.ts +2 -2
- package/src/src/react/compat/ssr-adapter/string-renderer.ts +3 -3
- package/src/src/react/compat/version-detector/feature-detector.ts +1 -1
- package/src/src/react/components/AppWrapper.tsx +1 -1
- package/src/src/react/components/Head.tsx +7 -3
- package/src/src/react/components/LayoutComponent.tsx +2 -2
- package/src/src/react/components/Link.tsx +1 -1
- package/src/src/react/components/MDXProvider.tsx +2 -2
- package/src/src/react/components/ProviderComponent.tsx +2 -2
- package/src/src/react/components/ai/agent-card.tsx +1 -1
- package/src/src/react/components/ai/chat/components/animations.tsx +1 -1
- package/src/src/react/components/ai/chat/components/empty-state.tsx +1 -1
- package/src/src/react/components/ai/chat/components/message-actions.tsx +1 -1
- package/src/src/react/components/ai/chat/components/reasoning.tsx +1 -1
- package/src/src/react/components/ai/chat/components/tool-ui.tsx +1 -1
- package/src/src/react/components/ai/chat/composition/api.tsx +1 -1
- package/src/src/react/components/ai/chat/index.tsx +1 -1
- package/src/src/react/components/ai/error-boundary.tsx +1 -1
- package/src/src/react/components/ai/icons/index.ts +1 -1
- package/src/src/react/components/ai/markdown.tsx +1 -1
- package/src/src/react/components/ai/message.tsx +1 -1
- package/src/src/react/components/optimized-image/OptimizedBackgroundImage.tsx +1 -1
- package/src/src/react/components/optimized-image/OptimizedImage.tsx +1 -1
- package/src/src/react/components/optimized-image/SimpleOptimizedImage.tsx +1 -1
- package/src/src/react/components/optimized-image/utils.tsx +1 -1
- package/src/src/react/context/index.ts +1 -1
- package/src/src/react/fonts/index.ts +1 -1
- package/src/src/react/primitives/agent-primitives.tsx +1 -1
- package/src/src/react/primitives/chat-container.tsx +1 -1
- package/src/src/react/primitives/input-box.tsx +5 -3
- package/src/src/react/primitives/message-list.tsx +1 -1
- package/src/src/react/primitives/tool-primitives.tsx +1 -1
- package/src/src/react/router/index.ts +1 -1
- package/src/src/rendering/app-reserved.ts +1 -1
- package/src/src/rendering/client/router.ts +2 -2
- package/src/src/rendering/client/state-bridge.ts +2 -2
- package/src/src/rendering/component-handling.ts +7 -1
- package/src/src/rendering/element-validator/element-inspector.ts +1 -1
- package/src/src/rendering/element-validator/element-normalizer.ts +1 -1
- package/src/src/rendering/element-validator/primitive-checks.ts +1 -1
- package/src/src/rendering/element-validator/validator-core.ts +1 -1
- package/src/src/rendering/layouts/layout-applicator.ts +5 -6
- package/src/src/rendering/layouts/utils/applicator.ts +1 -1
- package/src/src/rendering/layouts/utils/component-loader.ts +1 -1
- package/src/src/rendering/layouts/utils/ensure-valid-child.ts +1 -1
- package/src/src/rendering/orchestrator/layout.ts +1 -1
- package/src/src/rendering/orchestrator/module-loader/index.ts +91 -20
- package/src/src/rendering/orchestrator/pipeline.ts +2 -0
- package/src/src/rendering/orchestrator/ssr-orchestrator.ts +2 -2
- package/src/src/rendering/page-renderer.ts +1 -1
- package/src/src/rendering/page-rendering.ts +1 -1
- package/src/src/rendering/rsc/server-renderer/component-detector.ts +1 -1
- package/src/src/rendering/rsc/server-renderer/rsc-renderer.ts +1 -1
- package/src/src/rendering/rsc/server-renderer/tree-processor.ts +14 -4
- package/src/src/rendering/snippet-renderer.ts +2 -2
- package/src/src/rendering/ssr/component-registry.ts +1 -1
- package/src/src/rendering/ssr-renderer.ts +1 -1
- package/src/src/rendering/utils/react-helpers.ts +1 -1
- package/src/src/server/build-app-route-renderer.ts +2 -2
- package/src/src/server/handlers/request/rsc/handlers/render-handler.ts +1 -1
- package/src/src/server/handlers/request/ssr/error-page-fallback.ts +2 -2
- package/src/src/server/handlers/request/ssr/not-found-fallback.ts +1 -1
- package/src/src/transforms/esm/http-bundler.ts +101 -11
- package/src/src/transforms/esm/http-cache.ts +27 -28
- package/src/src/transforms/esm/import-rewriter.ts +5 -3
- package/src/src/transforms/esm/package-registry.ts +46 -32
- package/src/src/transforms/esm/react-imports.ts +3 -7
- package/src/src/transforms/esm/types.ts +2 -0
- package/src/src/transforms/mdx/esm-module-loader/cache/index.ts +84 -0
- package/src/src/transforms/mdx/esm-module-loader/loader.ts +2 -1
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +2 -1
- package/src/src/transforms/mdx/esm-module-loader/types.ts +4 -0
- package/src/src/transforms/mdx/index.ts +1 -1
- package/src/src/transforms/mdx/mdx-cache-adapter.ts +1 -1
- package/src/src/transforms/mdx/module-loader/types.ts +1 -1
- package/src/src/transforms/mdx/types.ts +2 -2
- package/src/src/transforms/pipeline/context.ts +7 -18
- package/src/src/transforms/pipeline/stages/finalize.ts +6 -1
- package/src/src/transforms/plugins/babel-node-positions.ts +2 -2
- package/src/src/types/app.ts +1 -1
- package/src/src/types/global-guards.ts +1 -1
- package/src/src/types/index.ts +1 -1
- package/src/src/utils/constants/cdn.ts +21 -12
- package/src/src/utils/hash-utils.ts +5 -0
- package/src/src/workflow/react/use-approval.ts +1 -1
- package/src/src/workflow/react/use-workflow-list.ts +1 -1
- package/src/src/workflow/react/use-workflow-start.ts +1 -1
- package/src/src/workflow/react/use-workflow.ts +1 -1
|
@@ -170,47 +170,62 @@ export async function routeCommand(args) {
|
|
|
170
170
|
break;
|
|
171
171
|
case "preview":
|
|
172
172
|
case "serve": {
|
|
173
|
-
|
|
174
|
-
const { runtime } = await import("../../platform/adapters/detect.js");
|
|
175
|
-
const adapter = await runtime.get();
|
|
176
|
-
const { startUniversalServer } = await import("../../server/production-server.js");
|
|
177
|
-
const projectDir = cwd();
|
|
173
|
+
const mode = (args.mode || args.m || "renderer");
|
|
178
174
|
const port = args.port ?? DEFAULT_DEV_SERVER_PORT;
|
|
179
175
|
const bindAddress = String(args.hostname || args.host || "0.0.0.0");
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
176
|
+
if (mode === "proxy") {
|
|
177
|
+
// Proxy-only mode: run OAuth token proxy
|
|
178
|
+
showLogo();
|
|
179
|
+
cliLogger.info(`Starting proxy server on ${bindAddress}:${port}`);
|
|
180
|
+
// Set environment variables for proxy
|
|
181
|
+
const { setEnv } = await import("../../platform/compat/process.js");
|
|
182
|
+
setEnv("PORT", String(port));
|
|
183
|
+
setEnv("HOST", bindAddress);
|
|
184
|
+
// Import and run proxy main
|
|
185
|
+
await import("../../../proxy/main.js");
|
|
186
|
+
}
|
|
187
|
+
else if (mode === "renderer" || mode === "combined") {
|
|
188
|
+
// Renderer mode: run SSR production server
|
|
189
|
+
showLogo();
|
|
190
|
+
const { runtime } = await import("../../platform/adapters/detect.js");
|
|
191
|
+
const adapter = await runtime.get();
|
|
192
|
+
const { startUniversalServer } = await import("../../server/production-server.js");
|
|
193
|
+
const projectDir = cwd();
|
|
194
|
+
const debug = Boolean(args.debug);
|
|
195
|
+
const shutdownController = new AbortController();
|
|
196
|
+
const server = await startUniversalServer({
|
|
197
|
+
projectDir,
|
|
198
|
+
port,
|
|
199
|
+
bindAddress,
|
|
200
|
+
debug,
|
|
201
|
+
adapter,
|
|
202
|
+
signal: shutdownController.signal,
|
|
203
|
+
});
|
|
204
|
+
await server.ready;
|
|
205
|
+
let shuttingDown = false;
|
|
206
|
+
const shutdown = async (signal) => {
|
|
207
|
+
if (shuttingDown)
|
|
208
|
+
return;
|
|
209
|
+
shuttingDown = true;
|
|
210
|
+
cliLogger.info(`Received ${signal}, shutting down production server...`);
|
|
211
|
+
try {
|
|
212
|
+
shutdownController.abort();
|
|
213
|
+
await server.stop();
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
cliLogger.warn("Error while shutting down production server:", error);
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
exitProcess(0);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
registerTerminationSignals((signal) => {
|
|
223
|
+
void shutdown(signal);
|
|
224
|
+
});
|
|
225
|
+
await new Promise(() => {
|
|
226
|
+
/* never resolve */
|
|
227
|
+
});
|
|
228
|
+
}
|
|
214
229
|
break;
|
|
215
230
|
}
|
|
216
231
|
case "doctor":
|
|
@@ -16,6 +16,7 @@ export interface BuildCommandArgs {
|
|
|
16
16
|
export interface GenerateCommandArgs {
|
|
17
17
|
_: (string | number)[];
|
|
18
18
|
}
|
|
19
|
+
export type ServerMode = "combined" | "proxy" | "renderer";
|
|
19
20
|
export interface ParsedArgs {
|
|
20
21
|
_: (string | number)[];
|
|
21
22
|
port?: number;
|
|
@@ -39,6 +40,9 @@ export interface ParsedArgs {
|
|
|
39
40
|
j?: boolean;
|
|
40
41
|
with?: string[];
|
|
41
42
|
w?: string[];
|
|
43
|
+
/** Server mode: combined (default), proxy, or renderer */
|
|
44
|
+
mode?: ServerMode;
|
|
45
|
+
m?: ServerMode;
|
|
42
46
|
[key: string]: unknown;
|
|
43
47
|
}
|
|
44
48
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/cli/index/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,CAAC,CAAC,EAAE,UAAU,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
@@ -303,13 +303,13 @@ declare const createProjectInput: z.ZodObject<{
|
|
|
303
303
|
}, "strip", z.ZodTypeAny, {
|
|
304
304
|
name: string;
|
|
305
305
|
template: "app" | "docs" | "ai" | "blog" | "minimal";
|
|
306
|
-
integrations?: string[] | undefined;
|
|
307
306
|
directory?: string | undefined;
|
|
307
|
+
integrations?: string[] | undefined;
|
|
308
308
|
}, {
|
|
309
309
|
name: string;
|
|
310
310
|
template?: "app" | "docs" | "ai" | "blog" | "minimal" | undefined;
|
|
311
|
-
integrations?: string[] | undefined;
|
|
312
311
|
directory?: string | undefined;
|
|
312
|
+
integrations?: string[] | undefined;
|
|
313
313
|
}>;
|
|
314
314
|
type CreateProjectInput = z.infer<typeof createProjectInput>;
|
|
315
315
|
interface CreateProjectResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAgBnE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqSlD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAsE1B;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAI9E"}
|
package/esm/src/config/loader.js
CHANGED
|
@@ -6,7 +6,8 @@ import { isBun } from "../platform/compat/runtime.js";
|
|
|
6
6
|
import { serverLogger } from "../utils/logger/logger.js";
|
|
7
7
|
import { getReactImportMap, REACT_DEFAULT_VERSION } from "../utils/constants/cdn.js";
|
|
8
8
|
import { DEFAULT_CACHE_DIR } from "../utils/constants/server.js";
|
|
9
|
-
|
|
9
|
+
// React version is now passed per-request via TransformOptions.reactVersion
|
|
10
|
+
// No longer using global singleton: import { setReactVersion } from "#veryfront/transforms/esm/package-registry.ts";
|
|
10
11
|
import { buildConfigCacheKey } from "../cache/keys.js";
|
|
11
12
|
import { DEFAULT_PORT } from "./defaults.js";
|
|
12
13
|
import { createFileSystem } from "../platform/compat/fs.js";
|
|
@@ -174,10 +175,10 @@ function validateAndCacheConfig(userConfig, cacheKey) {
|
|
|
174
175
|
validateCorsConfig(userConfig);
|
|
175
176
|
validateConfigShape(userConfig);
|
|
176
177
|
const merged = mergeConfigs(userConfig);
|
|
177
|
-
//
|
|
178
|
+
// React version is now passed per-request via TransformOptions.reactVersion
|
|
179
|
+
// Config stores it at merged.react.version, accessed wherever needed
|
|
178
180
|
if (merged.react?.version) {
|
|
179
|
-
|
|
180
|
-
serverLogger.debug("[CONFIG] React version set from config", { version: merged.react.version });
|
|
181
|
+
serverLogger.debug("[CONFIG] React version from config", { version: merged.react.version });
|
|
181
182
|
}
|
|
182
183
|
configCacheByProject.set(cacheKey, { revision: cacheRevision, config: merged });
|
|
183
184
|
return merged;
|
package/esm/src/html/utils.js
CHANGED
|
@@ -62,8 +62,8 @@ const PLATFORM_UTILITIES = {
|
|
|
62
62
|
const CDN_URL_TEMPLATES = {
|
|
63
63
|
"esm.sh": {
|
|
64
64
|
react: (v) => `https://esm.sh/react@${v}?target=es2022`,
|
|
65
|
-
reactDom: (v) => `https://esm.sh/react-dom@${v}?target=es2022`,
|
|
66
|
-
reactDomClient: (v) => `https://esm.sh/react-dom@${v}/client?target=es2022`,
|
|
65
|
+
reactDom: (v) => `https://esm.sh/react-dom@${v}?external=react&target=es2022`,
|
|
66
|
+
reactDomClient: (v) => `https://esm.sh/react-dom@${v}/client?external=react&target=es2022`,
|
|
67
67
|
jsxRuntime: (v) => `https://esm.sh/react@${v}/jsx-runtime?target=es2022`,
|
|
68
68
|
jsxDevRuntime: (v) => `https://esm.sh/react@${v}/jsx-dev-runtime?target=es2022`,
|
|
69
69
|
veryfrontAgentReact: (v) => `https://esm.sh/veryfront@${v}/agent/react?external=react,react-dom&target=es2022`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/component-registry/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/component-registry/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,KAAK,KAAK,MAAM,sCAAsC,CAAC;AAGnE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/F,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,qBAAa,iBAAiB;IAOhB,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAS;gBAER,OAAO,EAAE,wBAAwB;IAUrD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAcX,iBAAiB;YAsBjB,aAAa;IAmC3B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA4B1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAIpC;;OAEG;IACH,SAAS,IAAI,eAAe,GAAG,SAAS;IAIxC;;OAEG;IACH,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAWlE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAUrD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1B,KAAK,IAAI,IAAI;IAMb,iBAAiB,IAAI,MAAM,EAAE;IAIvB,cAAc,IAAI,OAAO,CAC7B,KAAK,CAAC;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CACH;CA8BF"}
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import type { ImportMapConfig } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Get React import map for SSR in Deno.
|
|
4
|
-
* Uses npm: specifiers which Deno handles natively with automatic deduplication.
|
|
5
|
-
* See: https://deno.com/blog/not-using-npm-specifiers-doing-it-wrong
|
|
6
|
-
*
|
|
7
|
-
* This replaces the previous shared-*.ts approach which required manual re-exports.
|
|
8
|
-
*/
|
|
9
|
-
export declare function getDenoReactImportMap(): Record<string, string>;
|
|
10
2
|
/**
|
|
11
3
|
* Get the default import map for SSR transforms.
|
|
12
|
-
*
|
|
13
|
-
* For Deno SSR: Uses npm: specifiers with automatic deduplication.
|
|
14
|
-
* For other runtimes: Uses esm.sh URLs with external=react.
|
|
4
|
+
* Uses esm.sh URLs consistently (NO npm: specifiers per plan requirements).
|
|
15
5
|
*/
|
|
16
6
|
export declare function getDefaultImportMap(): ImportMapConfig;
|
|
17
7
|
//# sourceMappingURL=default-import-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-import-map.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/default-import-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"default-import-map.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/default-import-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0ClD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAOrD"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
2
|
-
import {
|
|
3
|
-
import { getDenoNpmReactMap, getReactImportMap, } from "../../transforms/esm/package-registry.js";
|
|
2
|
+
import { getReactImportMap } from "../../transforms/esm/package-registry.js";
|
|
4
3
|
function ensureTrailingSlash(path) {
|
|
5
4
|
return path.endsWith("/") ? path : `${path}/`;
|
|
6
5
|
}
|
|
@@ -34,30 +33,14 @@ function getVeryfrontSsrImportMap() {
|
|
|
34
33
|
"veryfront/react/fonts": fonts,
|
|
35
34
|
};
|
|
36
35
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Get React import map for SSR in Deno.
|
|
39
|
-
* Uses npm: specifiers which Deno handles natively with automatic deduplication.
|
|
40
|
-
* See: https://deno.com/blog/not-using-npm-specifiers-doing-it-wrong
|
|
41
|
-
*
|
|
42
|
-
* This replaces the previous shared-*.ts approach which required manual re-exports.
|
|
43
|
-
*/
|
|
44
|
-
export function getDenoReactImportMap() {
|
|
45
|
-
return getDenoNpmReactMap();
|
|
46
|
-
}
|
|
47
36
|
/**
|
|
48
37
|
* Get the default import map for SSR transforms.
|
|
49
|
-
*
|
|
50
|
-
* For Deno SSR: Uses npm: specifiers with automatic deduplication.
|
|
51
|
-
* For other runtimes: Uses esm.sh URLs with external=react.
|
|
38
|
+
* Uses esm.sh URLs consistently (NO npm: specifiers per plan requirements).
|
|
52
39
|
*/
|
|
53
40
|
export function getDefaultImportMap() {
|
|
54
|
-
const reactMap =
|
|
41
|
+
const reactMap = getReactImportMap();
|
|
55
42
|
const veryfrontMap = getVeryfrontSsrImportMap();
|
|
56
|
-
// For Deno SSR, add scopes so that esm.sh modules with external=react
|
|
57
|
-
// resolve their bare `react` imports to npm: specifiers.
|
|
58
|
-
const scopes = isDeno ? { "https://esm.sh/": getDenoReactImportMap() } : undefined;
|
|
59
43
|
return {
|
|
60
44
|
imports: { ...veryfrontMap, ...reactMap },
|
|
61
|
-
scopes,
|
|
62
45
|
};
|
|
63
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqDlD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC,CA+C1B"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { rendererLogger as logger } from "../../utils/index.js";
|
|
2
2
|
import { dirname, join } from "../../platform/compat/path/index.js";
|
|
3
3
|
import { getConfig } from "../../config/index.js";
|
|
4
|
-
import { getDefaultImportMap
|
|
4
|
+
import { getDefaultImportMap } from "./default-import-map.js";
|
|
5
5
|
import { mergeImportMaps } from "./merger.js";
|
|
6
6
|
import { withSpan } from "../../observability/tracing/otlp-setup.js";
|
|
7
|
-
import {
|
|
7
|
+
import { getReactImportMap } from "../../transforms/esm/package-registry.js";
|
|
8
8
|
function normalizeImportMapForRuntime(importMap) {
|
|
9
9
|
const normalizeValue = (value) => {
|
|
10
10
|
if (!value.startsWith("npm:"))
|
|
11
11
|
return value;
|
|
12
|
+
// Convert npm: specifiers to esm.sh URLs (should not happen with new code)
|
|
12
13
|
const spec = value.slice(4);
|
|
13
14
|
const [base, query] = spec.split("?");
|
|
14
15
|
const url = `https://esm.sh/${base}`;
|
|
@@ -17,35 +18,19 @@ function normalizeImportMapForRuntime(importMap) {
|
|
|
17
18
|
let imports = importMap.imports
|
|
18
19
|
? Object.fromEntries(Object.entries(importMap.imports).map(([k, v]) => [k, normalizeValue(v)]))
|
|
19
20
|
: undefined;
|
|
20
|
-
|
|
21
|
+
const scopes = importMap.scopes
|
|
21
22
|
? Object.fromEntries(Object.entries(importMap.scopes).map(([scope, mappings]) => [
|
|
22
23
|
scope,
|
|
23
24
|
Object.fromEntries(Object.entries(mappings).map(([k, v]) => [k, normalizeValue(v)])),
|
|
24
25
|
]))
|
|
25
26
|
: undefined;
|
|
26
|
-
// CRITICAL: For Deno SSR, always use shared-*.ts files for React.
|
|
27
|
-
// Project configs may have esm.sh URLs which would create multiple React instances.
|
|
28
27
|
// Override React mappings AFTER all other processing to ensure single instance.
|
|
29
|
-
//
|
|
30
|
-
if (
|
|
31
|
-
const reactMap =
|
|
32
|
-
// Remove any esm.sh "react/" prefix mapping that would break subpath resolution
|
|
28
|
+
// Remove any "react/" prefix match since we have explicit mappings.
|
|
29
|
+
if (imports) {
|
|
30
|
+
const reactMap = getReactImportMap();
|
|
33
31
|
delete imports["react/"];
|
|
34
32
|
imports = { ...imports, ...reactMap };
|
|
35
33
|
}
|
|
36
|
-
// For Deno SSR, ensure esm.sh scope has React mappings to shared-*.ts files.
|
|
37
|
-
// This is critical because esm.sh modules with external=react have bare `react`
|
|
38
|
-
// imports that need to resolve to our shared React instance.
|
|
39
|
-
if (isDeno) {
|
|
40
|
-
const reactMap = getDenoReactImportMap();
|
|
41
|
-
const esmShScope = scopes?.["https://esm.sh/"] ?? {};
|
|
42
|
-
// Remove any "react/" prefix match from scope as well
|
|
43
|
-
delete esmShScope["react/"];
|
|
44
|
-
scopes = {
|
|
45
|
-
...scopes,
|
|
46
|
-
"https://esm.sh/": { ...esmShScope, ...reactMap },
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
34
|
return { imports, scopes };
|
|
50
35
|
}
|
|
51
36
|
function mergeWithDefault(importMap) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/import-map/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAuDR"}
|
|
@@ -46,21 +46,25 @@ export function resolveImport(specifier, importMap, scope) {
|
|
|
46
46
|
if (isEsmShUrl(specifier)) {
|
|
47
47
|
const esmShPackage = extractEsmShPackage(specifier);
|
|
48
48
|
if (esmShPackage) {
|
|
49
|
+
const subpath = extractEsmShSubpath(specifier);
|
|
50
|
+
// Always check for explicit subpath mapping first (e.g., "react/jsx-runtime")
|
|
51
|
+
// This takes priority over appending subpath to base package mapping
|
|
52
|
+
if (subpath) {
|
|
53
|
+
const fullKey = esmShPackage + subpath; // e.g., "react/jsx-runtime"
|
|
54
|
+
const subpathMapping = scopedImports?.[fullKey] ?? importMap.imports?.[fullKey];
|
|
55
|
+
if (subpathMapping)
|
|
56
|
+
return subpathMapping;
|
|
57
|
+
}
|
|
49
58
|
const mapping = scopedImports?.[esmShPackage] ?? importMap.imports?.[esmShPackage];
|
|
50
59
|
if (mapping) {
|
|
51
|
-
const subpath = extractEsmShSubpath(specifier);
|
|
52
60
|
if (!subpath)
|
|
53
61
|
return mapping;
|
|
54
|
-
// If mapping target is a file path (not HTTP URL or npm: specifier),
|
|
55
|
-
//
|
|
56
|
-
// npm: specifiers are URL-like and should have subpaths appended
|
|
62
|
+
// If mapping target is a file path (not HTTP URL or npm: specifier),
|
|
63
|
+
// fall back to base mapping since explicit subpath wasn't found above
|
|
57
64
|
const isFilePath = !mapping.startsWith("http://") && !mapping.startsWith("https://") &&
|
|
58
65
|
!mapping.startsWith("npm:");
|
|
59
66
|
if (isFilePath) {
|
|
60
|
-
|
|
61
|
-
const subpathMapping = scopedImports?.[fullKey] ?? importMap.imports?.[fullKey];
|
|
62
|
-
// Use explicit subpath mapping if available, otherwise fall back to base mapping
|
|
63
|
-
return subpathMapping ?? mapping;
|
|
67
|
+
return mapping;
|
|
64
68
|
}
|
|
65
69
|
return mapping + subpath;
|
|
66
70
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
1
|
+
import type * as React from "../../../deps/esm.sh/react@19.1.1.js";
|
|
2
2
|
import type { RuntimeAdapter } from "../../platform/adapters/base.js";
|
|
3
3
|
import type { LoadComponentOptions } from "./types.js";
|
|
4
4
|
export declare function loadComponentFromSource(source: string, filePath: string, projectDir: string, adapter: RuntimeAdapter, options?: LoadComponentOptions): Promise<React.ComponentType<Record<string, unknown>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/component-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"component-loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/component-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMvD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CA0DvD"}
|
|
@@ -19,6 +19,7 @@ export function loadComponentFromSource(source, filePath, projectDir, adapter, o
|
|
|
19
19
|
adapter,
|
|
20
20
|
dev,
|
|
21
21
|
contentSourceId: options?.contentSourceId,
|
|
22
|
+
reactVersion: options?.reactVersion,
|
|
22
23
|
});
|
|
23
24
|
return loader.loadModule(filePath, source);
|
|
24
25
|
}
|
|
@@ -28,6 +29,7 @@ export function loadComponentFromSource(source, filePath, projectDir, adapter, o
|
|
|
28
29
|
moduleServerUrl: options?.moduleServerUrl ?? "/_vf_modules",
|
|
29
30
|
vendorBundleHash: options?.vendorBundleHash,
|
|
30
31
|
ssr: false,
|
|
32
|
+
reactVersion: options?.reactVersion,
|
|
31
33
|
};
|
|
32
34
|
const transformedCode = await transformToESM(source, filePath, projectDir, adapter, transformOpts);
|
|
33
35
|
const tmpDir = await getProjectTmpDir(projectId);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
1
|
+
import type * as React from "../../../deps/esm.sh/react@19.1.1.js";
|
|
2
2
|
export declare function extractComponent(mod: unknown, filePath: string): React.ComponentType<Record<string, unknown>>;
|
|
3
3
|
//# sourceMappingURL=extract-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-component.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/extract-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"extract-component.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/extract-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,sCAAsC,CAAC;AAGnE,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgB9C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
1
|
+
import type * as React from "../../../../deps/esm.sh/react@19.1.1.js";
|
|
2
2
|
import type { SSRModuleLoaderOptions } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* SSR Module Loader with Redis Support.
|
|
@@ -53,14 +53,9 @@ export declare class SSRModuleLoader {
|
|
|
53
53
|
*/
|
|
54
54
|
private toJsExtension;
|
|
55
55
|
private ensureDependenciesExist;
|
|
56
|
-
/**
|
|
57
|
-
* Fast sync hash for small strings (project IDs, etc.)
|
|
58
|
-
* Use hashContentAsync for large file content.
|
|
59
|
-
*/
|
|
60
|
-
private hashCode;
|
|
61
56
|
/**
|
|
62
57
|
* Async hash for large content using Web Crypto API.
|
|
63
|
-
*
|
|
58
|
+
* Falls back to sync hash for small files.
|
|
64
59
|
*/
|
|
65
60
|
private hashContentAsync;
|
|
66
61
|
private getTempPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/modules/react-loader/ssr-module-loader/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/modules/react-loader/ssr-module-loader/loader.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,KAAK,MAAM,yCAAyC,CAAC;AAuCtE,OAAO,KAAK,EAAoB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAiC3E;;;;;GAKG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,EAAE,CAAsB;IAChC,OAAO,CAAC,mBAAmB,CAAuB;gBAE9B,OAAO,EAAE,sBAAsB;IAEnD;;OAEG;IACH,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAsGxD,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;YACW,2BAA2B;IAmGzC,OAAO,CAAC,yBAAyB;YAiBnB,2BAA2B;IA0TzC;;;OAGG;YACW,mBAAmB;IA2CjC,OAAO,CAAC,yBAAyB;IAYjC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,2BAA2B;IAWnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,aAAa;YAIP,uBAAuB;IAyCrC;;;OAGG;YACW,gBAAgB;YAgBhB,WAAW;YAeX,YAAY;CA4B3B"}
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
* @module module-system/react-loader/ssr-module-loader/loader
|
|
7
7
|
*/
|
|
8
8
|
import * as dntShim from "../../../../_dnt.shims.js";
|
|
9
|
-
import {
|
|
10
|
-
import { cwd } from "../../../platform/compat/process.js";
|
|
9
|
+
import { join } from "../../../platform/compat/path/index.js";
|
|
11
10
|
import { transformToESM } from "../../../transforms/esm/index.js";
|
|
12
11
|
import { TRANSFORM_CACHE_VERSION } from "../../../transforms/esm/package-registry.js";
|
|
13
|
-
import { buildSSRModuleCacheKey
|
|
12
|
+
import { buildSSRModuleCacheKey } from "../../../cache/keys.js";
|
|
14
13
|
import { parseLocalImports, } from "../../../transforms/esm/import-parser.js";
|
|
15
14
|
import { createFileSystem } from "../../../platform/compat/fs.js";
|
|
16
15
|
import { createError, toError } from "../../../errors/veryfront-error.js";
|
|
17
16
|
import { rendererLogger as logger } from "../../../utils/index.js";
|
|
17
|
+
import { hashCodeHex } from "../../../utils/hash-utils.js";
|
|
18
18
|
import { getApiBaseUrlEnv } from "../../../config/env.js";
|
|
19
19
|
import { injectContext, withSpan } from "../../../observability/tracing/otlp-setup.js";
|
|
20
20
|
import { SpanNames } from "../../../observability/tracing/span-names.js";
|
|
@@ -22,7 +22,8 @@ import { extractComponent } from "../extract-component.js";
|
|
|
22
22
|
import { CIRCUIT_BREAKER_RESET_MS, CIRCUIT_BREAKER_THRESHOLD, IN_PROGRESS_WAIT_TIMEOUT_MS, MAX_CONCURRENT_TRANSFORMS, MAX_TRANSFORM_DEPTH, TRANSFORM_ACQUIRE_TIMEOUT_MS, TRANSFORM_BATCH_SIZE, } from "./constants.js";
|
|
23
23
|
import { withTimeoutThrow } from "../../../rendering/utils/stream-utils.js";
|
|
24
24
|
import { failedComponents, getFromRedis, globalCrossProjectCache, globalInProgress, globalModuleCache, globalTmpDirs, isSSRDistributedCacheEnabled, setInRedis, transformSemaphore, } from "./cache/index.js";
|
|
25
|
-
import {
|
|
25
|
+
import { getHttpBundleCacheDir, getMdxEsmCacheDir } from "../../../utils/cache-dir.js";
|
|
26
|
+
import { lookupMdxEsmCache } from "../../../transforms/mdx/esm-module-loader/cache/index.js";
|
|
26
27
|
import { ensureHttpBundlesExist } from "../../../transforms/esm/http-cache.js";
|
|
27
28
|
import { LRUCache } from "../../../utils/lru-wrapper.js";
|
|
28
29
|
/** Pattern to match HTTP bundle file:// paths in transformed code */
|
|
@@ -190,7 +191,9 @@ export class SSRModuleLoader {
|
|
|
190
191
|
if (!this.options.contentSourceId) {
|
|
191
192
|
throw new Error(`Missing contentSourceId for SSR module cache (project: ${this.options.projectId}, file: ${filePath})`);
|
|
192
193
|
}
|
|
193
|
-
|
|
194
|
+
// Include reactVersion in cache key to ensure different versions don't share cached modules
|
|
195
|
+
const reactVersion = this.options.reactVersion ?? "default";
|
|
196
|
+
return buildSSRModuleCacheKey(TRANSFORM_CACHE_VERSION, this.options.projectId, `${this.options.contentSourceId}:${reactVersion}:${filePath}`);
|
|
194
197
|
}
|
|
195
198
|
isProductionContentSource() {
|
|
196
199
|
const sourceId = this.options.contentSourceId;
|
|
@@ -259,6 +262,7 @@ export class SSRModuleLoader {
|
|
|
259
262
|
dev: this.options.dev,
|
|
260
263
|
ssr: true,
|
|
261
264
|
apiBaseUrl: this.options.apiBaseUrl,
|
|
265
|
+
reactVersion: this.options.reactVersion,
|
|
262
266
|
};
|
|
263
267
|
const filePathWithExt = syntheticFilePath.endsWith(ext)
|
|
264
268
|
? syntheticFilePath
|
|
@@ -397,6 +401,25 @@ export class SSRModuleLoader {
|
|
|
397
401
|
// Fall through to re-transform, which will create HTTP bundles locally
|
|
398
402
|
}
|
|
399
403
|
}
|
|
404
|
+
// Check MDX-ESM cache to share modules with MDX loader and avoid duplicate React contexts
|
|
405
|
+
if (this.options.projectId && this.options.contentSourceId) {
|
|
406
|
+
const baseCacheDir = getMdxEsmCacheDir();
|
|
407
|
+
const projectKey = hashCodeHex(this.options.projectId);
|
|
408
|
+
const sourceKey = hashCodeHex(this.options.contentSourceId);
|
|
409
|
+
const mdxCacheDir = join(baseCacheDir, projectKey, sourceKey);
|
|
410
|
+
const mdxCachedPath = await lookupMdxEsmCache(filePath, mdxCacheDir, this.options.projectDir, contentHash);
|
|
411
|
+
if (mdxCachedPath) {
|
|
412
|
+
const entry = { tempPath: mdxCachedPath, contentHash };
|
|
413
|
+
globalModuleCache.set(contentCacheKey, entry);
|
|
414
|
+
globalModuleCache.set(filePathCacheKey, entry);
|
|
415
|
+
logger.debug("[SSR-MODULE-LOADER] Reusing MDX-ESM cache", {
|
|
416
|
+
file: filePath.slice(-40),
|
|
417
|
+
cachedPath: mdxCachedPath.slice(-60),
|
|
418
|
+
});
|
|
419
|
+
await this.ensureDependenciesExist(code, filePath, depth);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
400
423
|
const existingTransform = globalInProgress.get(inProgressKey);
|
|
401
424
|
if (existingTransform) {
|
|
402
425
|
try {
|
|
@@ -459,6 +482,7 @@ export class SSRModuleLoader {
|
|
|
459
482
|
dev: this.options.dev,
|
|
460
483
|
ssr: true,
|
|
461
484
|
apiBaseUrl: this.options.apiBaseUrl,
|
|
485
|
+
reactVersion: this.options.reactVersion,
|
|
462
486
|
};
|
|
463
487
|
let transformed = await withSpan(SpanNames.SSR_TRANSFORM_SINGLE, () => transformToESM(code, filePath, this.options.projectDir, this.options.adapter, transformOpts), { "ssr.file": filePath.split("/").pop() || filePath });
|
|
464
488
|
for (const [specifier, tempPath] of crossProjectPaths.entries()) {
|
|
@@ -683,26 +707,13 @@ export class SSRModuleLoader {
|
|
|
683
707
|
}));
|
|
684
708
|
}
|
|
685
709
|
}
|
|
686
|
-
/**
|
|
687
|
-
* Fast sync hash for small strings (project IDs, etc.)
|
|
688
|
-
* Use hashContentAsync for large file content.
|
|
689
|
-
*/
|
|
690
|
-
hashCode(str) {
|
|
691
|
-
let hash = 0;
|
|
692
|
-
for (let i = 0; i < str.length; i++) {
|
|
693
|
-
const char = str.charCodeAt(i);
|
|
694
|
-
hash = (hash << 5) - hash + char;
|
|
695
|
-
hash = hash & hash;
|
|
696
|
-
}
|
|
697
|
-
return Math.abs(hash).toString(16);
|
|
698
|
-
}
|
|
699
710
|
/**
|
|
700
711
|
* Async hash for large content using Web Crypto API.
|
|
701
|
-
*
|
|
712
|
+
* Falls back to sync hash for small files.
|
|
702
713
|
*/
|
|
703
714
|
async hashContentAsync(content) {
|
|
704
715
|
if (content.length < 10000)
|
|
705
|
-
return
|
|
716
|
+
return hashCodeHex(content);
|
|
706
717
|
try {
|
|
707
718
|
const data = new TextEncoder().encode(content);
|
|
708
719
|
const hashBuffer = await dntShim.crypto.subtle.digest("SHA-256", data);
|
|
@@ -713,7 +724,7 @@ export class SSRModuleLoader {
|
|
|
713
724
|
.join("");
|
|
714
725
|
}
|
|
715
726
|
catch {
|
|
716
|
-
return
|
|
727
|
+
return hashCodeHex(content);
|
|
717
728
|
}
|
|
718
729
|
}
|
|
719
730
|
async getTempPath(filePath, contentHash) {
|
|
@@ -729,26 +740,23 @@ export class SSRModuleLoader {
|
|
|
729
740
|
return join(tmpDir, jsPath);
|
|
730
741
|
}
|
|
731
742
|
async ensureTmpDir() {
|
|
732
|
-
let projectDir = this.options.projectDir;
|
|
733
743
|
const { projectId, contentSourceId } = this.options;
|
|
734
744
|
if (!projectId) {
|
|
735
|
-
throw new Error(`Missing projectId for SSR temp directory (projectDir: ${projectDir})`);
|
|
745
|
+
throw new Error(`Missing projectId for SSR temp directory (projectDir: ${this.options.projectDir})`);
|
|
736
746
|
}
|
|
737
747
|
if (!contentSourceId) {
|
|
738
748
|
throw new Error(`Missing contentSourceId for SSR temp directory (project: ${projectId})`);
|
|
739
749
|
}
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
const
|
|
744
|
-
const
|
|
745
|
-
const cacheKey = `${
|
|
750
|
+
// Use the same cache directory as MDX-ESM loader to share module instances.
|
|
751
|
+
// This prevents issues like React context being created twice in separate files.
|
|
752
|
+
const baseCacheDir = getMdxEsmCacheDir();
|
|
753
|
+
const projectKey = hashCodeHex(projectId);
|
|
754
|
+
const sourceKey = hashCodeHex(contentSourceId);
|
|
755
|
+
const cacheKey = `${baseCacheDir}|${projectKey}|${sourceKey}`;
|
|
746
756
|
const existingDir = globalTmpDirs.get(cacheKey);
|
|
747
757
|
if (existingDir)
|
|
748
758
|
return existingDir;
|
|
749
|
-
const
|
|
750
|
-
const sourceKey = this.hashCode(contentSourceId);
|
|
751
|
-
const tmpDir = join(baseDir, "veryfront-ssr", projectKey, sourceKey);
|
|
759
|
+
const tmpDir = join(baseCacheDir, projectKey, sourceKey);
|
|
752
760
|
await this.fs.mkdir(tmpDir, { recursive: true });
|
|
753
761
|
globalTmpDirs.set(cacheKey, tmpDir);
|
|
754
762
|
return tmpDir;
|
|
@@ -14,6 +14,8 @@ export interface SSRModuleLoaderOptions {
|
|
|
14
14
|
apiBaseUrl?: string;
|
|
15
15
|
/** Content source ID for cache isolation (branch name or release ID) */
|
|
16
16
|
contentSourceId?: string;
|
|
17
|
+
/** React version for transforms (defaults to DEFAULT_REACT_VERSION) */
|
|
18
|
+
reactVersion?: string;
|
|
17
19
|
}
|
|
18
20
|
export interface ModuleCacheEntry {
|
|
19
21
|
tempPath: string;
|