doxum 0.1.19 → 0.1.21

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.
Files changed (65) hide show
  1. package/README.md +30 -11
  2. package/dist/{scope-d-L87NeC.js → access-BeSV5ve-.js} +114 -20
  3. package/dist/access-BeSV5ve-.js.map +1 -0
  4. package/dist/{scope-Ezs-Y3TY.cjs → access-Bienf28h.cjs} +149 -19
  5. package/dist/access-Bienf28h.cjs.map +1 -0
  6. package/dist/advanced-BRL5pN0y.cjs +1361 -0
  7. package/dist/advanced-BRL5pN0y.cjs.map +1 -0
  8. package/dist/advanced-COFJtWMT.js +1188 -0
  9. package/dist/advanced-COFJtWMT.js.map +1 -0
  10. package/dist/{advanced-C2fpjbK3.d.ts → advanced-DfKc7TZR.d.cts} +27 -22
  11. package/dist/{advanced-DlOYk1vi.d.cts → advanced-FgdTwu5b.d.ts} +27 -22
  12. package/dist/advanced.cjs +1 -1
  13. package/dist/advanced.d.cts +2 -2
  14. package/dist/advanced.d.ts +2 -2
  15. package/dist/advanced.js +1 -1
  16. package/dist/{contract-XmKnroJq.d.cts → contract-CdmDHRUq.d.cts} +8 -6
  17. package/dist/{contract-CATCCVu5.d.ts → contract-KG5XnQZt.d.ts} +8 -6
  18. package/dist/{driver-CSnhMjbP.js → driver-CLYJOGDQ.js} +2 -2
  19. package/dist/{driver-CSnhMjbP.js.map → driver-CLYJOGDQ.js.map} +1 -1
  20. package/dist/{driver-BCyfqxsl.cjs → driver-Djr3BVvo.cjs} +2 -2
  21. package/dist/{driver-BCyfqxsl.cjs.map → driver-Djr3BVvo.cjs.map} +1 -1
  22. package/dist/index.cjs +1150 -1993
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +2 -2
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +1105 -1948
  27. package/dist/index.js.map +1 -1
  28. package/dist/{integration-CxVhq-KD.js → integration-C4Isp8lJ.js} +3 -2
  29. package/dist/{integration-CxVhq-KD.js.map → integration-C4Isp8lJ.js.map} +1 -1
  30. package/dist/{integration-B7VDgAOJ.cjs → integration-Z6MsfFI7.cjs} +4 -3
  31. package/dist/{integration-B7VDgAOJ.cjs.map → integration-Z6MsfFI7.cjs.map} +1 -1
  32. package/dist/integration.cjs +3 -3
  33. package/dist/integration.d.cts +1 -1
  34. package/dist/integration.d.ts +1 -1
  35. package/dist/integration.js +3 -3
  36. package/dist/{issue-DhrNdQNg.cjs → issue-DjK1xp5K.cjs} +106 -22
  37. package/dist/issue-DjK1xp5K.cjs.map +1 -0
  38. package/dist/{issue-DVaGQGeP.js → issue-W0hT8u8D.js} +81 -15
  39. package/dist/issue-W0hT8u8D.js.map +1 -0
  40. package/dist/local-sync.cjs +2 -2
  41. package/dist/local-sync.d.cts +1 -1
  42. package/dist/local-sync.d.ts +1 -1
  43. package/dist/local-sync.js +2 -2
  44. package/dist/{notification-IQIJyH3Q.js → notification-Bkjau6B6.js} +3 -56
  45. package/dist/notification-Bkjau6B6.js.map +1 -0
  46. package/dist/{notification-CDSUfiip.cjs → notification-DJfouMEb.cjs} +2 -91
  47. package/dist/notification-DJfouMEb.cjs.map +1 -0
  48. package/dist/react.cjs +2 -2
  49. package/dist/react.js +2 -2
  50. package/package.json +1 -1
  51. package/skills/doxum-runtime/SKILL.md +4 -1
  52. package/skills/doxum-runtime/references/guide.en.md +5 -2
  53. package/skills/doxum-runtime/references/guide.zh-CN.md +5 -2
  54. package/skills/doxum-runtime/references/projections.en.md +23 -9
  55. package/skills/doxum-runtime/references/projections.zh-CN.md +18 -6
  56. package/dist/advanced-BYZCjNWL.js +0 -680
  57. package/dist/advanced-BYZCjNWL.js.map +0 -1
  58. package/dist/advanced-CMMNk49G.cjs +0 -763
  59. package/dist/advanced-CMMNk49G.cjs.map +0 -1
  60. package/dist/issue-DVaGQGeP.js.map +0 -1
  61. package/dist/issue-DhrNdQNg.cjs.map +0 -1
  62. package/dist/notification-CDSUfiip.cjs.map +0 -1
  63. package/dist/notification-IQIJyH3Q.js.map +0 -1
  64. package/dist/scope-Ezs-Y3TY.cjs.map +0 -1
  65. package/dist/scope-d-L87NeC.js.map +0 -1
