@voidhash/mimic 0.0.3 → 0.0.5

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 (52) hide show
  1. package/.turbo/turbo-build.log +202 -198
  2. package/dist/Document.cjs +1 -2
  3. package/dist/Document.d.cts +9 -3
  4. package/dist/Document.d.cts.map +1 -1
  5. package/dist/Document.d.mts +9 -3
  6. package/dist/Document.d.mts.map +1 -1
  7. package/dist/Document.mjs +1 -2
  8. package/dist/Document.mjs.map +1 -1
  9. package/dist/Primitive.d.cts +2 -2
  10. package/dist/Primitive.d.mts +2 -2
  11. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutProperties.cjs +15 -0
  12. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutProperties.mjs +15 -0
  13. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutPropertiesLoose.cjs +14 -0
  14. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutPropertiesLoose.mjs +13 -0
  15. package/dist/client/ClientDocument.cjs +17 -12
  16. package/dist/client/ClientDocument.d.mts.map +1 -1
  17. package/dist/client/ClientDocument.mjs +17 -12
  18. package/dist/client/ClientDocument.mjs.map +1 -1
  19. package/dist/client/WebSocketTransport.cjs +6 -6
  20. package/dist/client/WebSocketTransport.mjs +6 -6
  21. package/dist/client/WebSocketTransport.mjs.map +1 -1
  22. package/dist/primitives/Tree.cjs +55 -7
  23. package/dist/primitives/Tree.d.cts +97 -10
  24. package/dist/primitives/Tree.d.cts.map +1 -1
  25. package/dist/primitives/Tree.d.mts +97 -10
  26. package/dist/primitives/Tree.d.mts.map +1 -1
  27. package/dist/primitives/Tree.mjs +55 -7
  28. package/dist/primitives/Tree.mjs.map +1 -1
  29. package/dist/primitives/shared.d.cts +9 -0
  30. package/dist/primitives/shared.d.cts.map +1 -1
  31. package/dist/primitives/shared.d.mts +9 -0
  32. package/dist/primitives/shared.d.mts.map +1 -1
  33. package/dist/primitives/shared.mjs.map +1 -1
  34. package/dist/server/ServerDocument.cjs +1 -1
  35. package/dist/server/ServerDocument.d.cts +3 -3
  36. package/dist/server/ServerDocument.d.cts.map +1 -1
  37. package/dist/server/ServerDocument.d.mts +3 -3
  38. package/dist/server/ServerDocument.d.mts.map +1 -1
  39. package/dist/server/ServerDocument.mjs +1 -1
  40. package/dist/server/ServerDocument.mjs.map +1 -1
  41. package/package.json +2 -2
  42. package/src/Document.ts +18 -5
  43. package/src/client/ClientDocument.ts +20 -21
  44. package/src/client/WebSocketTransport.ts +9 -9
  45. package/src/primitives/Tree.ts +209 -19
  46. package/src/primitives/shared.ts +10 -1
  47. package/src/server/ServerDocument.ts +4 -3
  48. package/tests/client/ClientDocument.test.ts +309 -2
  49. package/tests/client/WebSocketTransport.test.ts +228 -3
  50. package/tests/primitives/Tree.test.ts +291 -17
  51. package/tests/server/ServerDocument.test.ts +1 -1
  52. package/tsconfig.json +1 -1
@@ -56,6 +56,86 @@ type TreeNodeUpdateValue<TNode extends AnyTreeNodePrimitive> = TNode["data"] ext
56
56
  * always require a data object (even if empty for all-optional fields).
57
57
  */
58
58
  type TreeNodeDataSetInput<TNode extends AnyTreeNodePrimitive> = TNode["data"] extends StructPrimitive<infer TFields, any, any> ? StructSetInput<TFields> : InferSetInput<TNode["data"]>;
