weifuwu 0.85.0 → 0.87.0
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 +56 -45
- package/content/apps/admin.md +55 -0
- package/content/apps/agent-platform.md +35 -0
- package/content/apps/auth.md +49 -0
- package/content/apps/multi.md +44 -0
- package/content/apps/todo.md +51 -0
- package/content/backend/ai.md +28 -0
- package/content/backend/auth.md +20 -0
- package/content/backend/email.md +23 -0
- package/content/backend/graphql.md +23 -0
- package/content/backend/http.md +23 -0
- package/content/backend/limit.md +23 -0
- package/content/backend/middleware.md +17 -0
- package/content/backend/queue.md +23 -0
- package/content/backend/redis.md +26 -0
- package/content/backend/router.md +23 -0
- package/content/backend/schedule.md +23 -0
- package/content/backend/sql.md +27 -0
- package/content/backend/sse.md +26 -0
- package/content/backend/ws.md +26 -0
- package/content/capabilities/app-node.md +21 -0
- package/content/capabilities/data.md +21 -0
- package/content/capabilities/events.md +21 -0
- package/content/capabilities/hooks.md +22 -0
- package/content/capabilities/i18n.md +21 -0
- package/content/capabilities/popup.md +21 -0
- package/content/capabilities/render-only.md +23 -0
- package/content/capabilities/router.md +22 -0
- package/content/capabilities/self-id.md +21 -0
- package/content/capabilities/store.md +21 -0
- package/content/capabilities/theme.md +21 -0
- package/content/capabilities/two-phase.md +21 -0
- package/content/components/accordion.md +50 -0
- package/content/components/actionsheet.md +46 -0
- package/content/components/affix.md +51 -0
- package/content/components/aichat.md +57 -0
- package/content/components/alert.md +52 -0
- package/content/components/alertgroup.md +45 -0
- package/content/components/anchor.md +52 -0
- package/content/components/app.md +37 -0
- package/content/components/approvalcard.md +56 -0
- package/content/components/appshell.md +50 -0
- package/content/components/aspectratio.md +47 -0
- package/content/components/authpage.md +61 -0
- package/content/components/autocomplete-v2.md +40 -0
- package/content/components/autocomplete.md +56 -0
- package/content/components/avatar.md +51 -0
- package/content/components/avatargroup.md +47 -0
- package/content/components/backtop.md +53 -0
- package/content/components/badge.md +55 -0
- package/content/components/breadcrumb.md +49 -0
- package/content/components/button.md +63 -0
- package/content/components/calendar-v2.md +40 -0
- package/content/components/calendar.md +50 -0
- package/content/components/card.md +58 -0
- package/content/components/carousel.md +52 -0
- package/content/components/cascader-v2.md +39 -0
- package/content/components/cascader.md +54 -0
- package/content/components/chart.md +53 -0
- package/content/components/chatinput.md +63 -0
- package/content/components/checkbox.md +51 -0
- package/content/components/checkboxgroup.md +52 -0
- package/content/components/citationcard.md +48 -0
- package/content/components/codeblock.md +48 -0
- package/content/components/codeeditor.md +47 -0
- package/content/components/collapse.md +49 -0
- package/content/components/colorpicker.md +50 -0
- package/content/components/command.md +50 -0
- package/content/components/confirm.md +57 -0
- package/content/components/contextmenu.md +48 -0
- package/content/components/copybutton.md +51 -0
- package/content/components/datepicker.md +52 -0
- package/content/components/descriptions-v2.md +39 -0
- package/content/components/descriptions.md +52 -0
- package/content/components/diffview-v2.md +39 -0
- package/content/components/diffview.md +50 -0
- package/content/components/divider.md +48 -0
- package/content/components/drawer.md +55 -0
- package/content/components/dropdown.md +53 -0
- package/content/components/editor.md +49 -0
- package/content/components/emptystate.md +51 -0
- package/content/components/exportcsv.md +38 -0
- package/content/components/field.md +54 -0
- package/content/components/filepreview-office.md +37 -0
- package/content/components/filepreview.md +49 -0
- package/content/components/filetree.md +56 -0
- package/content/components/fileupload-v2.md +39 -0
- package/content/components/fileupload.md +57 -0
- package/content/components/floatbutton.md +52 -0
- package/content/components/form-v2.md +41 -0
- package/content/components/form.md +60 -0
- package/content/components/grid.md +51 -0
- package/content/components/highlight-v2.md +39 -0
- package/content/components/highlight.md +46 -0
- package/content/components/hovercard.md +51 -0
- package/content/components/icon.md +50 -0
- package/content/components/imagecropper.md +45 -0
- package/content/components/img.md +56 -0
- package/content/components/infinitescroll-v2.md +40 -0
- package/content/components/infinitescroll.md +54 -0
- package/content/components/input.md +65 -0
- package/content/components/inputnumber.md +58 -0
- package/content/components/inview.md +56 -0
- package/content/components/jsonschemaform.md +53 -0
- package/content/components/jsonviewer-v2.md +39 -0
- package/content/components/jsonviewer.md +49 -0
- package/content/components/kanban.md +46 -0
- package/content/components/label.md +48 -0
- package/content/components/layout.md +54 -0
- package/content/components/layoutcontent.md +43 -0
- package/content/components/layoutheader.md +43 -0
- package/content/components/layoutsider.md +43 -0
- package/content/components/link.md +52 -0
- package/content/components/list.md +44 -0
- package/content/components/loading.md +45 -0
- package/content/components/logviewer-v2.md +39 -0
- package/content/components/logviewer.md +53 -0
- package/content/components/markdown.md +51 -0
- package/content/components/markdowneditor.md +47 -0
- package/content/components/math.md +42 -0
- package/content/components/mentions-v2.md +39 -0
- package/content/components/mentions.md +52 -0
- package/content/components/menu.md +56 -0
- package/content/components/menubar.md +44 -0
- package/content/components/messagebubble.md +50 -0
- package/content/components/modal.md +59 -0
- package/content/components/navmenu.md +47 -0
- package/content/components/notification.md +51 -0
- package/content/components/pageheader.md +53 -0
- package/content/components/pagination.md +49 -0
- package/content/components/paragraph.md +45 -0
- package/content/components/passwordinput.md +57 -0
- package/content/components/pininput-v2.md +39 -0
- package/content/components/pininput.md +50 -0
- package/content/components/pipeline.md +49 -0
- package/content/components/popconfirm.md +58 -0
- package/content/components/popover.md +61 -0
- package/content/components/progressbar.md +50 -0
- package/content/components/prompttemplate.md +49 -0
- package/content/components/qrcode.md +50 -0
- package/content/components/radiogroup.md +53 -0
- package/content/components/rate.md +53 -0
- package/content/components/reasoningblock.md +47 -0
- package/content/components/relationgraph.md +52 -0
- package/content/components/resizable.md +53 -0
- package/content/components/result.md +49 -0
- package/content/components/scrollbar.md +49 -0
- package/content/components/searchinput.md +51 -0
- package/content/components/segmentedcontrol.md +59 -0
- package/content/components/select-searchable.md +47 -0
- package/content/components/select.md +66 -0
- package/content/components/sessionlist.md +52 -0
- package/content/components/sheetgrid.md +44 -0
- package/content/components/skeleton.md +55 -0
- package/content/components/slidecanvas.md +44 -0
- package/content/components/slider.md +62 -0
- package/content/components/sortablelist.md +39 -0
- package/content/components/space.md +52 -0
- package/content/components/sparkline.md +52 -0
- package/content/components/statcard-countdown.md +39 -0
- package/content/components/statcard.md +56 -0
- package/content/components/steps.md +48 -0
- package/content/components/switch.md +50 -0
- package/content/components/tabbar.md +45 -0
- package/content/components/table-v2.md +40 -0
- package/content/components/table.md +66 -0
- package/content/components/tabs.md +56 -0
- package/content/components/tag.md +51 -0
- package/content/components/tagsinput-v2.md +39 -0
- package/content/components/tagsinput.md +54 -0
- package/content/components/text.md +45 -0
- package/content/components/textarea.md +57 -0
- package/content/components/themeswitch.md +69 -0
- package/content/components/timeline.md +50 -0
- package/content/components/title.md +45 -0
- package/content/components/toast.md +52 -0
- package/content/components/toggle-togglegroup.md +52 -0
- package/content/components/togglegroup.md +47 -0
- package/content/components/toolcallcard.md +51 -0
- package/content/components/tooltip.md +50 -0
- package/content/components/tour.md +50 -0
- package/content/components/transfer.md +52 -0
- package/content/components/tree-v2.md +39 -0
- package/content/components/tree.md +59 -0
- package/content/components/treeselect.md +54 -0
- package/content/components/typography.md +51 -0
- package/content/components/videoplayer.md +52 -0
- package/content/components/virtuallist.md +52 -0
- package/content/components/virtualtable-v2.md +39 -0
- package/content/components/virtualtable.md +55 -0
- package/content/components/watermark.md +53 -0
- package/content/components/wave.md +43 -0
- package/content/guides/ai-chat-family.md +24 -0
- package/content/guides/choose.md +67 -0
- package/content/guides/component-model.md +32 -0
- package/content/guides/component-standards.md +123 -0
- package/{docs/components.md → content/guides/components-guide.md} +153 -7
- package/{docs/custom-components.md → content/guides/custom-component.md} +70 -55
- package/{docs/data.md → content/guides/data-guide.md} +5 -2
- package/content/guides/file-preview-family.md +18 -0
- package/{docs → content/guides}/frontend.md +122 -52
- package/content/guides/layout-choice.md +64 -0
- package/{docs/layout.md → content/guides/layout-guide.md} +12 -8
- package/{docs/frontend-middleware.md → content/guides/middleware.md} +34 -3
- package/{docs/mobile.md → content/guides/mobile-guide.md} +20 -24
- package/content/guides/page-building.md +98 -0
- package/content/guides/production.md +37 -0
- package/content/guides/quality.md +60 -0
- package/{docs/realtime.md → content/guides/realtime-guide.md} +6 -3
- package/content/guides/render-only.md +44 -0
- package/{docs/saas.md → content/guides/saas-guide.md} +8 -5
- package/{docs/server.md → content/guides/server-guide.md} +5 -2
- package/content/guides/start.md +41 -0
- package/{docs → content/guides}/styling.md +5 -1
- package/{docs/frontend-ui-dom.md → content/guides/ui-dom-guide.md} +7 -1
- package/content/index.json +4344 -0
- package/content/index.md +181 -0
- package/content/layout/align.md +20 -0
- package/content/layout/anchor.md +19 -0
- package/content/layout/app-shell.md +23 -0
- package/content/layout/border.md +20 -0
- package/content/layout/center.md +19 -0
- package/content/layout/cluster.md +19 -0
- package/content/layout/container.md +19 -0
- package/content/layout/fill.md +19 -0
- package/content/layout/grid.md +19 -0
- package/content/layout/hidden.md +22 -0
- package/content/layout/layer.md +19 -0
- package/content/layout/position.md +22 -0
- package/content/layout/row.md +23 -0
- package/content/layout/safe-area.md +20 -0
- package/content/layout/scroll.md +21 -0
- package/content/layout/spacing.md +22 -0
- package/content/layout/split.md +19 -0
- package/content/layout/stack.md +19 -0
- package/content/layout/surface.md +23 -0
- package/content/layout/text.md +22 -0
- package/content/patterns/app-shell.md +34 -0
- package/content/patterns/dashboard.md +36 -0
- package/content/patterns/data-screen.md +30 -0
- package/content/patterns/detail-page.md +31 -0
- package/content/patterns/docs.md +34 -0
- package/content/patterns/focus-task.md +34 -0
- package/content/patterns/landing.md +35 -0
- package/content/patterns/list-page.md +32 -0
- package/content/patterns/mobile.md +31 -0
- package/content/patterns/settings-page.md +33 -0
- package/content/patterns/workspace.md +32 -0
- package/dist/cli/apps-typecheck.test.d.ts +11 -0
- package/dist/cli/docs.d.ts +2 -0
- package/dist/cli/docs.mjs +10961 -0
- package/dist/cli/home-flash.test.d.ts +1 -0
- package/dist/{components → client/components}/Accordion/Accordion.d.ts +1 -1
- package/dist/client/components/ActionSheet/ActionSheet.d.ts +37 -0
- package/dist/{components → client/components}/Affix/Affix.d.ts +1 -1
- package/dist/{components → client/components}/AiChat/AiChat.d.ts +3 -3
- package/dist/{components → client/components}/Alert/Alert.d.ts +1 -1
- package/dist/{components → client/components}/AlertGroup/AlertGroup.d.ts +1 -1
- package/dist/{components → client/components}/Anchor/Anchor.d.ts +1 -1
- package/dist/client/components/AppShell/AppShell.d.ts +55 -0
- package/dist/{components → client/components}/ApprovalCard/ApprovalCard.d.ts +2 -2
- package/dist/{components → client/components}/AspectRatio/AspectRatio.d.ts +1 -1
- package/dist/{components → client/components}/AuthPage/AuthPage.d.ts +2 -2
- package/dist/{components → client/components}/AutoComplete/AutoComplete.d.ts +1 -1
- package/dist/{components → client/components}/Avatar/Avatar.d.ts +1 -1
- package/dist/{components → client/components}/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/{components → client/components}/BackTop/BackTop.d.ts +1 -1
- package/dist/{components → client/components}/Badge/Badge.d.ts +1 -1
- package/dist/{components → client/components}/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/dist/{components → client/components}/Button/Button.d.ts +1 -1
- package/dist/{components → client/components}/Calendar/Calendar.d.ts +1 -1
- package/dist/{components → client/components}/Card/Card.d.ts +1 -1
- package/dist/{components → client/components}/Carousel/Carousel.d.ts +1 -1
- package/dist/{components → client/components}/Cascader/Cascader.d.ts +1 -1
- package/dist/{components → client/components}/Chart/Chart.d.ts +1 -1
- package/dist/{components → client/components}/Chart/chart-utils.d.ts +5 -1
- package/dist/{components → client/components}/ChatInput/ChatInput.d.ts +7 -7
- package/dist/{components → client/components}/Checkbox/Checkbox.d.ts +1 -1
- package/dist/{components → client/components}/CheckboxGroup/CheckboxGroup.d.ts +1 -1
- package/dist/{components → client/components}/CitationCard/CitationCard.d.ts +3 -3
- package/dist/{components → client/components}/CodeBlock/CodeBlock.d.ts +1 -1
- package/dist/client/components/CodeEditor/CodeEditor.d.ts +18 -0
- package/dist/{components → client/components}/Collapse/Collapse.d.ts +1 -1
- package/dist/{components → client/components}/ColorPicker/ColorPicker.d.ts +1 -1
- package/dist/{components → client/components}/Command/Command.d.ts +1 -1
- package/dist/{components → client/components}/Confirm/Confirm.d.ts +2 -7
- package/dist/{components → client/components}/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/{components → client/components}/CopyButton/CopyButton.d.ts +1 -1
- package/dist/{components → client/components}/DatePicker/DatePicker.d.ts +2 -2
- package/dist/{components → client/components}/Descriptions/Descriptions.d.ts +1 -1
- package/dist/{components → client/components}/DiffView/DiffView.d.ts +1 -1
- package/dist/{components → client/components}/Divider/Divider.d.ts +1 -1
- package/dist/{components → client/components}/Drawer/Drawer.d.ts +1 -1
- package/dist/{components → client/components}/Dropdown/Dropdown.d.ts +1 -1
- package/dist/client/components/Editor/Editor.d.ts +14 -0
- package/dist/client/components/Editor/edit-events.d.ts +27 -0
- package/dist/client/components/Editor/model/apply.d.ts +23 -0
- package/dist/client/components/Editor/model/diff.d.ts +25 -0
- package/dist/client/components/Editor/model/dom.d.ts +27 -0
- package/dist/client/components/Editor/model/history.d.ts +21 -0
- package/dist/client/components/Editor/model/html.d.ts +16 -0
- package/dist/client/components/Editor/model/inverse.d.ts +20 -0
- package/dist/client/components/Editor/model/types.d.ts +116 -0
- package/dist/client/components/Editor/tools/table.d.ts +10 -0
- package/dist/{components → client/components}/Editor/tools/toolbar.d.ts +2 -2
- package/dist/client/components/Editor/tools/types.d.ts +40 -0
- package/dist/{components → client/components}/EmptyState/EmptyState.d.ts +1 -1
- package/dist/client/components/ExportCSV/ExportCSV.d.ts +30 -0
- package/dist/{components → client/components}/Field/Field.d.ts +1 -1
- package/dist/client/components/FilePreview/FilePreview.d.ts +42 -0
- package/dist/client/components/FilePreview/markdown.d.ts +23 -0
- package/dist/client/components/FileTree/FileTree.d.ts +57 -0
- package/dist/{components → client/components}/FileUpload/FileUpload.d.ts +1 -1
- package/dist/{components → client/components}/FloatButton/FloatButton.d.ts +1 -1
- package/dist/{components → client/components}/Form/Form.d.ts +1 -1
- package/dist/{components → client/components}/Grid/Grid.d.ts +1 -1
- package/dist/{components → client/components}/Highlight/Highlight.d.ts +1 -1
- package/dist/{components → client/components}/HoverCard/HoverCard.d.ts +5 -4
- package/dist/{components → client/components}/Icon/Icon.d.ts +2 -2
- package/dist/client/components/ImageCropper/ImageCropper.d.ts +17 -0
- package/dist/{components → client/components}/Img/Img.d.ts +1 -1
- package/dist/{components → client/components}/InView/InView.d.ts +1 -1
- package/dist/{components → client/components}/InfiniteScroll/InfiniteScroll.d.ts +1 -1
- package/dist/{components → client/components}/Input/Input.d.ts +1 -1
- package/dist/{components → client/components}/InputNumber/InputNumber.d.ts +1 -1
- package/dist/{components → client/components}/JSONViewer/JSONViewer.d.ts +1 -1
- package/dist/{components → client/components}/JsonSchemaForm/JsonSchemaForm.d.ts +3 -3
- package/dist/{components → client/components}/Kanban/Kanban.d.ts +1 -1
- package/dist/{components → client/components}/Label/Label.d.ts +1 -1
- package/dist/{components → client/components}/Layout/Layout.d.ts +1 -1
- package/dist/{components → client/components}/Link/Link.d.ts +1 -1
- package/dist/{components → client/components}/List/List.d.ts +1 -1
- package/dist/{components → client/components}/Loading/Loading.d.ts +1 -1
- package/dist/{components → client/components}/LogViewer/LogViewer.d.ts +1 -1
- package/dist/{components → client/components}/Markdown/Markdown.d.ts +1 -1
- package/dist/client/components/MarkdownEditor/MarkdownEditor.d.ts +18 -0
- package/dist/client/components/Math/Math.d.ts +15 -0
- package/dist/{components → client/components}/Mentions/Mentions.d.ts +1 -1
- package/dist/{components → client/components}/Menu/Menu.d.ts +1 -1
- package/dist/{components → client/components}/Menubar/Menubar.d.ts +1 -1
- package/dist/{components → client/components}/MessageBubble/MessageBubble.d.ts +1 -1
- package/dist/{components → client/components}/Modal/Modal.d.ts +1 -1
- package/dist/{components → client/components}/NavMenu/NavMenu.d.ts +2 -2
- package/dist/{components → client/components}/Notification/Notification.d.ts +7 -2
- package/dist/client/components/OfficeEditor/ai/ai-bridge.d.ts +39 -0
- package/dist/client/components/OfficeEditor/model/apply.d.ts +25 -0
- package/dist/client/components/OfficeEditor/model/types.d.ts +224 -0
- package/dist/{components → client/components}/PageHeader/PageHeader.d.ts +1 -1
- package/dist/{components → client/components}/Pagination/Pagination.d.ts +1 -1
- package/dist/{components → client/components}/PasswordInput/PasswordInput.d.ts +1 -1
- package/dist/{components → client/components}/PinInput/PinInput.d.ts +1 -1
- package/dist/{components → client/components}/Pipeline/Pipeline.d.ts +1 -1
- package/dist/{components → client/components}/Popconfirm/Popconfirm.d.ts +2 -2
- package/dist/{components → client/components}/Popover/Popover.d.ts +5 -4
- package/dist/{components → client/components}/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/client/components/PromptTemplate/PromptTemplate.d.ts +37 -0
- package/dist/{components → client/components}/QRCode/QRCode.d.ts +1 -1
- package/dist/{components → client/components}/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/{components → client/components}/Rate/Rate.d.ts +1 -1
- package/dist/{components → client/components}/ReasoningBlock/ReasoningBlock.d.ts +3 -3
- package/dist/client/components/RelationGraph/RelationGraph.d.ts +59 -0
- package/dist/{components → client/components}/Resizable/Resizable.d.ts +1 -1
- package/dist/{components → client/components}/Result/Result.d.ts +1 -1
- package/dist/{components → client/components}/Scrollbar/Scrollbar.d.ts +1 -1
- package/dist/{components → client/components}/SearchInput/SearchInput.d.ts +1 -1
- package/dist/{components → client/components}/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/{components → client/components}/Select/Select.d.ts +1 -1
- package/dist/{components → client/components}/SessionList/SessionList.d.ts +3 -3
- package/dist/client/components/SheetGrid/SheetGrid.d.ts +30 -0
- package/dist/{components → client/components}/Skeleton/Skeleton.d.ts +1 -1
- package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +28 -0
- package/dist/client/components/Slider/Slider.d.ts +27 -0
- package/dist/client/components/SortableList/SortableList.d.ts +23 -0
- package/dist/{components → client/components}/Space/Space.d.ts +1 -1
- package/dist/{components → client/components}/Sparkline/Sparkline.d.ts +1 -1
- package/dist/{components → client/components}/StatCard/StatCard.d.ts +1 -1
- package/dist/{components → client/components}/Steps/Steps.d.ts +1 -1
- package/dist/{components → client/components}/Switch/Switch.d.ts +1 -1
- package/dist/client/components/TabBar/TabBar.d.ts +35 -0
- package/dist/{components → client/components}/Table/Table.d.ts +7 -1
- package/dist/client/components/Tabs/Tabs.d.ts +22 -0
- package/dist/{components → client/components}/Tag/Tag.d.ts +1 -1
- package/dist/{components → client/components}/TagsInput/TagsInput.d.ts +1 -1
- package/dist/{components → client/components}/Textarea/Textarea.d.ts +1 -1
- package/dist/{components → client/components}/ThemeSwitch/ThemeSwitch.d.ts +1 -1
- package/dist/{components → client/components}/Timeline/Timeline.d.ts +1 -1
- package/dist/{components → client/components}/Toast/Toast.d.ts +1 -1
- package/dist/{components → client/components}/ToggleGroup/ToggleGroup.d.ts +1 -1
- package/dist/{components → client/components}/ToolCallCard/ToolCallCard.d.ts +2 -2
- package/dist/{components → client/components}/Tooltip/Tooltip.d.ts +4 -3
- package/dist/{components → client/components}/Tour/Tour.d.ts +1 -1
- package/dist/{components → client/components}/Transfer/Transfer.d.ts +1 -1
- package/dist/{components → client/components}/Tree/Tree.d.ts +5 -1
- package/dist/{components → client/components}/TreeSelect/TreeSelect.d.ts +5 -1
- package/dist/{components → client/components}/Typography/Typography.d.ts +1 -1
- package/dist/client/components/VideoPlayer/VideoPlayer.d.ts +25 -0
- package/dist/{components → client/components}/VirtualList/VirtualList.d.ts +1 -1
- package/dist/{components → client/components}/VirtualTable/VirtualTable.d.ts +1 -1
- package/dist/{components → client/components}/Watermark/Watermark.d.ts +1 -1
- package/dist/client/components/Wave/Wave.d.ts +15 -0
- package/dist/{components → client/components}/index.d.ts +48 -2
- package/dist/client/components/index.js +57 -0
- package/dist/{components → client/components}/style.css +3554 -1896
- package/dist/{layout → client/layout}/weifuwu-layout.css +60 -6
- package/dist/client/office/docx.d.ts +33 -0
- package/dist/client/office/pptx.d.ts +24 -0
- package/dist/client/office/xlsx.d.ts +25 -0
- package/dist/client/office/xml-serialize.d.ts +18 -0
- package/dist/client/office/xml.d.ts +21 -0
- package/dist/client/office/zip.d.ts +21 -0
- package/dist/client/vdom/browser/Browser.d.ts +73 -0
- package/dist/client/vdom/browser/create-client-browser.d.ts +11 -0
- package/dist/client/vdom/commands.d.ts +19 -0
- package/dist/client/vdom/context/UIContext.d.ts +61 -0
- package/dist/client/vdom/context/data.d.ts +17 -0
- package/dist/client/vdom/core/async-guard.d.ts +20 -0
- package/dist/client/vdom/core/build.d.ts +36 -0
- package/dist/client/vdom/core/command/create.d.ts +25 -0
- package/dist/client/vdom/core/command/index.d.ts +15 -0
- package/dist/client/vdom/core/command/insert.d.ts +32 -0
- package/dist/client/vdom/core/command/lifecycle.d.ts +47 -0
- package/dist/client/vdom/core/command/props.d.ts +22 -0
- package/dist/client/vdom/core/diff/attrs.d.ts +10 -0
- package/dist/client/vdom/core/diff/children.d.ts +29 -0
- package/dist/client/vdom/core/diff/cleanup.d.ts +44 -0
- package/dist/client/vdom/core/diff/index.d.ts +22 -0
- package/dist/client/vdom/core/diff/output.d.ts +30 -0
- package/dist/client/vdom/core/diff/same.d.ts +22 -0
- package/dist/client/vdom/core/field/attributes.d.ts +15 -0
- package/dist/client/vdom/core/field/events.d.ts +54 -0
- package/dist/client/vdom/core/field/index.d.ts +19 -0
- package/dist/client/vdom/core/field/key.d.ts +16 -0
- package/dist/client/vdom/core/field/props.d.ts +15 -0
- package/dist/client/vdom/core/field/ref.d.ts +38 -0
- package/dist/client/vdom/core/field/style.d.ts +17 -0
- package/dist/client/vdom/core/node/children.d.ts +20 -0
- package/dist/client/vdom/core/node/component.d.ts +93 -0
- package/dist/client/vdom/core/node/fragment.d.ts +14 -0
- package/dist/client/vdom/core/node/hole.d.ts +22 -0
- package/dist/client/vdom/core/node/index.d.ts +35 -0
- package/dist/client/vdom/core/node/keyed.d.ts +64 -0
- package/dist/client/vdom/core/node/native.d.ts +20 -0
- package/dist/client/vdom/core/node/portal.d.ts +11 -0
- package/dist/client/vdom/core/patch/fields.d.ts +15 -0
- package/dist/client/vdom/core/patch/index.d.ts +51 -0
- package/dist/client/vdom/core/patch/processors.d.ts +75 -0
- package/dist/client/vdom/core/patch/state-machine.d.ts +38 -0
- package/dist/client/vdom/core/patch/verify.d.ts +17 -0
- package/dist/client/vdom/core/router.d.ts +31 -0
- package/dist/client/vdom/core/serve.d.ts +75 -0
- package/dist/client/vdom/core/ssr/absorb.d.ts +53 -0
- package/dist/client/vdom/core/ssr/html.d.ts +32 -0
- package/dist/client/vdom/core/ssr/index.d.ts +25 -0
- package/dist/client/vdom/core/transform/component.d.ts +23 -0
- package/dist/client/vdom/core/transform/element.d.ts +21 -0
- package/dist/client/vdom/core/transform/fragment.d.ts +21 -0
- package/dist/client/vdom/core/transform/hole.d.ts +13 -0
- package/dist/client/vdom/core/transform/index.d.ts +46 -0
- package/dist/client/vdom/core/transform/states.d.ts +22 -0
- package/dist/client/vdom/core/transform/table.d.ts +28 -0
- package/dist/client/vdom/core/transform/text.d.ts +10 -0
- package/dist/client/vdom/core/vnode.d.ts +45 -0
- package/dist/client/vdom/dev/effect-guard.d.ts +8 -0
- package/dist/client/vdom/hooks/ai-stream.d.ts +46 -0
- package/dist/client/vdom/hooks/basic.d.ts +42 -0
- package/dist/client/vdom/hooks/chat.d.ts +91 -0
- package/dist/client/vdom/hooks/controlled.d.ts +27 -0
- package/dist/client/vdom/hooks/drag-media.d.ts +52 -0
- package/dist/client/vdom/hooks/env.d.ts +119 -0
- package/dist/client/vdom/hooks/input.d.ts +43 -0
- package/dist/client/vdom/hooks/observe.d.ts +60 -0
- package/dist/client/vdom/hooks/popup-manager.d.ts +92 -0
- package/dist/client/vdom/hooks/popup.d.ts +52 -0
- package/dist/client/vdom/hooks/stable.d.ts +45 -0
- package/dist/client/vdom/index.d.ts +67 -0
- package/dist/client/vdom/index.js +8 -0
- package/dist/client/vdom/jsx-runtime.d.ts +28 -0
- package/dist/client/vdom/jsx-runtime.js +1 -0
- package/dist/client/vdom/middlewares/api.d.ts +38 -0
- package/dist/client/vdom/middlewares/auth-i18n.d.ts +66 -0
- package/dist/client/vdom/middlewares/ws.d.ts +37 -0
- package/dist/client/vdom/store.d.ts +49 -0
- package/dist/client/vdom/testing.d.ts +46 -0
- package/dist/client/vdom/testing.js +2 -0
- package/dist/dev/index.d.ts +12 -0
- package/dist/dev/index.js +4 -4
- package/dist/{ai → server/ai}/contracts.d.ts +1 -1
- package/dist/{ai → server/ai}/index.d.ts +2 -2
- package/dist/{ai → server/ai}/types.d.ts +1 -1
- package/dist/{core → server/core}/router.d.ts +2 -4
- package/dist/{db → server/db}/contracts.d.ts +1 -1
- package/dist/server/db/postgres-server.d.ts +37 -0
- package/dist/server/db/redis-server.d.ts +32 -0
- package/dist/server/db/server.d.ts +30 -0
- package/dist/server/db/test-servers.d.ts +21 -0
- package/dist/{email → server/email}/contracts.d.ts +1 -1
- package/dist/{index.js → server/index.js} +3147 -2462
- package/dist/{ui → server/ui}/index.d.ts +2 -2
- package/dist/{user → server/user}/token.d.ts +1 -1
- package/dist/shared/router/trie.d.ts +61 -0
- package/docs/components-map.md +16 -4
- package/docs/style-guide.md +14 -2
- package/examples/apps/admin/README.md +23 -0
- package/examples/apps/admin/api.ts +27 -0
- package/examples/apps/admin/app.tsx +144 -0
- package/examples/apps/admin/main.tsx +8 -0
- package/examples/apps/admin/server.ts +37 -0
- package/examples/apps/auth/README.md +23 -0
- package/examples/apps/auth/api.ts +49 -0
- package/examples/apps/auth/app.tsx +137 -0
- package/examples/apps/auth/main.tsx +8 -0
- package/examples/apps/auth/server.ts +37 -0
- package/examples/apps/multi/README.md +23 -0
- package/examples/apps/multi/app.tsx +83 -0
- package/examples/apps/multi/main.tsx +8 -0
- package/examples/apps/multi/server.ts +33 -0
- package/examples/apps/todo/README.md +23 -0
- package/examples/apps/todo/api.ts +26 -0
- package/examples/apps/todo/app.tsx +128 -0
- package/examples/apps/todo/main.tsx +9 -0
- package/examples/apps/todo/server.ts +39 -0
- package/examples/hello-world/README.md +9 -0
- package/examples/hello-world/client.ts +14 -0
- package/examples/hello-world/routes.tsx +26 -0
- package/examples/hello-world/server.ts +46 -0
- package/examples/patterns/AppShell.tsx +224 -0
- package/examples/patterns/Dashboard.tsx +153 -0
- package/examples/patterns/DataScreen.tsx +104 -0
- package/examples/patterns/DetailPage.tsx +79 -0
- package/examples/patterns/Docs.tsx +105 -0
- package/examples/patterns/FocusTask.tsx +67 -0
- package/examples/patterns/Landing.tsx +90 -0
- package/examples/patterns/ListPage.tsx +77 -0
- package/examples/patterns/Mobile.tsx +154 -0
- package/examples/patterns/SettingsPage.tsx +98 -0
- package/examples/patterns/SplitWorkspace.tsx +113 -0
- package/package.json +61 -29
- package/dist/components/Editor/Editor.d.ts +0 -13
- package/dist/components/Editor/tools/format.d.ts +0 -11
- package/dist/components/Editor/tools/table.d.ts +0 -7
- package/dist/components/Editor/tools/types.d.ts +0 -15
- package/dist/components/Slider/Slider.d.ts +0 -19
- package/dist/components/Tabs/Tabs.d.ts +0 -12
- package/dist/components/index.js +0 -15
- package/dist/ui-dom/Confirm.d.ts +0 -8
- package/dist/ui-dom/Notification.d.ts +0 -8
- package/dist/ui-dom/Toast.d.ts +0 -8
- package/dist/ui-dom/ai.d.ts +0 -59
- package/dist/ui-dom/browser.d.ts +0 -10
- package/dist/ui-dom/debug.d.ts +0 -21
- package/dist/ui-dom/hooks/chat.d.ts +0 -11
- package/dist/ui-dom/hooks/events.d.ts +0 -30
- package/dist/ui-dom/hooks/external.d.ts +0 -20
- package/dist/ui-dom/hooks/index.d.ts +0 -29
- package/dist/ui-dom/hooks/input.d.ts +0 -33
- package/dist/ui-dom/hooks/media.d.ts +0 -17
- package/dist/ui-dom/hooks/popup.d.ts +0 -30
- package/dist/ui-dom/hooks/stable.d.ts +0 -35
- package/dist/ui-dom/hooks/types.d.ts +0 -77
- package/dist/ui-dom/i18n.d.ts +0 -31
- package/dist/ui-dom/index.d.ts +0 -47
- package/dist/ui-dom/index.js +0 -41
- package/dist/ui-dom/jsx-runtime.d.ts +0 -4
- package/dist/ui-dom/jsx-runtime.js +0 -1
- package/dist/ui-dom/locale/en_US.d.ts +0 -55
- package/dist/ui-dom/locale/zh_CN.d.ts +0 -55
- package/dist/ui-dom/middleware/api.d.ts +0 -91
- package/dist/ui-dom/middleware/auth.d.ts +0 -30
- package/dist/ui-dom/middleware/ws.d.ts +0 -33
- package/dist/ui-dom/motion.d.ts +0 -8
- package/dist/ui-dom/popup-tracker.d.ts +0 -36
- package/dist/ui-dom/popup.d.ts +0 -42
- package/dist/ui-dom/store.d.ts +0 -24
- package/dist/ui-dom/testing.d.ts +0 -68
- package/dist/ui-dom/testing.js +0 -7
- package/dist/ui-dom/types.d.ts +0 -632
- package/dist/ui-dom/use-chat.d.ts +0 -95
- package/dist/ui-dom/vdom3/README.d.ts +0 -32
- package/dist/ui-dom/vdom3/app.d.ts +0 -20
- package/dist/ui-dom/vdom3/audit.d.ts +0 -29
- package/dist/ui-dom/vdom3/build.d.ts +0 -20
- package/dist/ui-dom/vdom3/commands.d.ts +0 -21
- package/dist/ui-dom/vdom3/comp-index.d.ts +0 -18
- package/dist/ui-dom/vdom3/delegate.d.ts +0 -48
- package/dist/ui-dom/vdom3/events.d.ts +0 -17
- package/dist/ui-dom/vdom3/index.d.ts +0 -42
- package/dist/ui-dom/vdom3/jsx.d.ts +0 -32
- package/dist/ui-dom/vdom3/record.d.ts +0 -16
- package/dist/ui-dom/vdom3/registry.d.ts +0 -30
- package/dist/ui-dom/vdom3/render.d.ts +0 -39
- package/dist/ui-dom/vdom3/replay.d.ts +0 -28
- package/dist/ui-dom/vdom3/root.d.ts +0 -24
- package/dist/ui-dom/vdom3/router.d.ts +0 -31
- package/dist/ui-dom/vdom3/scheduler.d.ts +0 -23
- package/dist/ui-dom/vdom3/ssr.d.ts +0 -27
- package/dist/ui-dom/vdom3/sync.d.ts +0 -22
- package/dist/ui-dom/vdom3/types.d.ts +0 -173
- package/dist/ui-dom/vdom3/ui.d.ts +0 -16
- package/dist/ui-dom/vdom3.js +0 -41
- package/dist/ui-dom/vnode.d.ts +0 -13
- /package/dist/{make-executable-schema.test.d.ts → cli/content-sync.test.d.ts} +0 -0
- /package/dist/{ui-dom/testing.test.d.ts → cli/docs-cli.test.d.ts} +0 -0
- /package/dist/{components → client/components}/CodeBlock/highlight.d.ts +0 -0
- /package/dist/{components → client/components}/DatePicker/calendar-utils.d.ts +0 -0
- /package/dist/{components → client/components}/DiffView/diff-utils.d.ts +0 -0
- /package/dist/{components → client/components}/Markdown/parser.d.ts +0 -0
- /package/dist/{components → client/components}/Pipeline/dag-utils.d.ts +0 -0
- /package/dist/{components → client/components}/QRCode/qr.d.ts +0 -0
- /package/dist/{components → client/components}/Sparkline/sparkline-utils.d.ts +0 -0
- /package/dist/{ai → server/ai}/agent.d.ts +0 -0
- /package/dist/{ai → server/ai}/client.d.ts +0 -0
- /package/dist/{ai → server/ai}/sse.d.ts +0 -0
- /package/dist/{core → server/core}/serve.d.ts +0 -0
- /package/dist/{core → server/core}/ws.d.ts +0 -0
- /package/dist/{db → server/db}/errors.d.ts +0 -0
- /package/dist/{db → server/db}/memory-redis.d.ts +0 -0
- /package/dist/{db → server/db}/memory-sql.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/connection.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/pool.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/protocol.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/schema.d.ts +0 -0
- /package/dist/{db → server/db}/query-builder.d.ts +0 -0
- /package/dist/{db → server/db}/query.d.ts +0 -0
- /package/dist/{db → server/db}/redis/client.d.ts +0 -0
- /package/dist/{db → server/db}/redis/commands.d.ts +0 -0
- /package/dist/{db → server/db}/redis/connection.d.ts +0 -0
- /package/dist/{db → server/db}/redis/pipeline.d.ts +0 -0
- /package/dist/{db → server/db}/redis/pool.d.ts +0 -0
- /package/dist/{db → server/db}/redis/resp.d.ts +0 -0
- /package/dist/{db → server/db}/redis/subscriber.d.ts +0 -0
- /package/dist/{db → server/db}/sql-parser.d.ts +0 -0
- /package/dist/{email → server/email}/index.d.ts +0 -0
- /package/dist/{email → server/email}/smtp.d.ts +0 -0
- /package/dist/{graphql.d.ts → server/graphql.d.ts} +0 -0
- /package/dist/{index.d.ts → server/index.d.ts} +0 -0
- /package/dist/{make-executable-schema.d.ts → server/make-executable-schema.d.ts} +0 -0
- /package/dist/{messager → server/messager}/index.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/cors.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/rate-limit.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/static.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/client.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/index.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/types.d.ts +0 -0
- /package/dist/{queue → server/queue}/index.d.ts +0 -0
- /package/dist/{redis → server/redis}/client.d.ts +0 -0
- /package/dist/{redis → server/redis}/index.d.ts +0 -0
- /package/dist/{redis → server/redis}/types.d.ts +0 -0
- /package/dist/{request.d.ts → server/request.d.ts} +0 -0
- /package/dist/{response.d.ts → server/response.d.ts} +0 -0
- /package/dist/{scheduler → server/scheduler}/cron.d.ts +0 -0
- /package/dist/{scheduler → server/scheduler}/index.d.ts +0 -0
- /package/dist/{types.d.ts → server/types.d.ts} +0 -0
- /package/dist/{ui → server/ui}/html-safe.d.ts +0 -0
- /package/dist/{user → server/user}/index.d.ts +0 -0
- /package/dist/{user → server/user}/password.d.ts +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 生产级案例(agent-platform)
|
|
2
|
+
|
|
3
|
+
> 来源:`apps/agent-platform/`——多租户 AI Agent 平台,weifuwu 中间件全量消费方。
|
|
4
|
+
> 定位:**实战驱动框架开发的生产级参考**——showcase 的教学模板由此提炼,框架能力先在此实战验证。
|
|
5
|
+
|
|
6
|
+
## 中间件全家桶装配(真实顺序即依赖顺序)
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import { serve, Router, cors, postgres, redis, ui, userSystem, ai, messager, rateLimit, verifyPassword, email } from 'weifuwu'
|
|
10
|
+
|
|
11
|
+
const app = new Router()
|
|
12
|
+
app.use(cors())
|
|
13
|
+
app.use(postgres()) // ctx.sql——契约层(引擎实现)
|
|
14
|
+
app.use(redis()) // ctx.redis——独立连接工厂 createConnection()
|
|
15
|
+
app.use(userSystem()) // ctx.user/ctx.auth——登录态
|
|
16
|
+
app.use(ai()) // ctx.ai——chat/stream/agent/approve
|
|
17
|
+
app.use(messager()) // 实时消息
|
|
18
|
+
app.use(rateLimit({ redis: r.redis, windowMs: 60_000, max: 100 })) // ctx.limit
|
|
19
|
+
app.use(ui()) // ctx.ui——前端
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 架构决策(可复用的模式)
|
|
23
|
+
|
|
24
|
+
1. **路由按域注册**:`registerAuthRoutes / registerAgentRoutes / ...`——每域一个函数(showcase 模板的 registerXxxApi 同源)
|
|
25
|
+
2. **14 页 SPA**:单一前端入口 + 路由表——见 `src/ui/routes.ts`
|
|
26
|
+
3. **服务层独立**:services/(chat/agent-runner/sandbox)不依赖路由层——可单测
|
|
27
|
+
4. **沙箱隔离**:sandbox/(docker + host 管理)——Agent 执行环境
|
|
28
|
+
5. **商业化能力**:订阅分层/租户管理/邀请/白标/私有化——见 apps/agent-platform/README.md
|
|
29
|
+
|
|
30
|
+
## 学习路径
|
|
31
|
+
|
|
32
|
+
1. 先跑起来:`cd apps/agent-platform && node --env-file=.env server.ts`
|
|
33
|
+
2. 读 `src/middleware/ctx.ts`(AppCtx——中间件注入面全貌)
|
|
34
|
+
3. 对照 showcase 教学模板(todo/auth/admin/multi)理解"模板 = 生产架构的简化提炼"
|
|
35
|
+
|
|
36
|
+
> 纪律:**实战先行、文档跟进**——框架能力变更先在 agent-platform 验证,再沉淀进 showcase 文档。
|
|
37
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 人类质量标准(交付前验收清单)
|
|
2
|
+
|
|
3
|
+
> 用途:开发完成、交付给人类用户前,逐项自查。每一项失败都必须是**拒绝交付**的理由。
|
|
4
|
+
> 素材来源:AGENTS.md §8 设计系统纪律 + 组件走查记录(agent-browser 实测沉淀)。
|
|
5
|
+
|
|
6
|
+
## □ 1. 可访问性(键盘全程可达)
|
|
7
|
+
|
|
8
|
+
- [ ] Tab 顺序合理;role="button"/tabindex 元素有 Enter/Space 处理
|
|
9
|
+
- [ ] 方向键导航组件(Tabs/DatePicker/Menu)焦点跟随激活项
|
|
10
|
+
- [ ] 弹层(Modal/Drawer/Dropdown/Popover/Tooltip)Escape 关闭
|
|
11
|
+
- [ ] Modal 系焦点 trap + 关闭后焦点归还
|
|
12
|
+
- [ ] 危险操作(Confirm)默认 maskClosable=false(防误触)
|
|
13
|
+
- [ ] aria 语义:aria-expanded/aria-current/aria-label 正确
|
|
14
|
+
|
|
15
|
+
## □ 2. 响应式(三断点)
|
|
16
|
+
|
|
17
|
+
- [ ] 375 / 768 / 1280 三断点无横向溢出
|
|
18
|
+
- [ ] 导航正确降级(侧栏 → 顶部条)
|
|
19
|
+
- [ ] 表格窄屏横向滚动(Table minWidth)或卡片化
|
|
20
|
+
- [ ] 弹层视口夹紧(openPopup 自动)
|
|
21
|
+
|
|
22
|
+
## □ 3. 主题(亮/暗/自动)
|
|
23
|
+
|
|
24
|
+
- [ ] 全部颜色走 `--wf-color-*` token(无裸色值)
|
|
25
|
+
- [ ] 语义文字色用 `-text` 变体;实心填充文字用 `on-brand`
|
|
26
|
+
- [ ] 对比度 ≥ 4.5:1(文字);focus-ring 含 primary 线(明暗均可见)
|
|
27
|
+
|
|
28
|
+
## □ 4. 动效
|
|
29
|
+
|
|
30
|
+
- [ ] 时长/缓动走 `--wf-dur-*` / `--wf-ease-*`(无硬编码)
|
|
31
|
+
- [ ] 退场类 `--exit` 成对(有 exit 类必须挂上)
|
|
32
|
+
- [ ] reduced-motion 降级(_base.css 自动——勿覆盖)
|
|
33
|
+
|
|
34
|
+
## □ 5. 状态矩阵
|
|
35
|
+
|
|
36
|
+
- [ ] loading / error / empty / disabled 四态全覆盖(无缺态渲染)
|
|
37
|
+
- [ ] 提交按钮 loading 防重复提交
|
|
38
|
+
- [ ] 受控组件有回调(无静默不可点)
|
|
39
|
+
|
|
40
|
+
## □ 6. 性能
|
|
41
|
+
|
|
42
|
+
- [ ] 首帧预算合理(大数据列表用 VirtualList/VirtualTable/InfiniteScroll)
|
|
43
|
+
- [ ] 无渲染循环(vdom3 防死循环守护不触发)
|
|
44
|
+
- [ ] 事件流无 error:caught(浏览器 console 零错误)
|
|
45
|
+
|
|
46
|
+
## □ 7. 框架纪律
|
|
47
|
+
|
|
48
|
+
- [ ] 无裸 `window.`/`document.`/`localStorage`(ctx.browser)
|
|
49
|
+
- [ ] 渲染只发生在 `ctx.ui.render()` 调用处(无隐式触发)
|
|
50
|
+
- [ ] 无 eval/new Function;无 npm 运行时依赖(前端)
|
|
51
|
+
- [ ] 请求路径无同步 I/O(后端)
|
|
52
|
+
|
|
53
|
+
## 验证手段(agent-browser 走查纪律)
|
|
54
|
+
|
|
55
|
+
1. 真实点击(CDP)验证交互——`eval click` 绕过命中测试会掩盖问题,两者都测
|
|
56
|
+
2. 查 outerHTML(结构)+ getAttribute('style')(定位/显隐)+ getBoundingClientRect(真实可见性)
|
|
57
|
+
3. `closest('#__wf_portal')` 验证浮层 portal
|
|
58
|
+
4. 每次验证前 reload 清状态(会话残留制造假 bug)
|
|
59
|
+
5. console --level error 抓加载期错误(hook 需在页面加载前)
|
|
60
|
+
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 实时能力指南(ws/sse)
|
|
2
|
+
|
|
3
|
+
> 从 docs/realtime.md 迁移(content/ 文档库——随 npm 包发布,与框架版本同步)。
|
|
4
|
+
> 本页为叙述性指南——组件/能力逐项参考见 content/ 各域目录。
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# 实时与渲染 — scheduler / ui / graphql / WebSocket(weifuwu)
|
|
4
7
|
|
|
5
8
|
## scheduler — 计划任务(即时/延时/cron)
|
|
6
9
|
|
|
@@ -287,7 +290,7 @@ app.wsHub(redisHub)
|
|
|
287
290
|
|
|
288
291
|
WebSocket 原生 `ws.send()` 发送,`ws.on('message', cb)` WebSocket 接收。
|
|
289
292
|
|
|
290
|
-
> **实时应用推荐用 `messager()`**(SaaS 地基模块):协议内置(`connected/subscribe/ping`)+ 持久化 + 跨进程广播 + 点对点,不必自写 Hub/协议——见[消息系统章节](saas.md)。
|
|
293
|
+
> **实时应用推荐用 `messager()`**(SaaS 地基模块):协议内置(`connected/subscribe/ping`)+ 持久化 + 跨进程广播 + 点对点,不必自写 Hub/协议——见[消息系统章节](saas-guide.md)。
|
|
291
294
|
|
|
292
295
|
---
|
|
293
296
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# render-only 状态
|
|
2
|
+
|
|
3
|
+
> 唯一规则:**渲染只发生在 `ctx.ui.render()` 调用处**。状态是普通 JS 对象——
|
|
4
|
+
> 行为可静态推导(代码审查看事件回调里有无 render() 即可验证渲染逻辑)。
|
|
5
|
+
|
|
6
|
+
## 三通道
|
|
7
|
+
|
|
8
|
+
| 场景 | 写法 | 触发 |
|
|
9
|
+
|------|------|------|
|
|
10
|
+
| 组件内部状态 | `let count` + 改后 `ctx.ui.render()` | 显式调用 |
|
|
11
|
+
| 跨组件共享 | `createStore(init)` + `ctx.ui.useExternal(store)` | store.set/update/notify 自动 |
|
|
12
|
+
| 跨组件精准刷新 | mount 时 `ctx.ui.selfId('name')` → 任意处 `ctx.ui.render(['name'])` | 显式调用 |
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
// 内部状态
|
|
16
|
+
const Counter = (_init, ctx) => {
|
|
17
|
+
let count = 0
|
|
18
|
+
return (props) => h('button', {
|
|
19
|
+
onClick: () => { count++; ctx.ui.render() },
|
|
20
|
+
}, count)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// 共享状态(模块级单例)
|
|
24
|
+
const store = createStore({ user: null })
|
|
25
|
+
const UserBadge = (_init, ctx) => {
|
|
26
|
+
const s = ctx.ui.useExternal(store) // 订阅:变化 → 自身重渲染
|
|
27
|
+
return (props) => h('span', {}, s.state.user?.name ?? '未登录')
|
|
28
|
+
}
|
|
29
|
+
store.set({ user }) // 任何位置 → 订阅组件自动重渲染
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 不需要渲染的状态
|
|
33
|
+
|
|
34
|
+
`let el` / `let timerId` 等内部缓存——改后**不**调 render()(参考 AGENTS.md §4.1 表)。
|
|
35
|
+
|
|
36
|
+
## hooks(事件驱动——非赋值自动)
|
|
37
|
+
|
|
38
|
+
useMedia/useInView/useChat 等是浏览器事件驱动重渲染——与"赋值自动"本质不同,保留合理。
|
|
39
|
+
|
|
40
|
+
## 历史教训
|
|
41
|
+
|
|
42
|
+
v1 的 $ Proxy 在重挂载场景捕获的 selfId 与当前实例错位 → 交互静默失效。
|
|
43
|
+
render-only 根治:render() 闭包绑定组件 id——无 this/selfId 错位。
|
|
44
|
+
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# SaaS 能力指南(auth/limit/email/queue/cron)
|
|
2
|
+
|
|
3
|
+
> 从 docs/saas.md 迁移(content/ 文档库——随 npm 包发布,与框架版本同步)。
|
|
4
|
+
> 本页为叙述性指南——组件/能力逐项参考见 content/ 各域目录。
|
|
5
|
+
|
|
1
6
|
# SaaS 地基模块(weifuwu)
|
|
2
7
|
|
|
3
8
|
五个模块(限流 / 邮件 / 用户系统 / 消息系统 / 队列)+ AI 对话,以中间件形态随包提供,`app.use(...)` 一行接入。
|
|
4
9
|
|
|
5
|
-
> 本页为 weifuwu 官方文档拆分页 · [返回 README](../README.md)
|
|
6
|
-
|
|
7
10
|
四个内建模块组成一个"基本 SaaS 底座":认证、异步任务、限流、邮件——零新增依赖
|
|
8
11
|
(只依赖已自研的 redis / postgres 客户端与 node 标准库)。
|
|
9
12
|
|
|
@@ -77,7 +80,7 @@ app.post('/secure', (req, ctx) => { ctx.auth.requireAuth(); ... })
|
|
|
77
80
|
```
|
|
78
81
|
|
|
79
82
|
|
|
80
|
-
> ⚠️ **weifuwu/client 已删除**——前端运行时唯一入口为 `weifuwu/ui-dom`,见 [
|
|
83
|
+
> ⚠️ **weifuwu/client 已删除**——前端运行时唯一入口为 `weifuwu/ui-dom`,见 [ui-dom 指南](ui-dom-guide.md)。
|
|
81
84
|
- **安全基线**:scrypt 密码哈希(per-user salt + timing-safe,异步不阻塞);access token = HMAC-SHA256 JWT(与 `weifuwu/ui-dom` 的 `auth()` 天然配对);refresh token = 不透明随机串,DB 只存哈希,logout/轮换即撤销
|
|
82
85
|
- **防枚举**:登录失败统一 401(不泄露邮箱是否存在)
|
|
83
86
|
- **`ctx.auth` 方法面**:`register` / `login` / `logout` / `requireAuth` / `setPassword(userId, newPwd)` / `createToken(type, payload, { ttlSeconds })`(邮箱验证/密码重置自接)
|
|
@@ -147,7 +150,7 @@ import { ai } from 'weifuwu'
|
|
|
147
150
|
const a = ai() // DEEPSEEK_API_KEY / BASE_URL / MODEL 自动读 env,默认 deepseek-v4-flash
|
|
148
151
|
app.use(a) // 注入 ctx.ai(worker/非请求场景也可直接 a.chat())
|
|
149
152
|
|
|
150
|
-
// 流式对话:路由一行返回 SSE(wf: 协议,详见 docs/ai-contract.md)
|
|
153
|
+
// 流式对话:路由一行返回 SSE(wf: 协议,详见 [ai-contract](../../docs/ai-contract.md))
|
|
151
154
|
app.post('/api/chat', async (req, ctx) => {
|
|
152
155
|
const { messages } = await req.json()
|
|
153
156
|
return ctx.ai.stream({ messages }, {
|
|
@@ -217,7 +220,7 @@ return () => <AiChat chat={$} />
|
|
|
217
220
|
|
|
218
221
|
> 分层:`ctx.ai`(后端协议)→ `aiStream`(传输解码)→ `useChat`(会话语义)→ `AiChat`(标准界面)。要完全自定义 UI 的应用用 useChat + 自有渲染;要 5 分钟出界面用 AiChat。
|
|
219
222
|
|
|
220
|
-
- **协议**:`wf:` 命名空间(message_start/token/tool_call/tool_progress/usage/done/error + agent 扩展 step/approval_request),SSE 下行 + POST 上行,错误即值、未知事件透传、`x:*` 自定义事件(详见 [
|
|
223
|
+
- **协议**:`wf:` 命名空间(message_start/token/tool_call/tool_progress/usage/done/error + agent 扩展 step/approval_request),SSE 下行 + POST 上行,错误即值、未知事件透传、`x:*` 自定义事件(详见 [ai-contract](../../docs/ai-contract.md))
|
|
221
224
|
- **agent 引擎**:`a.agent({ systemPrompt, tools, humanInTheLoop })` 工具循环(LLM → tool_call → 执行 → 回喂 → 重复);工具可 `emit` 进度/自定义事件、接收 `signal` 取消;HITL 审批(`ctx.ai.approve` 响应,拒绝≠终止、modified 改参、超时兜底)
|
|
222
225
|
- **emitter 抽象**:`agent.stream(messages, { emit })`——`wf:*` 事件(step/token/tool_result/usage/done)可接任意通道(SSE/WS/回调),协议不焊死在传输层;`agent.runToResult(messages)` 返回结构化结果 `{ content, steps, usage }`(非流式/worker 场景)
|
|
223
226
|
- **embedding**:`ctx.ai.embed(text)` / `embedMany(texts)` 向量化(默认 `DASHSCOPE_API_KEY` + `text-embedding-v4`,compatible-mode 端点);未配置抛 `AiError('unsupported')`(惰性检查,不静默降级)——知识库/语义检索开箱即用
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# 后端开发指南
|
|
2
|
+
|
|
3
|
+
> 从 docs/server.md 迁移(content/ 文档库——随 npm 包发布,与框架版本同步)。
|
|
4
|
+
> 本页为叙述性指南——组件/能力逐项参考见 content/ 各域目录。
|
|
5
|
+
|
|
1
6
|
# 后端 API — HTTP 服务层(weifuwu)
|
|
2
7
|
|
|
3
8
|
> 以下为完整 API 参考,按需查阅。新手建议先阅读 README 的「核心概念」和「快速开始」。
|
|
4
9
|
|
|
5
|
-
> 本页为 weifuwu 官方文档拆分页 · [返回 README](../README.md)
|
|
6
|
-
|
|
7
10
|
## Router
|
|
8
11
|
|
|
9
12
|
Trie 路由,支持 URL 参数、通配符、中间件链、WebSocket、GraphQL。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# 快速开始
|
|
2
|
+
|
|
3
|
+
> LLM 路径:本文件是起点。读完后按需打开 content/ 各域。
|
|
4
|
+
|
|
5
|
+
## 1. 获取文档(三选一,同一份内容)
|
|
6
|
+
|
|
7
|
+
- 仓库内:`content/index.md`(本文件的上层导航)
|
|
8
|
+
- npm 包:`node_modules/weifuwu/content/index.md`(版本永远匹配装的代码)
|
|
9
|
+
- 文档站:`npx weifuwu docs` → http://localhost:4000
|
|
10
|
+
|
|
11
|
+
## 2. 选型(30 秒决策)
|
|
12
|
+
|
|
13
|
+
| 要做什么 | 打开 |
|
|
14
|
+
|---------|------|
|
|
15
|
+
| 用某个组件(Button/Table/Modal…) | `content/components/<id>.md`——API 表 + 纪律 + 示例 |
|
|
16
|
+
| 拼页面布局(容器/间距/导航壳) | `content/layout/*.md`——wf-* 原语族 |
|
|
17
|
+
| 完整页面(后台壳/仪表盘/登录…) | `content/patterns/*.md`——复制即用 |
|
|
18
|
+
| 完整应用(todo/auth/admin/multi) | `content/apps/*.md` + `examples/apps/<id>/`——复制即改 |
|
|
19
|
+
| 后端能力(sql/redis/ws/ai/limit…) | `content/backend/*.md`——装配代码 + 活体端点 |
|
|
20
|
+
| 框架怎么工作(路由/状态/事件流…) | `content/capabilities/*.md` |
|
|
21
|
+
| 交付前质量检查 | `content/guides/quality.md` |
|
|
22
|
+
|
|
23
|
+
## 3. 取码(新手从最小起步)
|
|
24
|
+
|
|
25
|
+
- **最小起步**:`examples/hello-world/`(server.ts + routes.tsx + client.ts 三文件——复制目录 → `node server.ts` → http://localhost:3400 即跑)——README「快速开始」的落地版
|
|
26
|
+
- 组件片段:组件文档「用法示例」节复制
|
|
27
|
+
- 完整页面:`examples/patterns/<file>.tsx`(复制文件即得页面)
|
|
28
|
+
- 完整应用:`examples/apps/<id>/` 整个目录(复制 → `node server.ts` 即跑)
|
|
29
|
+
|
|
30
|
+
## 4. 运行
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
node server.ts # 或 node --env-file=.env server.ts(需要环境变量时)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 5. 验证
|
|
37
|
+
|
|
38
|
+
1. `npx weifuwu docs` 起文档站对照 API
|
|
39
|
+
2. 对照 `content/guides/quality.md` checklist 逐项自查
|
|
40
|
+
3. 交互组件用 agent-browser 真实点击验证(详见组件文档「验证」节)
|
|
41
|
+
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
# 前端运行时指南(UIRouter/渲染器)
|
|
2
|
+
|
|
3
|
+
> 从 docs/frontend-ui-dom.md 迁移(content/ 文档库——随 npm 包发布,与框架版本同步)。
|
|
4
|
+
> 本页为叙述性指南——组件/能力逐项参考见 content/ 各域目录。
|
|
5
|
+
|
|
1
6
|
# ui-dom — 前端运行时(vdom3 精准事件流引擎)
|
|
2
7
|
|
|
3
8
|
> **createRouter(路由)+ createRoot(挂载)+ 精准事件流(渲染本体)**,
|
|
@@ -59,6 +64,7 @@ let ctx: any = {}
|
|
|
59
64
|
ctx = await api({ baseURL: '', token: ... })(ctx)
|
|
60
65
|
ctx = auth({ ... })(ctx)
|
|
61
66
|
ctx = v3Toast()(ctx)
|
|
67
|
+
ctx = v3Notification()(ctx)
|
|
62
68
|
createRouter([...], root, { ctx })
|
|
63
69
|
```
|
|
64
70
|
|
|
@@ -133,7 +139,7 @@ replay(deserializeEvents(data), root)
|
|
|
133
139
|
- **render-only**:状态是普通对象(`let` + 显式 `render()`)——禁止隐式触发
|
|
134
140
|
- **mount/render 分工**:只依赖稳定引用的回调(ctx/挂载闭包)→ mount 定义(零重绑);依赖最新 props → render 内定义(重绑是正确性要求)
|
|
135
141
|
- **ref 稳定**:带清理的 ref 定义在 mount 作用域(内联 ref 每次渲染新函数 → ref(null) 反复触发)
|
|
136
|
-
-
|
|
142
|
+
- **浮层**:`ctx.ui.openPopup`(命令式——#__wf_portal 统一容器)——禁止 absolute 相对父容器
|
|
137
143
|
- **浏览器环境**:组件用 `ctx.browser`(禁裸 window/document)——SSR 安全三态
|
|
138
144
|
- **事件 handler**:代理 Map 覆盖——handler 更新零重绑零事件(稳定引用仅为性能建议——结构共享收益前提)
|
|
139
145
|
- **props 不可变(红线——Chat 空 bubble 事故)**:**禁止原地修改 props 引用的对象**(`m.content += text`)——vdom3 剪枝按 props 浅比较判断"未变"→ 复用旧输出 → 渲染不更新。**状态更新必须新建对象**(`$.msgs[i] = { ...m, content: ... }`——引用变 → 剪枝不命中 → 重渲染)。排查"渲染没更新"时看 `__wf_tail` 的 `comp:build` 事件 `reason: 'reuse-skip'`(= 契约:props 引用未变)
|