@voidhash/mimic 0.0.1 → 0.0.3

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 (278) hide show
  1. package/.turbo/turbo-build.log +257 -42
  2. package/dist/Document.cjs +152 -0
  3. package/dist/Document.d.cts +67 -0
  4. package/dist/Document.d.cts.map +1 -0
  5. package/dist/Document.d.mts +68 -0
  6. package/dist/Document.d.mts.map +1 -0
  7. package/dist/Document.mjs +147 -0
  8. package/dist/Document.mjs.map +1 -0
  9. package/dist/EffectSchema.cjs +180 -0
  10. package/dist/EffectSchema.d.cts +84 -0
  11. package/dist/EffectSchema.d.cts.map +1 -0
  12. package/dist/EffectSchema.d.mts +84 -0
  13. package/dist/EffectSchema.d.mts.map +1 -0
  14. package/dist/EffectSchema.mjs +176 -0
  15. package/dist/EffectSchema.mjs.map +1 -0
  16. package/dist/FractionalIndex.cjs +365 -0
  17. package/dist/FractionalIndex.mjs +364 -0
  18. package/dist/FractionalIndex.mjs.map +1 -0
  19. package/dist/Operation.cjs +53 -0
  20. package/dist/Operation.d.cts +39 -0
  21. package/dist/Operation.d.cts.map +1 -0
  22. package/dist/Operation.d.mts +39 -0
  23. package/dist/Operation.d.mts.map +1 -0
  24. package/dist/Operation.mjs +46 -0
  25. package/dist/Operation.mjs.map +1 -0
  26. package/dist/OperationDefinition.cjs +13 -0
  27. package/dist/OperationDefinition.d.cts +12 -0
  28. package/dist/OperationDefinition.d.cts.map +1 -0
  29. package/dist/OperationDefinition.d.mts +12 -0
  30. package/dist/OperationDefinition.d.mts.map +1 -0
  31. package/dist/OperationDefinition.mjs +13 -0
  32. package/dist/OperationDefinition.mjs.map +1 -0
  33. package/dist/OperationPath.cjs +148 -0
  34. package/dist/OperationPath.d.cts +60 -0
  35. package/dist/OperationPath.d.cts.map +1 -0
  36. package/dist/OperationPath.d.mts +60 -0
  37. package/dist/OperationPath.d.mts.map +1 -0
  38. package/dist/OperationPath.mjs +138 -0
  39. package/dist/OperationPath.mjs.map +1 -0
  40. package/dist/{Presence-gWrmGBeu.cjs → Presence.cjs} +4 -39
  41. package/dist/{Presence-N8u7Eppr.d.mts → Presence.d.cts} +2 -2
  42. package/dist/Presence.d.cts.map +1 -0
  43. package/dist/{Presence-DKKP4v5X.d.cts → Presence.d.mts} +2 -2
  44. package/dist/Presence.d.mts.map +1 -0
  45. package/dist/{Presence-DdMVKcOv.mjs → Presence.mjs} +3 -28
  46. package/dist/Presence.mjs.map +1 -0
  47. package/dist/Primitive.cjs +52 -0
  48. package/dist/Primitive.d.cts +20 -0
  49. package/dist/Primitive.d.cts.map +1 -0
  50. package/dist/Primitive.d.mts +20 -0
  51. package/dist/Primitive.d.mts.map +1 -0
  52. package/dist/Primitive.mjs +48 -0
  53. package/dist/Primitive.mjs.map +1 -0
  54. package/dist/ProxyEnvironment.cjs +34 -0
  55. package/dist/ProxyEnvironment.d.cts +31 -0
  56. package/dist/ProxyEnvironment.d.cts.map +1 -0
  57. package/dist/ProxyEnvironment.d.mts +31 -0
  58. package/dist/ProxyEnvironment.d.mts.map +1 -0
  59. package/dist/ProxyEnvironment.mjs +29 -0
  60. package/dist/ProxyEnvironment.mjs.map +1 -0
  61. package/dist/Transaction.cjs +66 -0
  62. package/dist/Transaction.d.cts +56 -0
  63. package/dist/Transaction.d.cts.map +1 -0
  64. package/dist/Transaction.d.mts +56 -0
  65. package/dist/Transaction.d.mts.map +1 -0
  66. package/dist/Transaction.mjs +58 -0
  67. package/dist/Transaction.mjs.map +1 -0
  68. package/dist/Transform.cjs +11 -0
  69. package/dist/Transform.d.cts +21 -0
  70. package/dist/Transform.d.cts.map +1 -0
  71. package/dist/Transform.d.mts +21 -0
  72. package/dist/Transform.d.mts.map +1 -0
  73. package/dist/Transform.mjs +6 -0
  74. package/dist/Transform.mjs.map +1 -0
  75. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +14 -0
  76. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs +14 -0
  77. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs +27 -0
  78. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs +27 -0
  79. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +16 -0
  80. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs +16 -0
  81. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +11 -0
  82. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.mjs +11 -0
  83. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +18 -0
  84. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs +12 -0
  85. package/dist/_virtual/rolldown_runtime.cjs +43 -0
  86. package/dist/{chunk-CLMFDpHK.mjs → _virtual/rolldown_runtime.mjs} +1 -1
  87. package/dist/client/ClientDocument.cjs +590 -0
  88. package/dist/client/ClientDocument.d.cts +161 -0
  89. package/dist/client/ClientDocument.d.cts.map +1 -0
  90. package/dist/client/ClientDocument.d.mts +162 -0
  91. package/dist/client/ClientDocument.d.mts.map +1 -0
  92. package/dist/client/ClientDocument.mjs +586 -0
  93. package/dist/client/ClientDocument.mjs.map +1 -0
  94. package/dist/client/Rebase.cjs +204 -0
  95. package/dist/client/Rebase.d.cts +87 -0
  96. package/dist/client/Rebase.d.cts.map +1 -0
  97. package/dist/client/Rebase.d.mts +88 -0
  98. package/dist/client/Rebase.d.mts.map +1 -0
  99. package/dist/client/Rebase.mjs +198 -0
  100. package/dist/client/Rebase.mjs.map +1 -0
  101. package/dist/client/StateMonitor.cjs +133 -0
  102. package/dist/client/StateMonitor.d.cts +122 -0
  103. package/dist/client/StateMonitor.d.cts.map +1 -0
  104. package/dist/client/StateMonitor.d.mts +122 -0
  105. package/dist/client/StateMonitor.d.mts.map +1 -0
  106. package/dist/client/StateMonitor.mjs +129 -0
  107. package/dist/client/StateMonitor.mjs.map +1 -0
  108. package/dist/client/Transport.cjs +11 -0
  109. package/dist/client/Transport.d.cts +237 -0
  110. package/dist/client/Transport.d.cts.map +1 -0
  111. package/dist/client/Transport.d.mts +237 -0
  112. package/dist/client/Transport.d.mts.map +1 -0
  113. package/dist/client/Transport.mjs +6 -0
  114. package/dist/client/Transport.mjs.map +1 -0
  115. package/dist/client/WebSocketTransport.cjs +396 -0
  116. package/dist/client/WebSocketTransport.d.cts +29 -0
  117. package/dist/client/WebSocketTransport.d.cts.map +1 -0
  118. package/dist/client/WebSocketTransport.d.mts +29 -0
  119. package/dist/client/WebSocketTransport.d.mts.map +1 -0
  120. package/dist/client/WebSocketTransport.mjs +392 -0
  121. package/dist/client/WebSocketTransport.mjs.map +1 -0
  122. package/dist/client/errors.cjs +135 -0
  123. package/dist/client/errors.d.cts +87 -0
  124. package/dist/client/errors.d.cts.map +1 -0
  125. package/dist/client/errors.d.mts +87 -0
  126. package/dist/client/errors.d.mts.map +1 -0
  127. package/dist/client/errors.mjs +127 -0
  128. package/dist/client/errors.mjs.map +1 -0
  129. package/dist/client/index.cjs +22 -1424
  130. package/dist/client/index.d.cts +8 -692
  131. package/dist/client/index.d.mts +8 -692
  132. package/dist/client/index.mjs +9 -1413
  133. package/dist/index.cjs +30 -2529
  134. package/dist/index.d.cts +12 -143
  135. package/dist/index.d.mts +12 -143
  136. package/dist/index.mjs +13 -2526
  137. package/dist/primitives/Array.cjs +302 -0
  138. package/dist/primitives/Array.d.cts +95 -0
  139. package/dist/primitives/Array.d.cts.map +1 -0
  140. package/dist/primitives/Array.d.mts +95 -0
  141. package/dist/primitives/Array.d.mts.map +1 -0
  142. package/dist/primitives/Array.mjs +301 -0
  143. package/dist/primitives/Array.mjs.map +1 -0
  144. package/dist/primitives/Boolean.cjs +95 -0
  145. package/dist/primitives/Boolean.d.cts +44 -0
  146. package/dist/primitives/Boolean.d.cts.map +1 -0
  147. package/dist/primitives/Boolean.d.mts +44 -0
  148. package/dist/primitives/Boolean.d.mts.map +1 -0
  149. package/dist/primitives/Boolean.mjs +94 -0
  150. package/dist/primitives/Boolean.mjs.map +1 -0
  151. package/dist/primitives/Either.cjs +200 -0
  152. package/dist/primitives/Either.d.cts +113 -0
  153. package/dist/primitives/Either.d.cts.map +1 -0
  154. package/dist/primitives/Either.d.mts +113 -0
  155. package/dist/primitives/Either.d.mts.map +1 -0
  156. package/dist/primitives/Either.mjs +199 -0
  157. package/dist/primitives/Either.mjs.map +1 -0
  158. package/dist/primitives/Lazy.cjs +46 -0
  159. package/dist/primitives/Lazy.d.cts +46 -0
  160. package/dist/primitives/Lazy.d.cts.map +1 -0
  161. package/dist/primitives/Lazy.d.mts +46 -0
  162. package/dist/primitives/Lazy.d.mts.map +1 -0
  163. package/dist/primitives/Lazy.mjs +46 -0
  164. package/dist/primitives/Lazy.mjs.map +1 -0
  165. package/dist/primitives/Literal.cjs +91 -0
  166. package/dist/primitives/Literal.d.cts +46 -0
  167. package/dist/primitives/Literal.d.cts.map +1 -0
  168. package/dist/primitives/Literal.d.mts +46 -0
  169. package/dist/primitives/Literal.d.mts.map +1 -0
  170. package/dist/primitives/Literal.mjs +90 -0
  171. package/dist/primitives/Literal.mjs.map +1 -0
  172. package/dist/primitives/Number.cjs +115 -0
  173. package/dist/primitives/Number.d.cts +54 -0
  174. package/dist/primitives/Number.d.cts.map +1 -0
  175. package/dist/primitives/Number.d.mts +54 -0
  176. package/dist/primitives/Number.d.mts.map +1 -0
  177. package/dist/primitives/Number.mjs +114 -0
  178. package/dist/primitives/Number.mjs.map +1 -0
  179. package/dist/primitives/String.cjs +127 -0
  180. package/dist/primitives/String.d.cts +56 -0
  181. package/dist/primitives/String.d.cts.map +1 -0
  182. package/dist/primitives/String.d.mts +56 -0
  183. package/dist/primitives/String.d.mts.map +1 -0
  184. package/dist/primitives/String.mjs +126 -0
  185. package/dist/primitives/String.mjs.map +1 -0
  186. package/dist/primitives/Struct.cjs +207 -0
  187. package/dist/primitives/Struct.d.cts +96 -0
  188. package/dist/primitives/Struct.d.cts.map +1 -0
  189. package/dist/primitives/Struct.d.mts +97 -0
  190. package/dist/primitives/Struct.d.mts.map +1 -0
  191. package/dist/primitives/Struct.mjs +206 -0
  192. package/dist/primitives/Struct.mjs.map +1 -0
  193. package/dist/primitives/Tree.cjs +575 -0
  194. package/dist/primitives/Tree.d.cts +185 -0
  195. package/dist/primitives/Tree.d.cts.map +1 -0
  196. package/dist/primitives/Tree.d.mts +185 -0
  197. package/dist/primitives/Tree.d.mts.map +1 -0
  198. package/dist/primitives/Tree.mjs +574 -0
  199. package/dist/primitives/Tree.mjs.map +1 -0
  200. package/dist/primitives/TreeNode.cjs +73 -0
  201. package/dist/primitives/TreeNode.d.cts +92 -0
  202. package/dist/primitives/TreeNode.d.cts.map +1 -0
  203. package/dist/primitives/TreeNode.d.mts +93 -0
  204. package/dist/primitives/TreeNode.d.mts.map +1 -0
  205. package/dist/primitives/TreeNode.mjs +72 -0
  206. package/dist/primitives/TreeNode.mjs.map +1 -0
  207. package/dist/primitives/Union.cjs +170 -0
  208. package/dist/primitives/Union.d.cts +81 -0
  209. package/dist/primitives/Union.d.cts.map +1 -0
  210. package/dist/primitives/Union.d.mts +81 -0
  211. package/dist/primitives/Union.d.mts.map +1 -0
  212. package/dist/primitives/Union.mjs +169 -0
  213. package/dist/primitives/Union.mjs.map +1 -0
  214. package/dist/primitives/shared.cjs +60 -0
  215. package/dist/primitives/shared.d.cts +147 -0
  216. package/dist/primitives/shared.d.cts.map +1 -0
  217. package/dist/primitives/shared.d.mts +147 -0
  218. package/dist/primitives/shared.d.mts.map +1 -0
  219. package/dist/primitives/shared.mjs +58 -0
  220. package/dist/primitives/shared.mjs.map +1 -0
  221. package/dist/server/ServerDocument.cjs +110 -0
  222. package/dist/server/ServerDocument.d.cts +98 -0
  223. package/dist/server/ServerDocument.d.cts.map +1 -0
  224. package/dist/server/ServerDocument.d.mts +99 -0
  225. package/dist/server/ServerDocument.d.mts.map +1 -0
  226. package/dist/server/ServerDocument.mjs +106 -0
  227. package/dist/server/ServerDocument.mjs.map +1 -0
  228. package/dist/server/errors.cjs +85 -0
  229. package/dist/server/errors.d.cts +53 -0
  230. package/dist/server/errors.d.cts.map +1 -0
  231. package/dist/server/errors.d.mts +53 -0
  232. package/dist/server/errors.d.mts.map +1 -0
  233. package/dist/server/errors.mjs +81 -0
  234. package/dist/server/errors.mjs.map +1 -0
  235. package/dist/server/index.cjs +9 -185
  236. package/dist/server/index.d.cts +3 -148
  237. package/dist/server/index.d.mts +3 -148
  238. package/dist/server/index.mjs +3 -181
  239. package/dist/types/index.cjs +16 -0
  240. package/dist/types/index.d.cts +16 -0
  241. package/dist/types/index.d.cts.map +1 -0
  242. package/dist/types/index.d.mts +16 -0
  243. package/dist/types/index.d.mts.map +1 -0
  244. package/dist/types/index.mjs +12 -0
  245. package/dist/types/index.mjs.map +1 -0
  246. package/dist/utils/tree-helpers.cjs +443 -0
  247. package/dist/utils/tree-helpers.d.cts +280 -0
  248. package/dist/utils/tree-helpers.d.cts.map +1 -0
  249. package/dist/utils/tree-helpers.d.mts +280 -0
  250. package/dist/utils/tree-helpers.d.mts.map +1 -0
  251. package/dist/utils/tree-helpers.mjs +439 -0
  252. package/dist/utils/tree-helpers.mjs.map +1 -0
  253. package/package.json +2 -2
  254. package/src/index.ts +2 -0
  255. package/src/primitives/shared.ts +7 -1
  256. package/src/types/index.ts +137 -0
  257. package/src/utils/index.ts +7 -0
  258. package/src/utils/tree-helpers.ts +648 -0
  259. package/tsdown.config.ts +1 -1
  260. package/dist/Document-ChuFrTk1.cjs +0 -571
  261. package/dist/Document-CwiAFTIq.mjs +0 -438
  262. package/dist/Document-CwiAFTIq.mjs.map +0 -1
  263. package/dist/Presence-DKKP4v5X.d.cts.map +0 -1
  264. package/dist/Presence-DdMVKcOv.mjs.map +0 -1
  265. package/dist/Presence-N8u7Eppr.d.mts.map +0 -1
  266. package/dist/Primitive-CvFVxR8_.d.cts +0 -1175
  267. package/dist/Primitive-CvFVxR8_.d.cts.map +0 -1
  268. package/dist/Primitive-lEhQyGVL.d.mts +0 -1175
  269. package/dist/Primitive-lEhQyGVL.d.mts.map +0 -1
  270. package/dist/client/index.d.cts.map +0 -1
  271. package/dist/client/index.d.mts.map +0 -1
  272. package/dist/client/index.mjs.map +0 -1
  273. package/dist/index.d.cts.map +0 -1
  274. package/dist/index.d.mts.map +0 -1
  275. package/dist/index.mjs.map +0 -1
  276. package/dist/server/index.d.cts.map +0 -1
  277. package/dist/server/index.d.mts.map +0 -1
  278. package/dist/server/index.mjs.map +0 -1