59
+ /**
60
+ * Type guard to check if a type is `any` or unknown (structural check).
61
+ * Returns true if T is `any`, false otherwise.
62
+ */
63
+ type IsAny<T> = 0 extends (1 & T) ? true : false;
64
+ /**
65
+ * Get children types, with special handling for self-referential nodes.
66
+ * When InferTreeNodeChildren returns `any` (from TreeNodePrimitive<..., any>),
67
+ * we fall back to using TNode itself as its own child type.
68
+ * This handles the common case of self-referential nodes like:
69
+ * FolderNode = TreeNode("folder", { children: [TreeNodeSelf, FileNode] })
70
+ * Where FolderNode's TChildren is resolved to FolderNode | FileNode,
71
+ * but the self-referenced FolderNode has TChildren = any.
72
+ */
73
+ type ResolveChildrenForInput<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = IsAny<InferTreeNodeChildren<TNode>> extends true ? TOriginalNode : InferTreeNodeChildren<TNode>;
74
+ /**
75
+ * Helper type that creates a properly typed node input for a specific node type.
76
+ * This is the "strict" version that enforces exact property matching.
77
+ *
78
+ * The TOriginalNode parameter is used to track the original root node type
79
+ * for proper self-reference resolution in deeply nested structures.
80
+ */
81
+ type TreeNodeSetInputStrictWithRoot<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = {
82
+ readonly type: InferTreeNodeType<TNode>;
83
+ readonly id?: string;
84
+ readonly children: TreeNodeSetInputUnionWithRoot<ResolveChildrenForInput<TNode, TOriginalNode>, TOriginalNode>[];
85
+ } & TreeNodeDataSetInput<TNode>;
86
+ /**
87
+ * Distributive conditional type that creates a union of TreeNodeSetInputStrict
88
+ * for each node type in the union. This ensures proper type discrimination.
89
+ *
90
+ * When TNode is a union (e.g., FolderNode | FileNode), this distributes to:
91
+ * TreeNodeSetInputStrict<FolderNode> | TreeNodeSetInputStrict<FileNode>
92
+ *
93
+ * This creates a proper discriminated union where excess property checking works.
94
+ */
95
+ type TreeNodeSetInputUnionWithRoot<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = TNode extends AnyTreeNodePrimitive ? TreeNodeSetInputStrictWithRoot<TNode, TOriginalNode> : never;
96
+ /**
97
+ * Helper type for single-parameter usage - uses TNode as its own original.
98
+ */
99
+ type TreeNodeSetInputStrict<TNode extends AnyTreeNodePrimitive> = TreeNodeSetInputStrictWithRoot<TNode, TNode>;
100
+ /**
101
+ * Distributive conditional for single-parameter usage.
102
+ */
103
+ type TreeNodeSetInputUnion<TNode extends AnyTreeNodePrimitive> = TNode extends AnyTreeNodePrimitive ? TreeNodeSetInputStrict<TNode> : never;
104
+ /**
105
+ * Input type for a single node in a nested tree set/default operation.
106
+ *
107
+ * - `type` is REQUIRED - explicit type discriminator for the node
108
+ * - `id` is optional - auto-generated if not provided
109
+ * - `children` is a typed array of allowed child node inputs
110
+ * - Data fields are spread at the node level (like TreeNodeSnapshot)
111
+ *
112
+ * When TNode is a union type (e.g., from InferTreeNodeChildren), this properly
113
+ * distributes to create a discriminated union where:
114
+ * - Each variant has its specific `type` literal
115
+ * - Each variant has its specific data fields
116
+ * - Excess property checking works correctly
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const input: TreeNodeSetInput<BoardNode> = {
121
+ * type: "board",
122
+ * name: "My Board",
123
+ * children: [
124
+ * { type: "column", name: "Todo", children: [] }
125
+ * ]
126
+ * };
127
+ * ```
128
+ */
129
+ type TreeNodeSetInput<TNode extends AnyTreeNodePrimitive> = TreeNodeSetInputUnion<TNode>;
130
+ /**
131
+ * Input type for tree set() and default() operations.
132
+ * Accepts a nested tree structure that will be converted to flat TreeState internally.
133
+ */
134
+ type TreeSetInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeNodeSetInput<TRoot$1>;
135
+ /**
136
+ * Infer the set input type for a tree primitive.
137
+ */
138
+ type InferTreeSetInput<T extends TreePrimitive<any>> = T extends TreePrimitive<infer TRoot> ? TreeSetInput<TRoot> : never;
59
139
  /**
60
140
  * Typed proxy for a specific node type - provides type-safe data access
61
141
  */
