weifuwu 0.90.0 → 0.91.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 +4 -2
- package/dist/client/components/WordCloud/WordCloud.d.ts +79 -0
- package/dist/client/components/index.d.ts +2 -0
- package/dist/client/components/index.js +33 -33
- package/dist/client/components/style.css +95 -1
- package/dist/client/layout/weifuwu-layout.css +19 -0
- package/dist/client/vdom/core/v2/diff.d.ts +2 -2
- package/dist/client/vdom/hooks/env.d.ts +20 -0
- package/dist/client/vdom/index.js +3 -3
- package/dist/client/vdom/testing.js +2 -2
- package/dist/server/ai/approvals.d.ts +24 -0
- package/dist/server/ai/assemble.d.ts +19 -0
- package/dist/server/ai/client.d.ts +22 -0
- package/dist/server/ai/contracts.d.ts +67 -2
- package/dist/server/ai/index.d.ts +14 -43
- package/dist/server/ai/memory-server.d.ts +50 -0
- package/dist/server/ai/memory.d.ts +46 -0
- package/dist/server/ai/multimodal.d.ts +52 -0
- package/dist/server/ai/openai.d.ts +16 -0
- package/dist/server/db/body.d.ts +31 -0
- package/dist/server/db/consistency.d.ts +28 -0
- package/dist/server/db/contracts.d.ts +3 -27
- package/dist/server/db/filter.d.ts +24 -0
- package/dist/server/db/gql-from-shape.d.ts +42 -0
- package/dist/server/db/http.d.ts +38 -0
- package/dist/server/db/memory-sql.d.ts +66 -8
- package/dist/server/db/ops.d.ts +70 -0
- package/dist/server/db/orm.d.ts +110 -0
- package/dist/server/db/query-builder.d.ts +4 -2
- package/dist/server/db/query.d.ts +90 -32
- package/dist/server/db/rest-from-shape.d.ts +56 -0
- package/dist/server/db/schema.d.ts +78 -0
- package/dist/server/db/server.d.ts +0 -2
- package/dist/server/db/shape.d.ts +131 -0
- package/dist/server/db/typed-query.d.ts +113 -0
- package/dist/server/email/api.d.ts +15 -0
- package/dist/server/email/contracts.d.ts +8 -3
- package/dist/server/email/index.d.ts +23 -30
- package/dist/server/email/memory-email-server.d.ts +43 -0
- package/dist/server/email/memory-email.d.ts +30 -0
- package/dist/server/index.d.ts +33 -10
- package/dist/server/index.js +9843 -4133
- package/dist/server/messager/index.d.ts +133 -12
- package/dist/server/postgres/client.d.ts +4 -4
- package/dist/server/postgres/types.d.ts +33 -13
- package/dist/server/redis/types.d.ts +2 -0
- package/dist/server/response.d.ts +3 -3
- package/dist/server/types.d.ts +2 -5
- package/dist/server/user/app-auth.d.ts +74 -0
- package/dist/server/user/index.d.ts +277 -5
- package/dist/server/workflow/contracts.d.ts +202 -0
- package/dist/server/workflow/expression.d.ts +89 -0
- package/dist/server/workflow/index.d.ts +70 -0
- package/dist/server/workflow/index.js +2476 -0
- package/dist/server/workflow/runner.d.ts +19 -0
- package/dist/server/workflow/std.d.ts +27 -0
- package/dist/server/workflow/steps.d.ts +12 -0
- package/dist/server/workflow/store.d.ts +19 -0
- package/dist/server/workflow/tojs.d.ts +28 -0
- package/dist/server/workflow/validate.d.ts +23 -0
- package/dist/server/workflow/views.d.ts +66 -0
- package/dist/server/workflow/wfjs.d.ts +27 -0
- package/dist/server/workflows/cron.d.ts +16 -0
- package/dist/server/workflows/index.d.ts +267 -0
- package/dist/shared/zod.d.ts +351 -0
- package/docs/client.md +6 -0
- package/docs/server.md +455 -11
- package/package.json +9 -3
- package/dist/server/db/postgres-server.d.ts +0 -39
- package/dist/server/db/sql-parser.d.ts +0 -24
- package/dist/server/db/test-servers.d.ts +0 -21
- package/dist/server/email/smtp.d.ts +0 -34
package/README.md
CHANGED
|
@@ -92,12 +92,13 @@ router.get('*', async (req, ctx) => {
|
|
|
92
92
|
| 导入路径 | 模块 | 用途 |
|
|
93
93
|
| --- | --- | --- |
|
|
94
94
|
| `weifuwu` | Router / serve / cors / serveStatic | Trie 路由 + 中间件链 + HTTP 服务器 + 静态服务 |
|
|
95
|
-
| `weifuwu` | postgres / redis / Memory | 自研 PG v3 + RESP2 协议(`ctx.
|
|
95
|
+
| `weifuwu` | postgres / redis / Memory | 自研 PG v3 + RESP2 协议(`ctx.orm` / `ctx.redis`——数据面 = 声明式 ORM AST,业务零 SQL 文本);Memory 零数据库测试 |
|
|
96
|
+
| `weifuwu` | shape / bodyOf / listQuery / errorResponse | 数据样板收口:shape 声明 → `bodyOf`(body 校验·类型精确)/ `listQuery`(URL 参数)/ `errorResponse`(catch 映射)——手写 route 三件套(docs/server.md §5.3/§5.4.1) |
|
|
96
97
|
| `weifuwu` | ui | SSR 渲染 + esbuild JS/CSS 动态编译(`ctx.ui`) |
|
|
97
98
|
| `weifuwu/vdom` | UIRouter / uiServe / uiSsr | 前端路由唯一入口 + 浏览器 boot + SSR(结构吸收) |
|
|
98
99
|
| `weifuwu/vdom` | 命令流引擎 + hooks 全家 | 渲染周期/事件代理/三状态机 + useAsyncData/usePopup/useControlled/… |
|
|
99
100
|
| `weifuwu/components` | **134 个组件** | Button/Table/Modal/AiChat/… + `toast()`/`confirm()` 命令式中间件 |
|
|
100
|
-
| `weifuwu/layout` | CSS 布局 |
|
|
101
|
+
| `weifuwu/layout` | CSS 布局 | 50 个布局原语 + 97 个工具类 + 183 个主题 Token |
|
|
101
102
|
| `weifuwu` | rateLimit / email / userSystem / messager / queue / scheduler / ai / graphql | SaaS 地基中间件(ctx 注入) |
|
|
102
103
|
| `weifuwu/dev` | dev loader | `--import weifuwu/dev` 直接跑 `.ts/.tsx` |
|
|
103
104
|
|
|
@@ -111,6 +112,7 @@ router.get('*', async (req, ctx) => {
|
|
|
111
112
|
| 弹窗(toast/confirm/自定义) | `toast()` / `confirm()` / `ui.openPopup(opts)`→PopupHandle |
|
|
112
113
|
| AI 对话(流式/工具/审批) | `ctx.ai.chat()` + `useChat` + `AiChat` 组件(`wf:` 协议) |
|
|
113
114
|
| 认证(登录/角色/租户) | `userSystem()` + `ctx.auth` + `AuthPage` 组件 |
|
|
115
|
+
| 数据层(shape→表/查询/写) | `bodyOf(req, T.agents, ...)` 校验 · `listQuery(url, T.x)` 分页参数 · `orm.gql/rest` 协议生成 · `pg.checkConsistency()` 启动诊断 |
|
|
114
116
|
| 限流 / 邮件 / 消息 / 队列 / 定时 | `rateLimit()` / `email()` / `messager()` / `queue()` / `scheduler()` |
|
|
115
117
|
|
|
116
118
|
## 测试命令
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* weifuwu/components — WordCloud
|
|
3
|
+
*
|
|
4
|
+
* 词云——权重→字号映射 · **中心同心环发散布局**(SVG textLength 定宽——
|
|
5
|
+
* 渲染宽度精确 = 估算宽——同输入同输出——SSR≡SPA 零差异 + 词矩形零重叠)
|
|
6
|
+
* 零依赖自绘 SVG(Chart 同族)。canvas 测宽/Canvas 绘制判负(服务端无 canvas——
|
|
7
|
+
* 见 git log plan/2026-09-wordcloud-组件.md 判负记录——中心排列消费证据推翻
|
|
8
|
+
* 行式装箱——同心环以 SVG 确定性实现:碰撞=矩形相交(纯函数))。
|
|
9
|
+
*
|
|
10
|
+
* 布局契约(纯函数——确定性——测试可断言):
|
|
11
|
+
* - 权重线性映射 [minFontSize, maxFontSize](全等权重 → 全 maxFontSize)
|
|
12
|
+
* - 降序放置——最大词从中心(环 0)开始——**同心环扫描**:环宽 = 当前词高
|
|
13
|
+
* (邻环相接不重叠——环形约束)——环内候选点间距 = max(词宽, 环宽)(奇数环
|
|
14
|
+
* 错相偏 π/n——无隙漏)——首个无碰撞点放置
|
|
15
|
+
* - viewBox = 全部词包围盒(自适应——零裁剪——height 为显示高)
|
|
16
|
+
* - 词矩形(含 padding 间距)两两不相交(环碰撞保证 + textLength 强制实际宽)
|
|
17
|
+
*/
|
|
18
|
+
import type { Component } from '../../vdom/index.ts';
|
|
19
|
+
export interface WordCloudData {
|
|
20
|
+
/** 词文本 */
|
|
21
|
+
word: string;
|
|
22
|
+
/** 权重(≥0——0 不渲染) */
|
|
23
|
+
weight: number;
|
|
24
|
+
/** 覆盖色板(不传按 colors 取模) */
|
|
25
|
+
color?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface WordCloudProps {
|
|
28
|
+
words: WordCloudData[];
|
|
29
|
+
/** 显示高度(px——SVG 等比缩放——默认=布局包围盒高) */
|
|
30
|
+
height?: number;
|
|
31
|
+
/** 最大字号(px)——默认 32 */
|
|
32
|
+
maxFontSize?: number;
|
|
33
|
+
/** 最小字号(px)——默认 12 */
|
|
34
|
+
minFontSize?: number;
|
|
35
|
+
/** 词四周间距(px)——默认 4 */
|
|
36
|
+
padding?: number;
|
|
37
|
+
/** 色板(默认 token 色阶——逐词取模) */
|
|
38
|
+
colors?: string[];
|
|
39
|
+
/** 点击词回调(提供后词可交互:hover 高亮 + 键盘 Enter/Space 可达) */
|
|
40
|
+
onWordClick?: (word: string, weight: number) => void;
|
|
41
|
+
className?: string;
|
|
42
|
+
}
|
|
43
|
+
/** 估算词渲染宽(textLength 将强制实际=此值) */
|
|
44
|
+
export declare function estimateWordWidth(word: string, size: number): number;
|
|
45
|
+
export interface PlacedWord {
|
|
46
|
+
word: string;
|
|
47
|
+
weight: number;
|
|
48
|
+
/** 中心 x(text-anchor: middle) */
|
|
49
|
+
x: number;
|
|
50
|
+
/** 基线 y */
|
|
51
|
+
y: number;
|
|
52
|
+
size: number;
|
|
53
|
+
/** textLength(= 实际渲染字宽——不含 padding) */
|
|
54
|
+
textLength: number;
|
|
55
|
+
/** 词级颜色(WordCloudData.color——透传——未传由色板兜底) */
|
|
56
|
+
color?: string;
|
|
57
|
+
/** 布局矩形(含 padding——零重叠断言单位) */
|
|
58
|
+
rect: {
|
|
59
|
+
l: number;
|
|
60
|
+
t: number;
|
|
61
|
+
r: number;
|
|
62
|
+
b: number;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** 布局输出(viewBox = 包围盒——由内容决定——零裁剪) */
|
|
66
|
+
export interface WordCloudLayout {
|
|
67
|
+
placed: PlacedWord[];
|
|
68
|
+
/** 布局坐标系宽(= 包围盒宽) */
|
|
69
|
+
width: number;
|
|
70
|
+
/** 布局坐标系高(= 包围盒高) */
|
|
71
|
+
height: number;
|
|
72
|
+
}
|
|
73
|
+
/** 中心同心环布局(纯函数——确定性——同输入同输出——零重叠) */
|
|
74
|
+
export declare function layoutWords(words: WordCloudData[], opts: {
|
|
75
|
+
maxFontSize: number;
|
|
76
|
+
minFontSize: number;
|
|
77
|
+
padding: number;
|
|
78
|
+
}): WordCloudLayout;
|
|
79
|
+
export declare const WordCloud: Component<WordCloudProps>;
|
|
@@ -285,3 +285,5 @@ export { VideoPlayer } from './VideoPlayer/VideoPlayer.ts';
|
|
|
285
285
|
export type { VideoPlayerProps } from './VideoPlayer/VideoPlayer.ts';
|
|
286
286
|
export { Math } from './Math/Math.ts';
|
|
287
287
|
export type { MathProps } from './Math/Math.ts';
|
|
288
|
+
export { WordCloud } from './WordCloud/WordCloud.ts';
|
|
289
|
+
export type { WordCloudProps, WordCloudData } from './WordCloud/WordCloud.ts';
|