@@ -20,6 +20,10 @@ runtime.get(visible);
20
20
  source 通过 `kind: 'value'` 或 `kind: 'collection'` 区分语义,但调用方统一使用
21
21
  `observe(source)`。
22
22
 
23
+ schema map、table 和 `list(field, { keyOf })` 都是 keyed collection path。list
24
+ 直接使用 schema 的 `keyOf` 作为稳定 identity,并按文档顺序迭代;数组类型的普通
25
+ `field(...)` 仍然是 scalar value observation。
26
+
23
27
  External event 不再复用 Runtime context:value event 提供新 `value` 和
24
28
  `revision`;collection event 提供稳定的 `previous` read、`revision` 和可选的
25
29
  `impact` hint。Runtime 自己计算精确的 `CollectionChange`,processor 不会直接收到
@@ -45,9 +49,10 @@ runtime.dispose();
45
49
  `input.collection<K, V>(initial?)` 声明 Runtime 本地 keyed 状态。`update` 的借用 draft
46
50
  提供 `get`、`has`、`set`、`remove`;单次 callback 同步且原子,Runtime batch 发布一次
47
51
  精确的净 `CollectionChange`。scope 用 `scope.input`、`scope.derive`、
48
- `scope.incremental` 声明局部投影,直接依赖同一张图中的根投影;dispose 只释放局部状态和订阅。
52
+ `scope.incremental` 声明局部投影,直接依赖同一 Runtime 中的根投影;dispose 只释放
53
+ 局部 producer、状态和订阅。
49
54
 
50
- Runtime graph revision、item handle、rebuild、release 都是内部事实,不是应用层操作;
55
+ Runtime scheduler/output internals、item handle、rebuild、release 都是内部事实,不是应用层操作;
51
56
  只有 `Readable` 自己的 publication revision 为 store 集成保留为公开事实。
52
57
  Materialization、keyed storage、故障恢复和释放只有一个 owner。
53
58
 
@@ -73,6 +78,8 @@ const render = incremental.group(
73
78
  content: define.collection<string, Content>(),
74
79
  },
75
80
  labels: define.collection<string, Label>(),
81
+ chrome: define.value<Chrome>(),
82
+ revision: define.value<number>(),
76
83
  }),
77
84
  ({ sources, outputs }) => {
78
85
  for (const [id, task] of sources[0]) {
@@ -80,6 +87,8 @@ const render = incremental.group(
80
87
  outputs.node.content.set(id, makeContent(task));
81
88
  outputs.labels.set(id, makeLabel(task));
82
89
  }
90
+ outputs.chrome.set(makeChrome(sources[0]));
91
+ outputs.revision.set(sources[0].size);
83
92
  }
84
93
  );
85
94
  ```
@@ -97,10 +106,13 @@ build 对集合依赖报告 `reset`;一次已提交的 batch 已经合并成
97
106
  只在同步 callback 内有效的 `output` draft。Draft 只有 `set`、`remove`、`order`;
98
107
  Runtime 在 callback 返回后校验并 seal,计算 keyed transitions,发布
99
108
  一个不可变 map-like 值。reset 或故障恢复由 Runtime 内部完成。
100
- `incremental.group(...)` 是多个命名 keyed output 的组合边界。嵌套 namespace
101
- 只是静态 API 组织,不是新的图、Runtime 或事件协议。每个叶子都是普通
102
- `Projection`;一次 processor 执行会把所有变化的叶子原子发布,下游直接依赖这些
103
- 叶子。首次读取任一叶子会物化整个 group;scope dispose 会一起释放 group 和其保留状态。
109
+ `incremental.group(...)` 是多个命名 value / keyed collection output 的组合边界。
110
+ `define.value<T>(equality?)` 声明 scalar leaf,`define.collection<K, V>(equality?)`
111
+ 声明 keyed leaf。嵌套 namespace 只是静态 API 组织,不是新的 producer、Runtime、scheduler 或事件协议。
112
+ 每个叶子都是指向同一个 processor producer 某个 output 的普通 `Projection`;一次 processor 执行先 seal 所有 leaf,再原子发布真正
113
+ 变化的 leaf,下游直接依赖这些叶子。initial build / rebuild 必须 set 每个 value leaf;
114
+ 普通增量轮次可以不触碰 value leaf,此时保留其现值和 revision。首次读取任一叶子只会
115
+ 物化该 producer 一次;scope dispose 也只会释放该 producer 和其保留状态一次。
104
116
 
105
117
  ## React selector 追踪
106
118