@@ -92,8 +172,8 @@ interface TreeNodeProxyBase<_TRoot extends AnyTreeNodePrimitive> {
92
172
  interface TreeProxy<TRoot$1 extends AnyTreeNodePrimitive> {
93
173
  /** Gets the entire tree state (flat array of nodes) */
94
174
  get(): TreeState<TRoot$1>;
95
- /** Replaces the entire tree */
96
- set(nodes: TreeState<TRoot$1>): void;
175
+ /** Replaces the entire tree with a nested input structure */
176
+ set(input: TreeSetInput<TRoot$1>): void;
97
177
  /** Gets the root node state */
98
178
  root(): TypedTreeNodeState<TRoot$1> | undefined;
99
179
  /** Gets ordered children states of a parent (null for root's children) */
@@ -131,14 +211,12 @@ interface TreeProxy<TRoot$1 extends AnyTreeNodePrimitive> {
131
211
  }
132
212
  interface TreePrimitiveSchema<TRoot$1 extends AnyTreeNodePrimitive> {
133
213
  readonly required: boolean;
134
- readonly defaultValue: TreeState<TRoot$1> | undefined;
214
+ readonly defaultInput: TreeNodeSetInput<TRoot$1> | undefined;
135
215
  readonly root: TRoot$1;
136
216
  readonly validators: readonly Validator<TreeState<TRoot$1>>[];
137
217
  }
138
- /** Input type for tree set() - tree state */
139
- type TreeSetInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeState<TRoot$1>;
140
- /** Input type for tree update() - same as set() for trees */
141
- type TreeUpdateInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeState<TRoot$1>;
218
+ /** Input type for tree update() - same as set() for trees (nested format) */
219
+ type TreeUpdateInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeNodeSetInput<TRoot$1>;
142
220
  declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<TreeState<TRoot$1>, TreeProxy<TRoot$1>, TRequired, THasDefault, TreeSetInput<TRoot$1>, TreeUpdateInput<TRoot$1>> {
143
221
  readonly _tag: "TreePrimitive";
144
222
  readonly _State: TreeState<TRoot$1>;
@@ -153,8 +231,8 @@ declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired exte
153
231
  constructor(schema: TreePrimitiveSchema<TRoot$1>);
154
232
  /** Mark this tree as required */
155
233
  required(): TreePrimitive<TRoot$1, true, THasDefault>;
156
- /** Set a default value for this tree */
157
- default(defaultValue: TreeState<TRoot$1>): TreePrimitive<TRoot$1, TRequired, true>;
234
+ /** Set a default value for this tree (nested format) */
235
+ default(defaultInput: TreeNodeSetInput<TRoot$1>): TreePrimitive<TRoot$1, TRequired, true>;
158
236
  /** Get the root node type */
159
237
  get root(): TRoot$1;
160
238
  /** Add a custom validation rule */
@@ -171,6 +249,15 @@ declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired exte
171
249
  * Validate that a node type can be a child of a parent node type
172
250
  */
173
251
  private _validateChildType;
252
+ /**
253
+ * Convert a nested TreeNodeSetInput to flat TreeState format.
254
+ * Recursively processes nodes, generating IDs and positions as needed.
255
+ *
256
+ * @param input - The root nested input to convert
257
+ * @param generateId - Optional ID generator (defaults to crypto.randomUUID)
258
+ * @returns Flat TreeState array
259
+ */
260
+ private _convertNestedToFlat;
174
261
  readonly _internal: PrimitiveInternal<TreeState<TRoot$1>, TreeProxy<TRoot$1>>;
175
262
  }
176
263
  /** Options for creating a Tree primitive */
@@ -181,5 +268,5 @@ interface TreeOptions<TRoot$1 extends AnyTreeNodePrimitive> {
181
268
  /** Creates a new TreePrimitive with the given root node type */
182
269
  declare const Tree: <TRoot$1 extends AnyTreeNodePrimitive>(options: TreeOptions<TRoot$1>) => TreePrimitive<TRoot$1, false, false>;
183
270
  //#endregion
184
- export { InferTreeSnapshot, Tree, TreeNodeDataSetInput, TreeNodeProxyBase, TreeNodeSnapshot, TreeNodeState, TreeNodeUpdateValue, TreeOptions, TreePrimitive, TreeProxy, TreeSetInput, TreeState, TreeUpdateInput, TypedNodeProxy, TypedTreeNodeState };
271
+ export { InferTreeSetInput, InferTreeSnapshot, Tree, TreeNodeDataSetInput, TreeNodeProxyBase, TreeNodeSetInput, TreeNodeSetInputUnion, TreeNodeSnapshot, TreeNodeState, TreeNodeUpdateValue, TreeOptions, TreePrimitive, TreeProxy, TreeSetInput, TreeState, TreeUpdateInput, TypedNodeProxy, TypedTreeNodeState };
185
272
  //# sourceMappingURL=Tree.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.d.cts","names":[],"sources":["../../src/primitives/Tree.ts"],"sourcesContent":[],"mappings":";;;;;;;AAkBA;AAWA;AAAkD,UAXjC,aAAA,CAWiC;EAEf,SAAA,EAAA,EAAA,MAAA;EAAlB,SAAA,IAAA,EAAA,MAAA;EAGuB,SAAA,QAAA,EAAA,MAAA,GAAA,IAAA;EAAvB,SAAA,GAAA,EAAA,MAAA;EAAsB,SAAA,IAAA,EAAA,OAAA;AAMvC;AAwDA;;;AAEiB,UArEA,kBAqEA,CAAA,cArEiC,oBAqEjC,CAAA,CAAA;EAC2C,SAAA,EAAA,EAAA,MAAA;EAAtB,SAAA,IAAA,EApErB,iBAoEqB,CApEH,KAoEG,CAAA;EAAjB,SAAA,QAAA,EAAA,MAAA,GAAA,IAAA;EACM,SAAA,GAAA,EAAA,MAAA;EAAvB,SAAA,IAAA,EAlEa,sBAkEb,CAlEoC,KAkEpC,CAAA;;AAKJ;;;AACY,KAlEA,SAkEA,CAAA,eAlEyB,oBAkEzB,CAAA,GAAA,SAlE0D,aAkE1D,EAAA;;;;AAOA,KAjBA,gBAiBmB,CAAA,cAjBY,oBAiBZ,CAAA,GAAA;EAAe,SAAA,EAAA,EAAA,MAAA;EAC5C,SAAA,IAAA,EAhBe,iBAgBf,CAhBiC,KAgBjC,CAAA;EAAsB,SAAA,QAAA,EAfH,gBAeG,CAfc,qBAed,CAfoC,KAepC,CAAA,CAAA,EAAA;CACA,GAfpB,sBAeoB,CAfG,KAeH,CAAA;;;;AACF,KAXV,iBAWU,CAAA,UAXkB,aAWlB,CAAA,GAAA,CAAA,CAAA,GAVpB,CAUoB,SAVV,aAUU,CAAA,KAAA,MAAA,CAAA,GAVmB,gBAUnB,CAVoC,KAUpC,CAAA,GAAA,KAAA;AAWtB;;;;;AAEM,KAhBM,mBAgBN,CAAA,cAhBwC,oBAgBxC,CAAA,GAfJ,KAeI,CAAA,MAAA,CAAA,SAfkB,eAelB,CAAA,KAAA,QAAA,EAAA,GAAA,EAAA,GAAA,CAAA,GAdA,iBAcA,CAdkB,OAclB,CAAA,GAbA,gBAaA,CAbiB,KAajB,CAAA,MAAA,CAAA,CAAA;;;;AAMN;;;;;;AAQ4B,KAhBhB,oBAgBgB,CAAA,cAhBmB,oBAgBnB,CAAA,GAf1B,KAe0B,CAAA,MAAA,CAAA,SAfJ,eAeI,CAAA,KAAA,QAAA,EAAA,GAAA,EAAA,GAAA,CAAA,GAdtB,cAcsB,CAdP,OAcO,CAAA,GAbtB,aAasB,CAbR,KAaQ,CAAA,MAAA,CAAA,CAAA;;;;AAEO,UAVlB,cAUkB,CAAA,cAVW,oBAUX,CAAA,CAAA;EAMlB;EAAiC,SAAA,EAAA,EAAA,MAAA;EAM/B;EACL,SAAA,IAAA,EAnBG,iBAmBH,CAnBqB,KAmBrB,CAAA;EACc;EAAf,SAAA,IAAA,EAlBI,UAkBJ,CAlBe,KAkBf,CAAA,MAAA,CAAA,CAAA;EAEM;EACL,GAAA,EAAA,EAnBL,kBAmBK,CAnBc,KAmBd,CAAA;EACM;EAAf,MAAA,CAAA,KAAA,EAlBW,mBAkBX,CAlB+B,KAkB/B,CAAA,CAAA,EAAA,IAAA;;;AAQL;;AAEmB,UAtBF,iBAsBE,CAAA,eAtB+B,oBAsB/B,CAAA,CAAA;EAAV;EAGc,SAAA,EAAA,EAAA,MAAA;EAAV;EAGgB,SAAA,IAAA,EAAA,MAAA;EAAnB;EAG2B,EAAA,CAAA,cAzBlB,oBAyBkB,CAAA,CAAA,QAAA,EAxBvB,KAwBuB,CAAA,EAAA,IAAA,IAvBxB,cAuBwB,CAvBT,KAuBS,CAAA;EAGC;EAAlB,EAAA,CAAA,cAxBD,oBAwBC,CAAA,CAAA,QAAA,EAvBN,KAuBM,CAAA,EAtBf,cAsBe,CAtBA,KAsBA,CAAA;EAGQ;EAEd,GAAA,EAAA,EAzBL,aAyBK;;;;;AAQiB,UA3Bd,SA2Bc,CAAA,gBA3BU,oBA2BV,CAAA,CAAA;EAArB;EAIe,GAAA,EAAA,EA7BhB,SA6BgB,CA7BN,OA6BM,CAAA;EAGX;EACiB,GAAA,CAAA,KAAA,EA9BlB,SA8BkB,CA9BR,OA8BQ,CAAA,CAAA,EAAA,IAAA;EAArB;EAIkB,IAAA,EAAA,EA/BlB,kBA+BkB,CA/BC,OA+BD,CAAA,GAAA,SAAA;EAEd;EACiB,QAAA,CAAA,QAAA,EAAA,MAAA,GAAA,IAAA,CAAA,EA/BM,aA+BN,EAAA;EAArB;EAImB,IAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAhCT,iBAgCS,CAhCS,OAgCT,CAAA,GAAA,SAAA;EAEf;EACiB,WAAA,CAAA,cAhCH,oBAgCG,CAAA,CAAA,QAAA,EAAA,MAAA,GAAA,IAAA,EAAA,QAAA,EA9BjB,KA8BiB,EAAA,IAAA,EA7BrB,oBA6BqB,CA7BA,KA6BA,CAAA,CAAA,EAAA,MAAA;EAArB;EAsBS,UAAA,CAAA,cA/CQ,oBA+CR,CAAA,CAAA,QAAA,EAAA,MAAA,GAAA,IAAA,EAAA,QAAA,EA7CL,KA6CK,EAAA,IAAA,EA5CT,oBA4CS,CA5CY,KA4CZ,CAAA,CAAA,EAAA,MAAA;EAEL;EACE,QAAA,CAAA,cA3CS,oBA2CT,CAAA,CAAA,QAAA,EAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAxCF,KAwCE,EAAA,IAAA,EAvCN,oBAuCM,CAvCe,KAuCf,CAAA,CAAA,EAAA,MAAA;EAAX;EAGoB,WAAA,CAAA,cAtCG,oBAsCH,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EApCX,KAoCW,EAAA,IAAA,EAnCf,oBAmCe,CAnCM,KAmCN,CAAA,CAAA,EAAA,MAAA;EAEX;EACiB,YAAA,CAAA,cAlCF,oBAkCE,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAhCjB,KAgCiB,EAAA,IAAA,EA/BrB,oBA+BqB,CA/BA,KA+BA,CAAA,CAAA,EAAA,MAAA;EAApB;EAIsB,MAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAjB;EAAgB,IAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,GAAA,IAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAGtB;EAAkC,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAET;EAAV,UAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EACR;EACmC,WAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,GAAA,IAAA,CAAA,EAAA,IAAA;EAAV;EAAV,UAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,GAAA,IAAA,CAAA,EAAA,IAAA;EAAS;EAI7B,EAAA,CAAA,cAxBO,oBAwBK,CAAA,CAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAtBV,KAsBU,CAAA,EArBnB,UAqBmB,CArBR,KAqBQ,CAAA,MAAA,CAAA,CAAA;EAAe;EAAkC,QAAA,CAAA,cAlBhD,oBAkBgD,CAAA,CAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAhB3D,KAgB2D,EAAA,KAAA,EAf9D,mBAe8D,CAf1C,KAe0C,CAAA,CAAA,EAAA,IAAA;EAAV;EAAS,UAAA,EAAA,EAXxD,gBAWwD,CAXvC,OAWuC,CAAA,GAAA,SAAA;AAGxE;UAXU,mBAWgC,CAAA,gBAXE,oBAWF,CAAA,CAAA;EAAkC,SAAA,QAAA,EAAA,OAAA;EAAV,SAAA,YAAA,EATzC,SASyC,CAT/B,OAS+B,CAAA,GAAA,SAAA;EAAS,SAAA,IAAA,EAR1D,OAQ0D;EAE9D,SAAA,UAAa,EAAA,SATM,SASN,CATgB,SAShB,CAT0B,OAS1B,CAAA,CAAA,EAAA;;;AACH,KANX,YAMW,CAAA,gBANgB,oBAMhB,CAAA,GANwC,SAMxC,CANkD,OAMlD,CAAA;;AAAkB,KAH7B,eAG6B,CAAA,gBAHC,oBAGD,CAAA,GAHyB,SAGzB,CAHmC,OAGnC,CAAA;AAAkB,cAD9C,aAC8C,CAAA,gBADlB,oBACkB,EAAA,kBAAA,OAAA,GAAA,KAAA,EAAA,oBAAA,OAAA,GAAA,KAAA,CAAA,YAA9C,SAA8C,CAApC,SAAoC,CAA1B,OAA0B,CAAA,EAAlB,SAAkB,CAAR,OAAQ,CAAA,EAAA,SAAA,EAAW,WAAX,EAAwB,YAAxB,CAAqC,OAArC,CAAA,EAA6C,eAA7C,CAA6D,OAA7D,CAAA,CAAA,CAAA;EAAW,SAAA,IAAA,EAAA,eAAA;EAA0B,SAAA,MAAA,EAG5E,SAH4E,CAGlE,OAHkE,CAAA;EAAb,SAAA,MAAA,EAI/D,SAJ+D,CAIrD,OAJqD,CAAA;EAAqC,SAAA,UAAA,EAKhG,SALgG;EAAhB,SAAA,YAAA,EAM9E,WAN8E;EAG1E,SAAA,SAAA,EAIP,YAJO,CAIM,OAJN,CAAA;EAAV,SAAA,YAAA,EAKM,eALN,CAKsB,OALtB,CAAA;EACU,iBAAA,OAAA;EAAV,QAAA,iBAAA;EACI,iBAAA,cAAA;EACE,WAAA,CAAA,MAAA,EAkCJ,mBAlCI,CAkCgB,OAlChB,CAAA;EACU;EAAb,QAAA,CAAA,CAAA,EAsCT,aAtCS,CAsCK,OAtCL,EAAA,IAAA,EAsCkB,WAtClB,CAAA;EACmB;EAAhB,OAAA,CAAA,YAAA,EA6CF,SA7CE,CA6CQ,OA7CR,CAAA,CAAA,EA6CiB,aA7CjB,CA6C+B,OA7C/B,EA6CsC,SA7CtC,EAAA,IAAA,CAAA;EAgCgB;EAApB,IAAA,IAAA,CAAA,CAAA,EAqBR,OArBQ;EAKM;EAAa,MAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAqBpB,SArBoB,CAqBV,OArBU,CAAA,EAAA,GAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAqB4B,aArB5B,CAqB0C,OArB1C,EAqBiD,SArBjD,EAqB4D,WArB5D,CAAA;EAA3B;;;EAQ2C,QAAA,sBAAA;EAAO;;;EAajC,QAAA,qBAAA;EAAV;;;EAAgF,QAAA,kBAAA;EAAhC,SAAA,SAAA,EAwE/C,iBAxE+C,CAwE7B,SAxE6B,CAwEnB,OAxEmB,CAAA,EAwEX,SAxEW,CAwED,OAxEC,CAAA,CAAA;;;AAwED,UA8wBnD,WA9wBmD,CAAA,gBA8wBzB,oBA9wByB,CAAA,CAAA;EAAV;EAApC,SAAA,IAAA,EAgxBL,OAhxBK;;;AA8wBL,cAMJ,IANe,EAAA,CAAA,gBAMO,oBAJlB,CAAA,CAAA,OAAK,EAKX,WALW,CAKC,OALD,CAAA,EAAA,GAMnB,aANmB,CAML,OANK,EAAA,KAAA,EAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"Tree.d.cts","names":[],"sources":["../../src/primitives/Tree.ts"],"sourcesContent":[],"mappings":"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"}
@@ -56,6 +56,86 @@ type TreeNodeUpdateValue<TNode extends AnyTreeNodePrimitive> = TNode["data"] ext
56
56
  * always require a data object (even if empty for all-optional fields).
57
57
  */
58
58
  type TreeNodeDataSetInput<TNode extends AnyTreeNodePrimitive> = TNode["data"] extends StructPrimitive<infer TFields, any, any> ? StructSetInput<TFields> : InferSetInput<TNode["data"]>;
59
+ /**
60
+ * Type guard to check if a type is `any` or unknown (structural check).
61
+ * Returns true if T is `any`, false otherwise.
62
+ */
63
+ type IsAny<T> = 0 extends (1 & T) ? true : false;
64
+ /**
65
+ * Get children types, with special handling for self-referential nodes.
66
+ * When InferTreeNodeChildren returns `any` (from TreeNodePrimitive<..., any>),
67
+ * we fall back to using TNode itself as its own child type.
68
+ * This handles the common case of self-referential nodes like:
69
+ * FolderNode = TreeNode("folder", { children: [TreeNodeSelf, FileNode] })
70
+ * Where FolderNode's TChildren is resolved to FolderNode | FileNode,
71
+ * but the self-referenced FolderNode has TChildren = any.
72
+ */
73
+ type ResolveChildrenForInput<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = IsAny<InferTreeNodeChildren<TNode>> extends true ? TOriginalNode : InferTreeNodeChildren<TNode>;
74
+ /**
75
+ * Helper type that creates a properly typed node input for a specific node type.
76
+ * This is the "strict" version that enforces exact property matching.
77
+ *
78
+ * The TOriginalNode parameter is used to track the original root node type
79
+ * for proper self-reference resolution in deeply nested structures.
80
+ */
81
+ type TreeNodeSetInputStrictWithRoot<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = {
82
+ readonly type: InferTreeNodeType<TNode>;
83
+ readonly id?: string;
84
+ readonly children: TreeNodeSetInputUnionWithRoot<ResolveChildrenForInput<TNode, TOriginalNode>, TOriginalNode>[];
85
+ } & TreeNodeDataSetInput<TNode>;
86
+ /**
87
+ * Distributive conditional type that creates a union of TreeNodeSetInputStrict
88
+ * for each node type in the union. This ensures proper type discrimination.
89
+ *
90
+ * When TNode is a union (e.g., FolderNode | FileNode), this distributes to:
91
+ * TreeNodeSetInputStrict<FolderNode> | TreeNodeSetInputStrict<FileNode>
92
+ *
93
+ * This creates a proper discriminated union where excess property checking works.
94
+ */
95
+ type TreeNodeSetInputUnionWithRoot<TNode extends AnyTreeNodePrimitive, TOriginalNode extends AnyTreeNodePrimitive> = TNode extends AnyTreeNodePrimitive ? TreeNodeSetInputStrictWithRoot<TNode, TOriginalNode> : never;
96
+ /**
97
+ * Helper type for single-parameter usage - uses TNode as its own original.
98
+ */
99
+ type TreeNodeSetInputStrict<TNode extends AnyTreeNodePrimitive> = TreeNodeSetInputStrictWithRoot<TNode, TNode>;
100
+ /**
101
+ * Distributive conditional for single-parameter usage.
102
+ */
103
+ type TreeNodeSetInputUnion<TNode extends AnyTreeNodePrimitive> = TNode extends AnyTreeNodePrimitive ? TreeNodeSetInputStrict<TNode> : never;
104
+ /**
105
+ * Input type for a single node in a nested tree set/default operation.
106
+ *
107
+ * - `type` is REQUIRED - explicit type discriminator for the node
108
+ * - `id` is optional - auto-generated if not provided
109
+ * - `children` is a typed array of allowed child node inputs
110
+ * - Data fields are spread at the node level (like TreeNodeSnapshot)
111
+ *
112
+ * When TNode is a union type (e.g., from InferTreeNodeChildren), this properly
113
+ * distributes to create a discriminated union where:
114
+ * - Each variant has its specific `type` literal
115
+ * - Each variant has its specific data fields
116
+ * - Excess property checking works correctly
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const input: TreeNodeSetInput<BoardNode> = {
121
+ * type: "board",
122
+ * name: "My Board",
123
+ * children: [
124
+ * { type: "column", name: "Todo", children: [] }
125
+ * ]
126
+ * };
127
+ * ```
128
+ */
129
+ type TreeNodeSetInput<TNode extends AnyTreeNodePrimitive> = TreeNodeSetInputUnion<TNode>;
130
+ /**
131
+ * Input type for tree set() and default() operations.
132
+ * Accepts a nested tree structure that will be converted to flat TreeState internally.
133
+ */
134
+ type TreeSetInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeNodeSetInput<TRoot$1>;
135
+ /**
136
+ * Infer the set input type for a tree primitive.
137
+ */
138
+ type InferTreeSetInput<T extends TreePrimitive<any>> = T extends TreePrimitive<infer TRoot> ? TreeSetInput<TRoot> : never;
59
139
  /**
60
140
  * Typed proxy for a specific node type - provides type-safe data access
61
141
  */
@@ -92,8 +172,8 @@ interface TreeNodeProxyBase<_TRoot extends AnyTreeNodePrimitive> {
92
172
  interface TreeProxy<TRoot$1 extends AnyTreeNodePrimitive> {
93
173
  /** Gets the entire tree state (flat array of nodes) */
94
174
  get(): TreeState<TRoot$1>;
95
- /** Replaces the entire tree */
96
- set(nodes: TreeState<TRoot$1>): void;
175
+ /** Replaces the entire tree with a nested input structure */
176
+ set(input: TreeSetInput<TRoot$1>): void;
97
177
  /** Gets the root node state */
98
178
  root(): TypedTreeNodeState<TRoot$1> | undefined;
99
179
  /** Gets ordered children states of a parent (null for root's children) */
@@ -131,14 +211,12 @@ interface TreeProxy<TRoot$1 extends AnyTreeNodePrimitive> {
131
211
  }
132
212
  interface TreePrimitiveSchema<TRoot$1 extends AnyTreeNodePrimitive> {
133
213
  readonly required: boolean;
134
- readonly defaultValue: TreeState<TRoot$1> | undefined;
214
+ readonly defaultInput: TreeNodeSetInput<TRoot$1> | undefined;
135
215
  readonly root: TRoot$1;
136
216
  readonly validators: readonly Validator<TreeState<TRoot$1>>[];
137
217
  }
138
- /** Input type for tree set() - tree state */
139
- type TreeSetInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeState<TRoot$1>;
140
- /** Input type for tree update() - same as set() for trees */
141
- type TreeUpdateInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeState<TRoot$1>;
218
+ /** Input type for tree update() - same as set() for trees (nested format) */
219
+ type TreeUpdateInput<TRoot$1 extends AnyTreeNodePrimitive> = TreeNodeSetInput<TRoot$1>;
142
220
  declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<TreeState<TRoot$1>, TreeProxy<TRoot$1>, TRequired, THasDefault, TreeSetInput<TRoot$1>, TreeUpdateInput<TRoot$1>> {
143
221
  readonly _tag: "TreePrimitive";
144
222
  readonly _State: TreeState<TRoot$1>;
@@ -153,8 +231,8 @@ declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired exte
153
231
  constructor(schema: TreePrimitiveSchema<TRoot$1>);
154
232
  /** Mark this tree as required */
155
233
  required(): TreePrimitive<TRoot$1, true, THasDefault>;
156
- /** Set a default value for this tree */
157
- default(defaultValue: TreeState<TRoot$1>): TreePrimitive<TRoot$1, TRequired, true>;
234
+ /** Set a default value for this tree (nested format) */
235
+ default(defaultInput: TreeNodeSetInput<TRoot$1>): TreePrimitive<TRoot$1, TRequired, true>;
158
236
  /** Get the root node type */
159
237
  get root(): TRoot$1;
160
238
  /** Add a custom validation rule */
@@ -171,6 +249,15 @@ declare class TreePrimitive<TRoot$1 extends AnyTreeNodePrimitive, TRequired exte
171
249
  * Validate that a node type can be a child of a parent node type
172
250
  */
173
251
  private _validateChildType;
252
+ /**
253
+ * Convert a nested TreeNodeSetInput to flat TreeState format.
254
+ * Recursively processes nodes, generating IDs and positions as needed.
255
+ *
256
+ * @param input - The root nested input to convert
257
+ * @param generateId - Optional ID generator (defaults to crypto.randomUUID)
258
+ * @returns Flat TreeState array
259
+ */
260
+ private _convertNestedToFlat;
174
261
  readonly _internal: PrimitiveInternal<TreeState<TRoot$1>, TreeProxy<TRoot$1>>;
175
262
  }
176
263
  /** Options for creating a Tree primitive */
@@ -181,5 +268,5 @@ interface TreeOptions<TRoot$1 extends AnyTreeNodePrimitive> {
181
268
  /** Creates a new TreePrimitive with the given root node type */
182
269
  declare const Tree: <TRoot$1 extends AnyTreeNodePrimitive>(options: TreeOptions<TRoot$1>) => TreePrimitive<TRoot$1, false, false>;
183
270
  //#endregion
184
- export { InferTreeSnapshot, Tree, TreeNodeDataSetInput, TreeNodeProxyBase, TreeNodeSnapshot, TreeNodeState, TreeNodeUpdateValue, TreeOptions, TreePrimitive, TreeProxy, TreeSetInput, TreeState, TreeUpdateInput, TypedNodeProxy, TypedTreeNodeState };
271
+ export { InferTreeSetInput, InferTreeSnapshot, Tree, TreeNodeDataSetInput, TreeNodeProxyBase, TreeNodeSetInput, TreeNodeSetInputUnion, TreeNodeSnapshot, TreeNodeState, TreeNodeUpdateValue, TreeOptions, TreePrimitive, TreeProxy, TreeSetInput, TreeState, TreeUpdateInput, TypedNodeProxy, TypedTreeNodeState };
185
272
  //# sourceMappingURL=Tree.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.d.mts","names":[],"sources":["../../src/primitives/Tree.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"Tree.d.mts","names":[],"sources":["../../src/primitives/Tree.ts"],"sourcesContent":[],"mappings":"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"}
@@ -5,9 +5,15 @@ import { make } from "../OperationDefinition.mjs";
5
5
  import { isPrefix, pathsEqual, pathsOverlap } from "../OperationPath.mjs";
6
6
  import { fromDefinition } from "../Operation.mjs";
7
7
  import { base62CharSet, generateKeyBetween } from "../FractionalIndex.mjs";
8
+ import { _objectWithoutProperties } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutProperties.mjs";
8
9
  import { Effect, Schema } from "effect";
9
10
 
10
11
  //#region src/primitives/Tree.ts
12
+ const _excluded = [
13
+ "type",
14
+ "id",
15
+ "children"
16
+ ];
11
17
  /**
12
18
  * Helper to get children sorted by position
13
19
  */
@@ -132,8 +138,9 @@ var TreePrimitive = class TreePrimitive {
132
138
  get: () => {
133
139
  return getCurrentState();
134
140
  },
135
- set: (nodes) => {
136
- env.addOperation(fromDefinition(operationPath, this._opDefinitions.set, nodes));
141
+ set: (input) => {
142
+ const flatState = this._convertNestedToFlat(input, env.generateId);
143
+ env.addOperation(fromDefinition(operationPath, this._opDefinitions.set, flatState));
137
144
  },
138
145
  root: () => {
139
146
  return getCurrentState().find((n) => n.parentId === null);
@@ -428,7 +435,7 @@ var TreePrimitive = class TreePrimitive {
428
435
  },
429
436
  getInitialState: () => {
430
437
  var _rootNodeType$data$_i;
431
- if (this._schema.defaultValue !== void 0) return this._schema.defaultValue;
438
+ if (this._schema.defaultInput !== void 0) return this._convertNestedToFlat(this._schema.defaultInput);
432
439
  const rootNodeType = this._schema.root;
433
440
  const rootData = (_rootNodeType$data$_i = rootNodeType.data._internal.getInitialState()) !== null && _rootNodeType$data$_i !== void 0 ? _rootNodeType$data$_i : {};
434
441
  const rootId = crypto.randomUUID();
@@ -441,6 +448,9 @@ var TreePrimitive = class TreePrimitive {
441
448
  data: rootData
442
449
  }];
443
450
  },
451
+ convertSetInputToState: (input) => {
452
+ return this._convertNestedToFlat(input);
453
+ },
444
454
  transformOperation: (clientOp, serverOp) => {
445
455
  const clientPath = clientOp.path;
446
456
  const serverPath = serverOp.path;
@@ -509,9 +519,9 @@ var TreePrimitive = class TreePrimitive {
509
519
  required() {
510
520
  return new TreePrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { required: true }));
511
521
  }
512
- /** Set a default value for this tree */
513
- default(defaultValue) {
514
- return new TreePrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { defaultValue }));
522
+ /** Set a default value for this tree (nested format) */
523
+ default(defaultInput) {
524
+ return new TreePrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { defaultInput }));
515
525
  }
516
526
  /** Get the root node type */
517
527
  get root() {
@@ -560,11 +570,49 @@ var TreePrimitive = class TreePrimitive {
560
570
  const parentNodePrimitive = this._getNodeTypePrimitive(parentType);
561
571
  if (!parentNodePrimitive.isChildAllowed(childType)) throw new ValidationError(`Node type "${childType}" is not allowed as a child of "${parentType}". Allowed types: ${parentNodePrimitive.children.map((c) => c.type).join(", ") || "none"}`);
562
572
  }
573
+ /**
574
+ * Convert a nested TreeNodeSetInput to flat TreeState format.
575
+ * Recursively processes nodes, generating IDs and positions as needed.
576
+ *
577
+ * @param input - The root nested input to convert
578
+ * @param generateId - Optional ID generator (defaults to crypto.randomUUID)
579
+ * @returns Flat TreeState array
580
+ */
581
+ _convertNestedToFlat(input, generateId = () => crypto.randomUUID()) {
582
+ const result = [];
583
+ const seenIds = /* @__PURE__ */ new Set();
584
+ const processNode = (nodeInput, parentId, parentType, leftPos, rightPos) => {
585
+ var _nodeInput$id;
586
+ this._validateChildType(parentType, nodeInput.type);
587
+ const nodePrimitive = this._getNodeTypePrimitive(nodeInput.type);
588
+ const id = (_nodeInput$id = nodeInput.id) !== null && _nodeInput$id !== void 0 ? _nodeInput$id : generateId();
589
+ if (seenIds.has(id)) throw new ValidationError(`Duplicate node ID: ${id}`);
590
+ seenIds.add(id);
591
+ const pos = generateTreePosBetween(leftPos, rightPos);
592
+ const { type: _type, id: _id, children } = nodeInput, dataFields = _objectWithoutProperties(nodeInput, _excluded);
593
+ const mergedData = applyDefaults(nodePrimitive.data, dataFields);
594
+ result.push({
595
+ id,
596
+ type: nodeInput.type,
597
+ parentId,
598
+ pos,
599
+ data: mergedData
600
+ });
601
+ let prevChildPos = null;
602
+ for (let i = 0; i < children.length; i++) {
603
+ const childInput = children[i];
604
+ processNode(childInput, id, nodeInput.type, prevChildPos, null);
605
+ prevChildPos = result[result.length - 1].pos;
606
+ }
607
+ };
608
+ processNode(input, null, null, null, null);
609
+ return result;
610
+ }
563
611
  };
564
612
  /** Creates a new TreePrimitive with the given root node type */
565
613
  const Tree = (options) => new TreePrimitive({
566
614
  required: false,
567
- defaultValue: void 0,
615
+ defaultInput: void 0,
568
616
  root: options.root,
569
617
  validators: []
570
618
  });