@@ -0,0 +1,280 @@
1
+ import { AnyTreeNodePrimitive } from "../primitives/TreeNode.cjs";
2
+ import { TreeNodeSnapshot, TreePrimitive } from "../primitives/Tree.cjs";
3
+
4
+ //#region src/utils/tree-helpers.d.ts
5
+ declare namespace tree_helpers_d_exports {
6
+ export { FlattenedNode, NodeSearchResult, ParentSearchResult, TraverseOptions, buildNodeTypeMap, canAddChildType, findNode, findNodeById, findNodeWithPath, findNodes, flattenTree, getAllNodeTypes, getAllowedChildTypes, getAllowedChildTypesForNode, getAncestors, getDescendants, getNodeDepth, getNodePrimitive, getNodeTypeByName, getParent, getSiblings, getSubtree, isAncestorOf, isChildTypeAllowed, mapTree, traverse };
7
+ }
8
+ /**
9
+ * Result of finding a node with path information.
10
+ */
11
+ interface NodeSearchResult<TNode extends AnyTreeNodePrimitive> {
12
+ readonly node: TreeNodeSnapshot<TNode>;
13
+ readonly path: readonly string[];
14
+ readonly depth: number;
15
+ }
16
+ /**
17
+ * Result of finding a parent node.
18
+ */
19
+ interface ParentSearchResult<TNode extends AnyTreeNodePrimitive> {
20
+ readonly parent: TreeNodeSnapshot<TNode>;
21
+ readonly childIndex: number;
22
+ }
23
+ /**
24
+ * Flattened node with parent information.
25
+ */
26
+ interface FlattenedNode<TNode extends AnyTreeNodePrimitive> {
27
+ readonly node: TreeNodeSnapshot<TNode>;
28
+ readonly parentId: string | null;
29
+ readonly depth: number;
30
+ }
31
+ /**
32
+ * Options for tree traversal.
33
+ */
34
+ interface TraverseOptions {
35
+ readonly order?: "pre" | "post";
36
+ }
37
+ /**
38
+ * Find a node by ID in a tree snapshot.
39
+ *
40
+ * @param snapshot - The root tree snapshot
41
+ * @param id - The node ID to find
42
+ * @returns The node snapshot if found, undefined otherwise
43
+ */
44
+ declare function findNodeById<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, id: string): TreeNodeSnapshot<TNode> | undefined;
45
+ /**
46
+ * Find a node by ID with full path information.
47
+ *
48
+ * @param snapshot - The root tree snapshot
49
+ * @param id - The node ID to find
50
+ * @returns NodeSearchResult with node, path, and depth, or undefined if not found
51
+ */
52
+ declare function findNodeWithPath<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, id: string): NodeSearchResult<TNode> | undefined;
53
+ /**
54
+ * Get the parent node of a given node ID.
55
+ *
56
+ * @param snapshot - The root tree snapshot
57
+ * @param nodeId - The ID of the node whose parent we want
58
+ * @returns ParentSearchResult with parent node and child index, or undefined
59
+ */
60
+ declare function getParent<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): ParentSearchResult<TNode> | undefined;
61
+ /**
62
+ * Get a subtree rooted at a specific node ID.
63
+ *
64
+ * @param snapshot - The root tree snapshot
65
+ * @param nodeId - The ID of the node to use as new root
66
+ * @returns The subtree snapshot, or undefined if node not found
67
+ */
68
+ declare function getSubtree<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): TreeNodeSnapshot<TNode> | undefined;
69
+ /**
70
+ * Get all ancestor nodes from a node up to the root.
71
+ *
72
+ * @param snapshot - The root tree snapshot
73
+ * @param nodeId - The ID of the node
74
+ * @returns Array of ancestor snapshots from immediate parent to root, or empty array
75
+ */
76
+ declare function getAncestors<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): readonly TreeNodeSnapshot<TNode>[];
77
+ /**
78
+ * Get all descendant nodes of a given node (flat array).
79
+ *
80
+ * @param snapshot - The root tree snapshot
81
+ * @param nodeId - The ID of the node (if undefined, returns all descendants of root)
82
+ * @returns Flat array of all descendant node snapshots
83
+ */
84
+ declare function getDescendants<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId?: string): readonly TreeNodeSnapshot<TNode>[];
85
+ /**
86
+ * Get siblings of a node (nodes with the same parent).
87
+ *
88
+ * @param snapshot - The root tree snapshot
89
+ * @param nodeId - The ID of the node
90
+ * @param includeSelf - Whether to include the node itself (default: false)
91
+ * @returns Array of sibling snapshots
92
+ */
93
+ declare function getSiblings<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string, includeSelf?: boolean): readonly TreeNodeSnapshot<TNode>[];
94
+ /**
95
+ * Find the first node matching a predicate.
96
+ *
97
+ * @param snapshot - The root tree snapshot
98
+ * @param predicate - Function to test each node
99
+ * @returns First matching node snapshot, or undefined
100
+ */
101
+ declare function findNode<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, predicate: (node: TreeNodeSnapshot<TNode>) => boolean): TreeNodeSnapshot<TNode> | undefined;
102
+ /**
103
+ * Find all nodes matching a predicate.
104
+ *
105
+ * @param snapshot - The root tree snapshot
106
+ * @param predicate - Function to test each node
107
+ * @returns Array of matching node snapshots
108
+ */
109
+ declare function findNodes<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, predicate: (node: TreeNodeSnapshot<TNode>) => boolean): readonly TreeNodeSnapshot<TNode>[];
110
+ /**
111
+ * Get the depth of a specific node (0 = root).
112
+ *
113
+ * @param snapshot - The root tree snapshot
114
+ * @param nodeId - The ID of the node
115
+ * @returns The depth, or -1 if not found
116
+ */
117
+ declare function getNodeDepth<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): number;
118
+ /**
119
+ * Check if one node is an ancestor of another.
120
+ *
121
+ * @param snapshot - The root tree snapshot
122
+ * @param ancestorId - Potential ancestor node ID
123
+ * @param descendantId - Potential descendant node ID
124
+ * @returns true if ancestorId is an ancestor of descendantId
125
+ */
126
+ declare function isAncestorOf<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, ancestorId: string, descendantId: string): boolean;
127
+ /**
128
+ * Traverse the tree and call a visitor function for each node.
129
+ * Return false from visitor to stop traversal.
130
+ *
131
+ * @param snapshot - The root tree snapshot
132
+ * @param visitor - Function called for each node (return false to stop)
133
+ * @param options - Traversal options (order: 'pre' | 'post')
134
+ */
135
+ declare function traverse<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, visitor: (node: TreeNodeSnapshot<TNode>, depth: number) => void | false, options?: TraverseOptions): void;
136
+ /**
137
+ * Flatten the tree into an array with parent information.
138
+ *
139
+ * @param snapshot - The root tree snapshot
140
+ * @returns Array of { node, parentId, depth } objects
141
+ */
142
+ declare function flattenTree<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined): readonly FlattenedNode<TNode>[];
143
+ /**
144
+ * Map over all nodes in the tree, transforming each node's data.
145
+ * Preserves tree structure while transforming node content.
146
+ *
147
+ * @param snapshot - The root tree snapshot
148
+ * @param mapper - Function to transform each node
149
+ * @returns New tree structure with transformed nodes, or undefined
150
+ */
151
+ declare function mapTree<TNode extends AnyTreeNodePrimitive, R>(snapshot: TreeNodeSnapshot<TNode> | undefined, mapper: (node: TreeNodeSnapshot<TNode>, depth: number) => R): {
152
+ value: R;
153
+ children: ReturnType<typeof mapTree<TNode, R>>[];
154
+ } | undefined;
155
+ /**
156
+ * Build a lookup map from node type strings to their TreeNodePrimitive definitions.
157
+ * Useful for resolving snapshot node types back to their schema definitions.
158
+ *
159
+ * @param tree - The TreePrimitive to analyze
160
+ * @returns Map from type string to TreeNodePrimitive
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const typeMap = buildNodeTypeMap(fileTree);
165
+ * const folderPrimitive = typeMap.get("folder"); // FolderNode
166
+ * ```
167
+ */
168
+ declare function buildNodeTypeMap<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>): Map<string, AnyTreeNodePrimitive>;
169
+ /**
170
+ * Get the TreeNodePrimitive definition for a snapshot node.
171
+ * Requires the tree schema to resolve the type string to its primitive.
172
+ *
173
+ * @param tree - The TreePrimitive schema
174
+ * @param snapshot - The node snapshot to get the primitive for
175
+ * @returns The TreeNodePrimitive, or undefined if not found
176
+ *
177
+ * @example
178
+ * ```ts
179
+ * const node = findNodeById(treeSnapshot, "some-id");
180
+ * const primitive = getNodePrimitive(fileTree, node);
181
+ * // primitive is FolderNode or FileNode depending on node.type
182
+ * ```
183
+ */
184
+ declare function getNodePrimitive<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, snapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>): AnyTreeNodePrimitive | undefined;
185
+ /**
186
+ * Get the allowed child types for a snapshot node.
187
+ * Combines schema lookup with the node's allowed children.
188
+ *
189
+ * @param tree - The TreePrimitive schema
190
+ * @param snapshot - The node snapshot to get allowed children for
191
+ * @returns Array of allowed child TreeNodePrimitives, or empty array if not found
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * const node = findNodeById(treeSnapshot, "folder-id");
196
+ * const allowedChildren = getAllowedChildTypesForNode(fileTree, node);
197
+ * // Returns [FolderNode, FileNode] if the folder can contain both
198
+ * ```
199
+ */
200
+ declare function getAllowedChildTypesForNode<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, snapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>): readonly AnyTreeNodePrimitive[];
201
+ /**
202
+ * Check if a child type is allowed for a specific snapshot node.
203
+ *
204
+ * @param tree - The TreePrimitive schema
205
+ * @param parentSnapshot - The parent node snapshot
206
+ * @param childTypeName - The type string of the potential child
207
+ * @returns true if the child type is allowed
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * const folder = findNodeById(treeSnapshot, "folder-id");
212
+ * canAddChildType(fileTree, folder, "file"); // true
213
+ * canAddChildType(fileTree, folder, "unknown"); // false
214
+ * ```
215
+ */
216
+ declare function canAddChildType<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, parentSnapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>, childTypeName: string): boolean;
217
+ /**
218
+ * Get all allowed child node types for a specific node type.
219
+ *
220
+ * @param nodeType - The TreeNodePrimitive to get children for
221
+ * @returns Array of allowed child TreeNodePrimitives
222
+ *
223
+ * @example
224
+ * ```ts
225
+ * const FolderNode = TreeNode("folder", { ... });
226
+ * const FileNode = TreeNode("file", { ... });
227
+ *
228
+ * // Get allowed children for FolderNode
229
+ * const allowedChildren = getAllowedChildTypes(FolderNode);
230
+ * // Returns [FolderNode, FileNode] if folder can contain both
231
+ * ```
232
+ */
233
+ declare function getAllowedChildTypes<TNode extends AnyTreeNodePrimitive>(nodeType: TNode): readonly AnyTreeNodePrimitive[];
234
+ /**
235
+ * Get all unique node types reachable in a tree schema.
236
+ * Recursively traverses the tree structure starting from the root.
237
+ *
238
+ * @param tree - The TreePrimitive to analyze
239
+ * @returns Array of all unique TreeNodePrimitives in the tree schema
240
+ *
241
+ * @example
242
+ * ```ts
243
+ * const fileTree = Tree({ root: FolderNode });
244
+ * const allNodeTypes = getAllNodeTypes(fileTree);
245
+ * // Returns [FolderNode, FileNode] - all possible node types
246
+ * ```
247
+ */
248
+ declare function getAllNodeTypes<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>): readonly AnyTreeNodePrimitive[];
249
+ /**
250
+ * Get the node type primitive by its type string from a tree schema.
251
+ *
252
+ * @param tree - The TreePrimitive to search
253
+ * @param typeName - The type string to find (e.g., "folder", "file")
254
+ * @returns The matching TreeNodePrimitive, or undefined if not found
255
+ *
256
+ * @example
257
+ * ```ts
258
+ * const fileTree = Tree({ root: FolderNode });
259
+ * const folderType = getNodeTypeByName(fileTree, "folder");
260
+ * // Returns FolderNode
261
+ * ```
262
+ */
263
+ declare function getNodeTypeByName<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, typeName: string): AnyTreeNodePrimitive | undefined;
264
+ /**
265
+ * Check if a child type is allowed under a parent type.
266
+ *
267
+ * @param parentType - The parent TreeNodePrimitive
268
+ * @param childTypeName - The type string of the potential child
269
+ * @returns true if the child type is allowed
270
+ *
271
+ * @example
272
+ * ```ts
273
+ * isChildTypeAllowed(FolderNode, "file"); // true if folder can contain files
274
+ * isChildTypeAllowed(FileNode, "folder"); // false - files can't have children
275
+ * ```
276
+ */
277
+ declare function isChildTypeAllowed(parentType: AnyTreeNodePrimitive, childTypeName: string): boolean;
278
+ //#endregion
279
+ export { tree_helpers_d_exports };
280
+ //# sourceMappingURL=tree-helpers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-helpers.d.cts","names":[],"sources":["../../src/utils/tree-helpers.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ import { AnyTreeNodePrimitive } from "../primitives/TreeNode.mjs";
2
+ import { TreeNodeSnapshot, TreePrimitive } from "../primitives/Tree.mjs";
3
+
4
+ //#region src/utils/tree-helpers.d.ts
5
+ declare namespace tree_helpers_d_exports {
6
+ export { FlattenedNode, NodeSearchResult, ParentSearchResult, TraverseOptions, buildNodeTypeMap, canAddChildType, findNode, findNodeById, findNodeWithPath, findNodes, flattenTree, getAllNodeTypes, getAllowedChildTypes, getAllowedChildTypesForNode, getAncestors, getDescendants, getNodeDepth, getNodePrimitive, getNodeTypeByName, getParent, getSiblings, getSubtree, isAncestorOf, isChildTypeAllowed, mapTree, traverse };
7
+ }
8
+ /**
9
+ * Result of finding a node with path information.
10
+ */
11
+ interface NodeSearchResult<TNode extends AnyTreeNodePrimitive> {
12
+ readonly node: TreeNodeSnapshot<TNode>;
13
+ readonly path: readonly string[];
14
+ readonly depth: number;
15
+ }
16
+ /**
17
+ * Result of finding a parent node.
18
+ */
19
+ interface ParentSearchResult<TNode extends AnyTreeNodePrimitive> {
20
+ readonly parent: TreeNodeSnapshot<TNode>;
21
+ readonly childIndex: number;
22
+ }
23
+ /**
24
+ * Flattened node with parent information.
25
+ */
26
+ interface FlattenedNode<TNode extends AnyTreeNodePrimitive> {
27
+ readonly node: TreeNodeSnapshot<TNode>;
28
+ readonly parentId: string | null;
29
+ readonly depth: number;
30
+ }
31
+ /**
32
+ * Options for tree traversal.
33
+ */
34
+ interface TraverseOptions {
35
+ readonly order?: "pre" | "post";
36
+ }
37
+ /**
38
+ * Find a node by ID in a tree snapshot.
39
+ *
40
+ * @param snapshot - The root tree snapshot
41
+ * @param id - The node ID to find
42
+ * @returns The node snapshot if found, undefined otherwise
43
+ */
44
+ declare function findNodeById<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, id: string): TreeNodeSnapshot<TNode> | undefined;
45
+ /**
46
+ * Find a node by ID with full path information.
47
+ *
48
+ * @param snapshot - The root tree snapshot
49
+ * @param id - The node ID to find
50
+ * @returns NodeSearchResult with node, path, and depth, or undefined if not found
51
+ */
52
+ declare function findNodeWithPath<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, id: string): NodeSearchResult<TNode> | undefined;
53
+ /**
54
+ * Get the parent node of a given node ID.
55
+ *
56
+ * @param snapshot - The root tree snapshot
57
+ * @param nodeId - The ID of the node whose parent we want
58
+ * @returns ParentSearchResult with parent node and child index, or undefined
59
+ */
60
+ declare function getParent<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): ParentSearchResult<TNode> | undefined;
61
+ /**
62
+ * Get a subtree rooted at a specific node ID.
63
+ *
64
+ * @param snapshot - The root tree snapshot
65
+ * @param nodeId - The ID of the node to use as new root
66
+ * @returns The subtree snapshot, or undefined if node not found
67
+ */
68
+ declare function getSubtree<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): TreeNodeSnapshot<TNode> | undefined;
69
+ /**
70
+ * Get all ancestor nodes from a node up to the root.
71
+ *
72
+ * @param snapshot - The root tree snapshot
73
+ * @param nodeId - The ID of the node
74
+ * @returns Array of ancestor snapshots from immediate parent to root, or empty array
75
+ */
76
+ declare function getAncestors<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): readonly TreeNodeSnapshot<TNode>[];
77
+ /**
78
+ * Get all descendant nodes of a given node (flat array).
79
+ *
80
+ * @param snapshot - The root tree snapshot
81
+ * @param nodeId - The ID of the node (if undefined, returns all descendants of root)
82
+ * @returns Flat array of all descendant node snapshots
83
+ */
84
+ declare function getDescendants<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId?: string): readonly TreeNodeSnapshot<TNode>[];
85
+ /**
86
+ * Get siblings of a node (nodes with the same parent).
87
+ *
88
+ * @param snapshot - The root tree snapshot
89
+ * @param nodeId - The ID of the node
90
+ * @param includeSelf - Whether to include the node itself (default: false)
91
+ * @returns Array of sibling snapshots
92
+ */
93
+ declare function getSiblings<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string, includeSelf?: boolean): readonly TreeNodeSnapshot<TNode>[];
94
+ /**
95
+ * Find the first node matching a predicate.
96
+ *
97
+ * @param snapshot - The root tree snapshot
98
+ * @param predicate - Function to test each node
99
+ * @returns First matching node snapshot, or undefined
100
+ */
101
+ declare function findNode<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, predicate: (node: TreeNodeSnapshot<TNode>) => boolean): TreeNodeSnapshot<TNode> | undefined;
102
+ /**
103
+ * Find all nodes matching a predicate.
104
+ *
105
+ * @param snapshot - The root tree snapshot
106
+ * @param predicate - Function to test each node
107
+ * @returns Array of matching node snapshots
108
+ */
109
+ declare function findNodes<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, predicate: (node: TreeNodeSnapshot<TNode>) => boolean): readonly TreeNodeSnapshot<TNode>[];
110
+ /**
111
+ * Get the depth of a specific node (0 = root).
112
+ *
113
+ * @param snapshot - The root tree snapshot
114
+ * @param nodeId - The ID of the node
115
+ * @returns The depth, or -1 if not found
116
+ */
117
+ declare function getNodeDepth<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, nodeId: string): number;
118
+ /**
119
+ * Check if one node is an ancestor of another.
120
+ *
121
+ * @param snapshot - The root tree snapshot
122
+ * @param ancestorId - Potential ancestor node ID
123
+ * @param descendantId - Potential descendant node ID
124
+ * @returns true if ancestorId is an ancestor of descendantId
125
+ */
126
+ declare function isAncestorOf<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, ancestorId: string, descendantId: string): boolean;
127
+ /**
128
+ * Traverse the tree and call a visitor function for each node.
129
+ * Return false from visitor to stop traversal.
130
+ *
131
+ * @param snapshot - The root tree snapshot
132
+ * @param visitor - Function called for each node (return false to stop)
133
+ * @param options - Traversal options (order: 'pre' | 'post')
134
+ */
135
+ declare function traverse<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined, visitor: (node: TreeNodeSnapshot<TNode>, depth: number) => void | false, options?: TraverseOptions): void;
136
+ /**
137
+ * Flatten the tree into an array with parent information.
138
+ *
139
+ * @param snapshot - The root tree snapshot
140
+ * @returns Array of { node, parentId, depth } objects
141
+ */
142
+ declare function flattenTree<TNode extends AnyTreeNodePrimitive>(snapshot: TreeNodeSnapshot<TNode> | undefined): readonly FlattenedNode<TNode>[];
143
+ /**
144
+ * Map over all nodes in the tree, transforming each node's data.
145
+ * Preserves tree structure while transforming node content.
146
+ *
147
+ * @param snapshot - The root tree snapshot
148
+ * @param mapper - Function to transform each node
149
+ * @returns New tree structure with transformed nodes, or undefined
150
+ */
151
+ declare function mapTree<TNode extends AnyTreeNodePrimitive, R>(snapshot: TreeNodeSnapshot<TNode> | undefined, mapper: (node: TreeNodeSnapshot<TNode>, depth: number) => R): {
152
+ value: R;
153
+ children: ReturnType<typeof mapTree<TNode, R>>[];
154
+ } | undefined;
155
+ /**
156
+ * Build a lookup map from node type strings to their TreeNodePrimitive definitions.
157
+ * Useful for resolving snapshot node types back to their schema definitions.
158
+ *
159
+ * @param tree - The TreePrimitive to analyze
160
+ * @returns Map from type string to TreeNodePrimitive
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const typeMap = buildNodeTypeMap(fileTree);
165
+ * const folderPrimitive = typeMap.get("folder"); // FolderNode
166
+ * ```
167
+ */
168
+ declare function buildNodeTypeMap<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>): Map<string, AnyTreeNodePrimitive>;
169
+ /**
170
+ * Get the TreeNodePrimitive definition for a snapshot node.
171
+ * Requires the tree schema to resolve the type string to its primitive.
172
+ *
173
+ * @param tree - The TreePrimitive schema
174
+ * @param snapshot - The node snapshot to get the primitive for
175
+ * @returns The TreeNodePrimitive, or undefined if not found
176
+ *
177
+ * @example
178
+ * ```ts
179
+ * const node = findNodeById(treeSnapshot, "some-id");
180
+ * const primitive = getNodePrimitive(fileTree, node);
181
+ * // primitive is FolderNode or FileNode depending on node.type
182
+ * ```
183
+ */
184
+ declare function getNodePrimitive<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, snapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>): AnyTreeNodePrimitive | undefined;
185
+ /**
186
+ * Get the allowed child types for a snapshot node.
187
+ * Combines schema lookup with the node's allowed children.
188
+ *
189
+ * @param tree - The TreePrimitive schema
190
+ * @param snapshot - The node snapshot to get allowed children for
191
+ * @returns Array of allowed child TreeNodePrimitives, or empty array if not found
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * const node = findNodeById(treeSnapshot, "folder-id");
196
+ * const allowedChildren = getAllowedChildTypesForNode(fileTree, node);
197
+ * // Returns [FolderNode, FileNode] if the folder can contain both
198
+ * ```
199
+ */
200
+ declare function getAllowedChildTypesForNode<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, snapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>): readonly AnyTreeNodePrimitive[];
201
+ /**
202
+ * Check if a child type is allowed for a specific snapshot node.
203
+ *
204
+ * @param tree - The TreePrimitive schema
205
+ * @param parentSnapshot - The parent node snapshot
206
+ * @param childTypeName - The type string of the potential child
207
+ * @returns true if the child type is allowed
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * const folder = findNodeById(treeSnapshot, "folder-id");
212
+ * canAddChildType(fileTree, folder, "file"); // true
213
+ * canAddChildType(fileTree, folder, "unknown"); // false
214
+ * ```
215
+ */
216
+ declare function canAddChildType<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, parentSnapshot: TreeNodeSnapshot<AnyTreeNodePrimitive>, childTypeName: string): boolean;
217
+ /**
218
+ * Get all allowed child node types for a specific node type.
219
+ *
220
+ * @param nodeType - The TreeNodePrimitive to get children for
221
+ * @returns Array of allowed child TreeNodePrimitives
222
+ *
223
+ * @example
224
+ * ```ts
225
+ * const FolderNode = TreeNode("folder", { ... });
226
+ * const FileNode = TreeNode("file", { ... });
227
+ *
228
+ * // Get allowed children for FolderNode
229
+ * const allowedChildren = getAllowedChildTypes(FolderNode);
230
+ * // Returns [FolderNode, FileNode] if folder can contain both
231
+ * ```
232
+ */
233
+ declare function getAllowedChildTypes<TNode extends AnyTreeNodePrimitive>(nodeType: TNode): readonly AnyTreeNodePrimitive[];
234
+ /**
235
+ * Get all unique node types reachable in a tree schema.
236
+ * Recursively traverses the tree structure starting from the root.
237
+ *
238
+ * @param tree - The TreePrimitive to analyze
239
+ * @returns Array of all unique TreeNodePrimitives in the tree schema
240
+ *
241
+ * @example
242
+ * ```ts
243
+ * const fileTree = Tree({ root: FolderNode });
244
+ * const allNodeTypes = getAllNodeTypes(fileTree);
245
+ * // Returns [FolderNode, FileNode] - all possible node types
246
+ * ```
247
+ */
248
+ declare function getAllNodeTypes<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>): readonly AnyTreeNodePrimitive[];
249
+ /**
250
+ * Get the node type primitive by its type string from a tree schema.
251
+ *
252
+ * @param tree - The TreePrimitive to search
253
+ * @param typeName - The type string to find (e.g., "folder", "file")
254
+ * @returns The matching TreeNodePrimitive, or undefined if not found
255
+ *
256
+ * @example
257
+ * ```ts
258
+ * const fileTree = Tree({ root: FolderNode });
259
+ * const folderType = getNodeTypeByName(fileTree, "folder");
260
+ * // Returns FolderNode
261
+ * ```
262
+ */
263
+ declare function getNodeTypeByName<TRoot extends AnyTreeNodePrimitive>(tree: TreePrimitive<TRoot>, typeName: string): AnyTreeNodePrimitive | undefined;
264
+ /**
265
+ * Check if a child type is allowed under a parent type.
266
+ *
267
+ * @param parentType - The parent TreeNodePrimitive
268
+ * @param childTypeName - The type string of the potential child
269
+ * @returns true if the child type is allowed
270
+ *
271
+ * @example
272
+ * ```ts
273
+ * isChildTypeAllowed(FolderNode, "file"); // true if folder can contain files
274
+ * isChildTypeAllowed(FileNode, "folder"); // false - files can't have children
275
+ * ```
276
+ */
277
+ declare function isChildTypeAllowed(parentType: AnyTreeNodePrimitive, childTypeName: string): boolean;
278
+ //#endregion
279
+ export { tree_helpers_d_exports };
280
+ //# sourceMappingURL=tree-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-helpers.d.mts","names":[],"sources":["../../src/utils/tree-helpers.ts"],"sourcesContent":[],"mappings":"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"}