veryfront 0.0.84 → 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/README.md +18 -44
- 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/app/components/list-select.js +2 -2
- package/esm/src/cli/app/index.d.ts +1 -1
- package/esm/src/cli/app/index.d.ts.map +1 -1
- package/esm/src/cli/app/index.js +26 -33
- package/esm/src/cli/app/state.d.ts +3 -0
- package/esm/src/cli/app/state.d.ts.map +1 -1
- package/esm/src/cli/app/state.js +4 -0
- package/esm/src/cli/app/views/dashboard.d.ts.map +1 -1
- package/esm/src/cli/app/views/dashboard.js +45 -57
- package/esm/src/cli/app/views/startup.d.ts +39 -0
- package/esm/src/cli/app/views/startup.d.ts.map +1 -0
- package/esm/src/cli/app/views/startup.js +103 -0
- 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/cli/ui/colors.d.ts +8 -0
- package/esm/src/cli/ui/colors.d.ts.map +1 -1
- package/esm/src/cli/ui/colors.js +34 -0
- package/esm/src/cli/ui/dot-matrix.d.ts +8 -0
- package/esm/src/cli/ui/dot-matrix.d.ts.map +1 -1
- package/esm/src/cli/ui/dot-matrix.js +67 -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 +68 -38
- 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 +51 -44
- 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/app/components/list-select.ts +2 -2
- package/src/src/cli/app/index.ts +34 -35
- package/src/src/cli/app/state.ts +7 -0
- package/src/src/cli/app/views/dashboard.ts +46 -60
- package/src/src/cli/app/views/startup.ts +132 -0
- 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/cli/ui/colors.ts +37 -0
- package/src/src/cli/ui/dot-matrix.ts +77 -1
- 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 +95 -68
- 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 +53 -45
- 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
|
@@ -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 */
|
|
@@ -97,18 +98,31 @@ export class SSRModuleLoader {
|
|
|
97
98
|
const bundleMatch = errorMsg.match(/veryfront-http-bundle\/http-([a-f0-9]+)\.mjs/);
|
|
98
99
|
if (bundleMatch) {
|
|
99
100
|
const hash = bundleMatch[1];
|
|
100
|
-
|
|
101
|
+
const cacheDir = getHttpBundleCacheDir();
|
|
102
|
+
logger.error("[SSR-MODULE-LOADER] Missing HTTP bundle after ensureHttpBundlesExist", {
|
|
101
103
|
file: filePath.slice(-40),
|
|
102
104
|
hash,
|
|
105
|
+
tempPath: cacheEntry.tempPath,
|
|
106
|
+
contentHash: cacheEntry.contentHash,
|
|
107
|
+
cacheDir,
|
|
108
|
+
expectedPath: `${cacheDir}/http-${hash}.mjs`,
|
|
103
109
|
});
|
|
104
110
|
const { recoverHttpBundleByHash } = await import("../../../transforms/esm/http-cache.js");
|
|
105
|
-
const cacheDir = getHttpBundleCacheDir();
|
|
106
111
|
const recovered = await recoverHttpBundleByHash(hash, cacheDir);
|
|
107
112
|
if (recovered) {
|
|
108
|
-
logger.info("[SSR-MODULE-LOADER] HTTP bundle recovered, retrying import", {
|
|
113
|
+
logger.info("[SSR-MODULE-LOADER] HTTP bundle recovered, retrying import", {
|
|
114
|
+
hash,
|
|
115
|
+
file: filePath.slice(-40),
|
|
116
|
+
});
|
|
109
117
|
mod = await import(`file://${cacheEntry.tempPath}?v=${cacheEntry.contentHash}&retry=1`);
|
|
110
118
|
}
|
|
111
119
|
else {
|
|
120
|
+
logger.error("[SSR-MODULE-LOADER] HTTP bundle recovery failed", {
|
|
121
|
+
hash,
|
|
122
|
+
file: filePath.slice(-40),
|
|
123
|
+
cacheDir,
|
|
124
|
+
hint: "Bundle may have expired from Redis (24h TTL) while transform was still cached",
|
|
125
|
+
});
|
|
112
126
|
throw importError;
|
|
113
127
|
}
|
|
114
128
|
}
|
|
@@ -177,7 +191,9 @@ export class SSRModuleLoader {
|
|
|
177
191
|
if (!this.options.contentSourceId) {
|
|
178
192
|
throw new Error(`Missing contentSourceId for SSR module cache (project: ${this.options.projectId}, file: ${filePath})`);
|
|
179
193
|
}
|
|
180
|
-
|
|
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}`);
|
|
181
197
|
}
|
|
182
198
|
isProductionContentSource() {
|
|
183
199
|
const sourceId = this.options.contentSourceId;
|
|
@@ -246,6 +262,7 @@ export class SSRModuleLoader {
|
|
|
246
262
|
dev: this.options.dev,
|
|
247
263
|
ssr: true,
|
|
248
264
|
apiBaseUrl: this.options.apiBaseUrl,
|
|
265
|
+
reactVersion: this.options.reactVersion,
|
|
249
266
|
};
|
|
250
267
|
const filePathWithExt = syntheticFilePath.endsWith(ext)
|
|
251
268
|
? syntheticFilePath
|
|
@@ -313,9 +330,12 @@ export class SSRModuleLoader {
|
|
|
313
330
|
const cacheDir = getHttpBundleCacheDir();
|
|
314
331
|
const failed = await ensureHttpBundlesExist(bundlePaths, cacheDir);
|
|
315
332
|
if (failed.length > 0) {
|
|
316
|
-
logger.warn("[SSR-MODULE-LOADER]
|
|
333
|
+
logger.warn("[SSR-MODULE-LOADER] Unrecoverable HTTP bundles, re-transforming", {
|
|
317
334
|
file: filePath.slice(-40),
|
|
318
335
|
failed,
|
|
336
|
+
totalBundles: bundlePaths.length,
|
|
337
|
+
cacheDir,
|
|
338
|
+
source: "memory-cache",
|
|
319
339
|
});
|
|
320
340
|
globalModuleCache.delete(contentCacheKey);
|
|
321
341
|
globalModuleCache.delete(filePathCacheKey);
|
|
@@ -354,9 +374,12 @@ export class SSRModuleLoader {
|
|
|
354
374
|
const cacheDir = getHttpBundleCacheDir();
|
|
355
375
|
const failed = await ensureHttpBundlesExist(bundlePaths, cacheDir);
|
|
356
376
|
if (failed.length > 0) {
|
|
357
|
-
logger.warn("[SSR-MODULE-LOADER]
|
|
377
|
+
logger.warn("[SSR-MODULE-LOADER] Unrecoverable HTTP bundles, re-transforming", {
|
|
358
378
|
file: filePath.slice(-40),
|
|
359
379
|
failed,
|
|
380
|
+
totalBundles: bundlePaths.length,
|
|
381
|
+
cacheDir,
|
|
382
|
+
source: "redis-cache",
|
|
360
383
|
});
|
|
361
384
|
httpBundlesOk = false;
|
|
362
385
|
}
|
|
@@ -378,6 +401,25 @@ export class SSRModuleLoader {
|
|
|
378
401
|
// Fall through to re-transform, which will create HTTP bundles locally
|
|
379
402
|
}
|
|
380
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
|
+
}
|
|
381
423
|
const existingTransform = globalInProgress.get(inProgressKey);
|
|
382
424
|
if (existingTransform) {
|
|
383
425
|
try {
|
|
@@ -440,6 +482,7 @@ export class SSRModuleLoader {
|
|
|
440
482
|
dev: this.options.dev,
|
|
441
483
|
ssr: true,
|
|
442
484
|
apiBaseUrl: this.options.apiBaseUrl,
|
|
485
|
+
reactVersion: this.options.reactVersion,
|
|
443
486
|
};
|
|
444
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 });
|
|
445
488
|
for (const [specifier, tempPath] of crossProjectPaths.entries()) {
|
|
@@ -454,9 +497,12 @@ export class SSRModuleLoader {
|
|
|
454
497
|
const cacheDir = getHttpBundleCacheDir();
|
|
455
498
|
const failed = await ensureHttpBundlesExist(bundlePaths, cacheDir);
|
|
456
499
|
if (failed.length > 0) {
|
|
457
|
-
logger.warn("[SSR-MODULE-LOADER]
|
|
500
|
+
logger.warn("[SSR-MODULE-LOADER] Unrecoverable HTTP bundles", {
|
|
458
501
|
file: filePath.slice(-40),
|
|
459
502
|
failed,
|
|
503
|
+
totalBundles: bundlePaths.length,
|
|
504
|
+
cacheDir,
|
|
505
|
+
source: "fresh-transform",
|
|
460
506
|
});
|
|
461
507
|
}
|
|
462
508
|
}
|
|
@@ -661,26 +707,13 @@ export class SSRModuleLoader {
|
|
|
661
707
|
}));
|
|
662
708
|
}
|
|
663
709
|
}
|
|
664
|
-
/**
|
|
665
|
-
* Fast sync hash for small strings (project IDs, etc.)
|
|
666
|
-
* Use hashContentAsync for large file content.
|
|
667
|
-
*/
|
|
668
|
-
hashCode(str) {
|
|
669
|
-
let hash = 0;
|
|
670
|
-
for (let i = 0; i < str.length; i++) {
|
|
671
|
-
const char = str.charCodeAt(i);
|
|
672
|
-
hash = (hash << 5) - hash + char;
|
|
673
|
-
hash = hash & hash;
|
|
674
|
-
}
|
|
675
|
-
return Math.abs(hash).toString(16);
|
|
676
|
-
}
|
|
677
710
|
/**
|
|
678
711
|
* Async hash for large content using Web Crypto API.
|
|
679
|
-
*
|
|
712
|
+
* Falls back to sync hash for small files.
|
|
680
713
|
*/
|
|
681
714
|
async hashContentAsync(content) {
|
|
682
715
|
if (content.length < 10000)
|
|
683
|
-
return
|
|
716
|
+
return hashCodeHex(content);
|
|
684
717
|
try {
|
|
685
718
|
const data = new TextEncoder().encode(content);
|
|
686
719
|
const hashBuffer = await dntShim.crypto.subtle.digest("SHA-256", data);
|
|
@@ -691,7 +724,7 @@ export class SSRModuleLoader {
|
|
|
691
724
|
.join("");
|
|
692
725
|
}
|
|
693
726
|
catch {
|
|
694
|
-
return
|
|
727
|
+
return hashCodeHex(content);
|
|
695
728
|
}
|
|
696
729
|
}
|
|
697
730
|
async getTempPath(filePath, contentHash) {
|
|
@@ -707,26 +740,23 @@ export class SSRModuleLoader {
|
|
|
707
740
|
return join(tmpDir, jsPath);
|
|
708
741
|
}
|
|
709
742
|
async ensureTmpDir() {
|
|
710
|
-
let projectDir = this.options.projectDir;
|
|
711
743
|
const { projectId, contentSourceId } = this.options;
|
|
712
744
|
if (!projectId) {
|
|
713
|
-
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})`);
|
|
714
746
|
}
|
|
715
747
|
if (!contentSourceId) {
|
|
716
748
|
throw new Error(`Missing contentSourceId for SSR temp directory (project: ${projectId})`);
|
|
717
749
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
const
|
|
722
|
-
const
|
|
723
|
-
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}`;
|
|
724
756
|
const existingDir = globalTmpDirs.get(cacheKey);
|
|
725
757
|
if (existingDir)
|
|
726
758
|
return existingDir;
|
|
727
|
-
const
|
|
728
|
-
const sourceKey = this.hashCode(contentSourceId);
|
|
729
|
-
const tmpDir = join(baseDir, "veryfront-ssr", projectKey, sourceKey);
|
|
759
|
+
const tmpDir = join(baseCacheDir, projectKey, sourceKey);
|
|
730
760
|
await this.fs.mkdir(tmpDir, { recursive: true });
|
|
731
761
|
globalTmpDirs.set(cacheKey, tmpDir);
|
|
732
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/modules/react-loader/ssr-module-loader/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/modules/react-loader/ssr-module-loader/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -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
|
export interface LoadComponentOptions {
|
|
3
3
|
projectId?: string;
|
|
4
4
|
dev?: boolean;
|
|
@@ -8,6 +8,8 @@ export interface LoadComponentOptions {
|
|
|
8
8
|
ssr?: boolean;
|
|
9
9
|
/** Content source ID for cache isolation (branch name or release ID) */
|
|
10
10
|
contentSourceId?: string;
|
|
11
|
+
/** React version for transforms (from project config) */
|
|
12
|
+
reactVersion?: string;
|
|
11
13
|
}
|
|
12
14
|
export interface ComponentSource {
|
|
13
15
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,sCAAsC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/unified-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"unified-loader.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/react-loader/unified-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKtF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,eAAe,EAAE,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAmCvB"}
|
|
@@ -3,12 +3,14 @@ import { transformToESM } from "../../transforms/esm/index.js";
|
|
|
3
3
|
import { rendererLogger as logger } from "../../utils/index.js";
|
|
4
4
|
import { withSpan } from "../../observability/tracing/otlp-setup.js";
|
|
5
5
|
import { getProjectTmpDir } from "./temp-directory.js";
|
|
6
|
+
import { DEFAULT_REACT_VERSION } from "../../transforms/esm/package-registry.js";
|
|
6
7
|
export function loadComponentsUnified(components, projectDir, adapter, options) {
|
|
7
8
|
return withSpan("modules.loadComponentsUnified", async () => {
|
|
8
9
|
const projectId = options?.projectId ?? projectDir;
|
|
9
10
|
const dev = options?.dev ?? true;
|
|
10
11
|
const moduleServerUrl = options?.moduleServerUrl;
|
|
11
|
-
const
|
|
12
|
+
const reactVersion = options?.reactVersion;
|
|
13
|
+
const transformOpts = { projectId, dev, moduleServerUrl, reactVersion };
|
|
12
14
|
const transformedComponents = await transformAllComponents(components, projectDir, adapter, transformOpts);
|
|
13
15
|
const baseTmp = await getProjectTmpDir(projectId);
|
|
14
16
|
const uniqueTmp = `unified-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
@@ -16,7 +18,7 @@ export function loadComponentsUnified(components, projectDir, adapter, options)
|
|
|
16
18
|
await adapter.fs.mkdir(tmpDir, { recursive: true });
|
|
17
19
|
try {
|
|
18
20
|
await writeComponentFiles(tmpDir, transformedComponents, adapter);
|
|
19
|
-
const entryCode = generateEntryPoint(transformedComponents);
|
|
21
|
+
const entryCode = generateEntryPoint(transformedComponents, reactVersion);
|
|
20
22
|
await adapter.fs.writeFile(join(tmpDir, "entry.js"), entryCode);
|
|
21
23
|
return await importUnifiedComponents(tmpDir, transformedComponents);
|
|
22
24
|
}
|
|
@@ -34,13 +36,14 @@ function transformAllComponents(components, projectDir, adapter, transformOpts)
|
|
|
34
36
|
async function writeComponentFiles(tmpDir, components, adapter) {
|
|
35
37
|
await Promise.all(components.map((comp) => adapter.fs.writeFile(join(tmpDir, `${comp.name}.js`), comp.code)));
|
|
36
38
|
}
|
|
37
|
-
function generateEntryPoint(components) {
|
|
39
|
+
function generateEntryPoint(components, reactVersion) {
|
|
40
|
+
const version = reactVersion ?? DEFAULT_REACT_VERSION;
|
|
38
41
|
const imports = components
|
|
39
42
|
.map((comp) => `import { default as ${comp.name} } from './${comp.name}.js'`)
|
|
40
43
|
.join("\n");
|
|
41
44
|
const exports = components.map((comp) => comp.name).join(", ");
|
|
42
45
|
return `
|
|
43
|
-
import * as React from 'https://esm.sh/react
|
|
46
|
+
import * as React from 'https://esm.sh/react@${version}?target=es2022'
|
|
44
47
|
${imports}
|
|
45
48
|
|
|
46
49
|
export { ${exports} }
|
|
@@ -29,6 +29,8 @@ export interface BatchHandlerOptions {
|
|
|
29
29
|
* When not set, users can import from any directory in the project.
|
|
30
30
|
*/
|
|
31
31
|
allowedImportDirs?: string[];
|
|
32
|
+
/** React version for transforms (from project config) */
|
|
33
|
+
reactVersion?: string;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Handle a batch module request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-batch-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-batch-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AASlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AActE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"module-batch-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-batch-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AASlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AActE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAWD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAyK/G;AAqJD;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAY1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAKrE"}
|
|
@@ -61,7 +61,7 @@ export function handleModuleBatch(req, options) {
|
|
|
61
61
|
headers: { "Content-Type": "text/plain" },
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
const { projectDir, adapter, projectSlug, projectId, branch, dev = false, allowedImportDirs, } = options;
|
|
64
|
+
const { projectDir, adapter, projectSlug, projectId, branch, dev = false, allowedImportDirs, reactVersion, } = options;
|
|
65
65
|
const projectKey = projectId || projectSlug || "default";
|
|
66
66
|
const userAgent = req.headers.get("user-agent") ?? "";
|
|
67
67
|
const isSSR = url.searchParams.get("ssr") === "true" || userAgent.startsWith("Deno/");
|
|
@@ -98,6 +98,7 @@ export function handleModuleBatch(req, options) {
|
|
|
98
98
|
projectSlug,
|
|
99
99
|
branch,
|
|
100
100
|
projectId,
|
|
101
|
+
reactVersion,
|
|
101
102
|
});
|
|
102
103
|
const transformDurationMs = performance.now() - moduleStart;
|
|
103
104
|
if (!code) {
|
|
@@ -207,6 +208,7 @@ async function transformModule(source, sourceFile, projectDir, adapter, options)
|
|
|
207
208
|
projectId: options.projectId ?? projectDir,
|
|
208
209
|
dev: options.dev,
|
|
209
210
|
ssr: options.ssr,
|
|
211
|
+
reactVersion: options.reactVersion,
|
|
210
212
|
});
|
|
211
213
|
if (options.ssr) {
|
|
212
214
|
code = applySSRImportRewrites(code, {
|
|
@@ -23,6 +23,8 @@ export interface ModuleServerOptions {
|
|
|
23
23
|
* When not set, users can import from any directory in the project.
|
|
24
24
|
*/
|
|
25
25
|
allowedImportDirs?: string[];
|
|
26
|
+
/** React version for transforms (from project config) */
|
|
27
|
+
reactVersion?: string;
|
|
26
28
|
}
|
|
27
29
|
/** Serve transformed module at /_vf_modules/* path */
|
|
28
30
|
export declare function serveModule(req: dntShim.Request, options: ModuleServerOptions): Promise<dntShim.Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-server.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAsBtE,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,uBAAuB;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"module-server.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/module-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAsBtE,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,uBAAuB;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CA0SzG;AAqJD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAG7D"}
|
|
@@ -24,7 +24,7 @@ export function serveModule(req, options) {
|
|
|
24
24
|
const url = new URL(req.url);
|
|
25
25
|
return withSpan("modules.serve", async () => {
|
|
26
26
|
const startTime = performance.now();
|
|
27
|
-
const { projectId, projectDir, adapter, dev = true, projectUUID, allowedImportDirs, } = options;
|
|
27
|
+
const { projectId, projectDir, adapter, dev = true, projectUUID, allowedImportDirs, reactVersion, } = options;
|
|
28
28
|
const effectiveProjectId = projectUUID ?? projectId;
|
|
29
29
|
const method = req.method.toUpperCase();
|
|
30
30
|
const isHeadRequest = method === "HEAD";
|
|
@@ -83,7 +83,7 @@ export function serveModule(req, options) {
|
|
|
83
83
|
codeLength: snippetCode.length,
|
|
84
84
|
});
|
|
85
85
|
try {
|
|
86
|
-
let transformedCode = await transformToESM(snippetCode, `_snippets/${hash}.tsx`, projectDir, adapter, { projectId: effectiveProjectId, dev, ssr: isSSR });
|
|
86
|
+
let transformedCode = await transformToESM(snippetCode, `_snippets/${hash}.tsx`, projectDir, adapter, { projectId: effectiveProjectId, dev, ssr: isSSR, reactVersion });
|
|
87
87
|
if (isSSR && transformedCode) {
|
|
88
88
|
transformedCode = applySSRImportRewrites(transformedCode, {
|
|
89
89
|
projectSlug: snippetProjectSlug,
|
|
@@ -151,6 +151,7 @@ export function serveModule(req, options) {
|
|
|
151
151
|
dev,
|
|
152
152
|
ssr: isSSR,
|
|
153
153
|
moduleServerUrl: `http://${url.host}`,
|
|
154
|
+
reactVersion,
|
|
154
155
|
});
|
|
155
156
|
if (isSSR && code) {
|
|
156
157
|
code = applySSRImportRewrites(code, { crossProjectRef: projectRef });
|
|
@@ -218,6 +219,7 @@ export function serveModule(req, options) {
|
|
|
218
219
|
dev,
|
|
219
220
|
ssr: isSSR,
|
|
220
221
|
studioEmbed,
|
|
222
|
+
reactVersion,
|
|
221
223
|
};
|
|
222
224
|
code = await transformToESM(source, sourceFile, projectDir, adapter, transformOpts);
|
|
223
225
|
if (isSSR && code) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-import-rewriter.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/ssr-import-rewriter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssr-import-rewriter.d.ts","sourceRoot":"","sources":["../../../../src/src/modules/server/ssr-import-rewriter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsFD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAK5F"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isDeno } from "../../platform/compat/runtime.js";
|
|
3
|
-
import { getLocalReactPaths } from "../../platform/compat/react-paths.js";
|
|
1
|
+
import { getReactImportMap, getReactVersion } from "../../transforms/esm/package-registry.js";
|
|
4
2
|
function shouldKeepBareSpecifier(specifier) {
|
|
5
3
|
if (specifier.startsWith("npm:") ||
|
|
6
4
|
specifier.startsWith("http://") ||
|
|
@@ -18,24 +16,21 @@ function shouldKeepBareSpecifier(specifier) {
|
|
|
18
16
|
return false;
|
|
19
17
|
}
|
|
20
18
|
function resolveReactForRuntime(specifier, version) {
|
|
21
|
-
// Always rewrite React imports to
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// For Node/Bun: use local node_modules paths
|
|
26
|
-
const reactMap = isDeno ? getDenoNpmReactMap(version) : getLocalReactPaths();
|
|
19
|
+
// Always rewrite React imports to esm.sh URLs for SSR modules.
|
|
20
|
+
// NO npm: specifiers - use esm.sh URLs only for consistent React instance.
|
|
21
|
+
const v = version ?? getReactVersion();
|
|
22
|
+
const reactMap = getReactImportMap(v);
|
|
27
23
|
const mapped = reactMap[specifier];
|
|
28
24
|
if (mapped)
|
|
29
25
|
return mapped;
|
|
30
26
|
// Handle React subpath imports not in the map
|
|
31
|
-
const v = version ?? getReactVersion();
|
|
32
27
|
if (specifier.startsWith("react/")) {
|
|
33
28
|
const subpath = specifier.slice("react/".length);
|
|
34
|
-
return
|
|
29
|
+
return `https://esm.sh/react@${v}/${subpath}?external=react&target=es2022`;
|
|
35
30
|
}
|
|
36
31
|
if (specifier.startsWith("react-dom/")) {
|
|
37
32
|
const subpath = specifier.slice("react-dom/".length);
|
|
38
|
-
return
|
|
33
|
+
return `https://esm.sh/react-dom@${v}/${subpath}?external=react&target=es2022`;
|
|
39
34
|
}
|
|
40
35
|
return null;
|
|
41
36
|
}
|
|
@@ -47,11 +42,8 @@ function rewriteBareImports(code, version) {
|
|
|
47
42
|
return `from "${reactUrl}"`;
|
|
48
43
|
if (shouldKeepBareSpecifier(specifier))
|
|
49
44
|
return `from "${specifier}"`;
|
|
50
|
-
// For third-party packages:
|
|
51
|
-
|
|
52
|
-
return `from "npm:${specifier}"`;
|
|
53
|
-
}
|
|
54
|
-
return `from "https://esm.sh/${specifier}?deps=react@${v},react-dom@${v}&target=es2022"`;
|
|
45
|
+
// For third-party packages: Use esm.sh with external=react
|
|
46
|
+
return `from "https://esm.sh/${specifier}?external=react&target=es2022"`;
|
|
55
47
|
});
|
|
56
48
|
}
|
|
57
49
|
function rewritePathAliases(code, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-adapter.d.ts","sourceRoot":"","sources":["../../../../src/src/react/compat/hooks-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAElD,OAAO,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"hooks-adapter.d.ts","sourceRoot":"","sources":["../../../../src/src/react/compat/hooks-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAElD,OAAO,KAAK,KAAK,MAAM,sCAAsC,CAAC;AAG9D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC;AAMpF,wBAAgB,mBAAmB,IAAI,UAAU,CAUhD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,EAChE,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,KAAK,KAAK,GAC1E,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CA2CnE;AAED,wBAAgB,mBAAmB,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,CAuB5E;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAYrD;AAID,wBAAgB,WAAW,IAAI,MAAM,CAapC;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CAOrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,mBAAmB,CAAC;IAC1C,aAAa,EAAE,OAAO,mBAAmB,CAAC;IAC1C,aAAa,EAAE,OAAO,mBAAmB,CAAC;IAC1C,gBAAgB,EAAE,OAAO,sBAAsB,CAAC;IAChD,KAAK,EAAE,OAAO,WAAW,CAAC;CAC3B;AAkBD;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,eAAO,MAAM,kBAAkB;uBACb,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;uBAG3B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;0BAGxB,MAAM,GAAG,SAAS;CAGtC,CAAC;AAEF,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CAUrB;AAED,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
2
2
|
import { rendererLogger as logger } from "../../utils/index.js";
|
|
3
|
-
import * as React from "react";
|
|
3
|
+
import * as React from "../../../deps/esm.sh/react@19.1.1.js";
|
|
4
4
|
import { getReactVersionInfo, hasFeature } from "./version-detector/index.js";
|
|
5
5
|
function hasReactHook(hookName) {
|
|
6
6
|
return typeof React[hookName] === "function";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
-
import * as React from "react";
|
|
2
|
+
import * as React from "../../../../deps/esm.sh/react@19.1.1.js";
|
|
3
3
|
import type { SSRResponseOptions } from "./types.js";
|
|
4
4
|
export declare function createSSRResponse(element: React.ReactNode, options?: SSRResponseOptions): Promise<dntShim.Response>;
|
|
5
5
|
//# sourceMappingURL=response-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/response-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/response-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,yCAAyC,CAAC;AAIjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAUrD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CA0B3B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export interface ReactDOMServer {
|
|
2
|
-
renderToString: typeof import("react-dom/server").renderToString;
|
|
3
|
-
renderToStaticMarkup: typeof import("react-dom/server").renderToStaticMarkup;
|
|
4
|
-
renderToPipeableStream?: typeof import("react-dom/server").renderToPipeableStream;
|
|
5
|
-
renderToReadableStream?: typeof import("react-dom/server").renderToReadableStream;
|
|
2
|
+
renderToString: typeof import("../../../../deps/esm.sh/react-dom@19.1.1/server.js").renderToString;
|
|
3
|
+
renderToStaticMarkup: typeof import("../../../../deps/esm.sh/react-dom@19.1.1/server.js").renderToStaticMarkup;
|
|
4
|
+
renderToPipeableStream?: typeof import("../../../../deps/esm.sh/react-dom@19.1.1/server.js").renderToPipeableStream;
|
|
5
|
+
renderToReadableStream?: typeof import("../../../../deps/esm.sh/react-dom@19.1.1/server.js").renderToReadableStream;
|
|
6
6
|
}
|
|
7
7
|
export declare function resetReactCache(): void;
|
|
8
|
-
export declare function getProjectReact(): Promise<typeof import("react")>;
|
|
8
|
+
export declare function getProjectReact(): Promise<typeof import("../../../../deps/esm.sh/react@19.1.1.js")>;
|
|
9
9
|
export declare function getReactDOMServer(): Promise<ReactDOMServer>;
|
|
10
10
|
//# sourceMappingURL=server-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/server-loader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"server-loader.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/server-loader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,cAAc,oDAAoD,EAAE,cAAc,CAAC;IACnG,oBAAoB,EAAE,cAAc,oDAAoD,EAAE,oBAAoB,CAAC;IAC/G,sBAAsB,CAAC,EAAE,cAAc,oDAAoD,EAAE,sBAAsB,CAAC;IACpH,sBAAsB,CAAC,EAAE,cAAc,oDAAoD,EAAE,sBAAsB,CAAC;CACrH;AAQD,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,yCAAyC,CAAC,CAAC,CAUnG;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAoB3D"}
|
|
@@ -14,7 +14,7 @@ export function getProjectReact() {
|
|
|
14
14
|
return reactLoadFlight.do("react", async () => {
|
|
15
15
|
if (projectReactCache)
|
|
16
16
|
return projectReactCache;
|
|
17
|
-
const reactModule = await import("react");
|
|
17
|
+
const reactModule = await import("../../../../deps/esm.sh/react@19.1.1.js");
|
|
18
18
|
projectReactCache = (reactModule.default ?? reactModule);
|
|
19
19
|
return projectReactCache;
|
|
20
20
|
});
|
|
@@ -26,7 +26,7 @@ export function getReactDOMServer() {
|
|
|
26
26
|
if (reactDOMServerCache)
|
|
27
27
|
return reactDOMServerCache;
|
|
28
28
|
const versionInfo = getReactVersionInfo();
|
|
29
|
-
const serverModule = await import("react-dom/server");
|
|
29
|
+
const serverModule = await import("../../../../deps/esm.sh/react-dom@19.1.1/server.js");
|
|
30
30
|
const react18Plus = versionInfo.isReact18 || versionInfo.isReact19;
|
|
31
31
|
reactDOMServerCache = {
|
|
32
32
|
renderToString: serverModule.renderToString,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from "react";
|
|
1
|
+
import * as React from "../../../../deps/esm.sh/react@19.1.1.js";
|
|
2
2
|
import type { SSROptions, SSRResult } from "./types.js";
|
|
3
3
|
export declare function renderToStreamAdapter(element: React.ReactNode, options?: SSROptions): Promise<SSRResult>;
|
|
4
4
|
//# sourceMappingURL=stream-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/stream-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"stream-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/stream-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,yCAAyC,CAAC;AAKjE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwMxD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,SAAS,CAAC,CAwBpB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from "react";
|
|
1
|
+
import * as React from "../../../../deps/esm.sh/react@19.1.1.js";
|
|
2
2
|
import type { SSROptions } from "./types.js";
|
|
3
3
|
export declare function renderToStringAdapter(element: React.ReactNode, options?: SSROptions): Promise<string>;
|
|
4
4
|
export declare function renderToStaticMarkupAdapter(element: React.ReactNode, options?: SSROptions): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/string-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"string-renderer.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/compat/ssr-adapter/string-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,yCAAyC,CAAC;AAKjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiB7C,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|