@voidhash/mimic 0.0.2 → 0.0.4

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 (273) 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 +20 -2973
  134. package/dist/index.d.cts +12 -419
  135. package/dist/index.d.mts +12 -419
  136. package/dist/index.mjs +13 -2968
  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/tsdown.config.ts +1 -1
  255. package/dist/Document-ChuFrTk1.cjs +0 -571
  256. package/dist/Document-CwiAFTIq.mjs +0 -438
  257. package/dist/Document-CwiAFTIq.mjs.map +0 -1
  258. package/dist/Presence-DKKP4v5X.d.cts.map +0 -1
  259. package/dist/Presence-DdMVKcOv.mjs.map +0 -1
  260. package/dist/Presence-N8u7Eppr.d.mts.map +0 -1
  261. package/dist/Primitive-DqQFc3Gu.d.mts +0 -1180
  262. package/dist/Primitive-DqQFc3Gu.d.mts.map +0 -1
  263. package/dist/Primitive-awpEjnKL.d.cts +0 -1180
  264. package/dist/Primitive-awpEjnKL.d.cts.map +0 -1
  265. package/dist/client/index.d.cts.map +0 -1
  266. package/dist/client/index.d.mts.map +0 -1
  267. package/dist/client/index.mjs.map +0 -1
  268. package/dist/index.d.cts.map +0 -1
  269. package/dist/index.d.mts.map +0 -1
  270. package/dist/index.mjs.map +0 -1
  271. package/dist/server/index.d.cts.map +0 -1
  272. package/dist/server/index.d.mts.map +0 -1
  273. package/dist/server/index.mjs.map +0 -1
@@ -0,0 +1,302 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_defineProperty = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs');
3
+ const require_objectSpread2 = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs');
4
+ const require_shared = require('./shared.cjs');
5
+ const require_OperationDefinition = require('../OperationDefinition.cjs');
6
+ const require_OperationPath = require('../OperationPath.cjs');
7
+ const require_Operation = require('../Operation.cjs');
8
+ const require_FractionalIndex = require('../FractionalIndex.cjs');
9
+ require('../Primitive.cjs');
10
+ let effect = require("effect");
11
+
12
+ //#region src/primitives/Array.ts
13
+ /**
14
+ * Sort array entries by their fractional position
15
+ */
16
+ const sortByPos = (entries) => [...entries].sort((a, b) => a.pos < b.pos ? -1 : a.pos > b.pos ? 1 : 0);
17
+ /**
18
+ * Generate a fractional position between two positions
19
+ */
20
+ const generatePosBetween = (left, right) => {
21
+ const charSet = require_FractionalIndex.base62CharSet();
22
+ return effect.Effect.runSync(require_FractionalIndex.generateKeyBetween(left, right, charSet));
23
+ };
24
+ var ArrayPrimitive = class ArrayPrimitive {
25
+ constructor(schema) {
26
+ require_defineProperty._defineProperty(this, "_tag", "ArrayPrimitive");
27
+ require_defineProperty._defineProperty(this, "_State", void 0);
28
+ require_defineProperty._defineProperty(this, "_Proxy", void 0);
29
+ require_defineProperty._defineProperty(this, "_TRequired", void 0);
30
+ require_defineProperty._defineProperty(this, "_THasDefault", void 0);
31
+ require_defineProperty._defineProperty(this, "TSetInput", void 0);
32
+ require_defineProperty._defineProperty(this, "TUpdateInput", void 0);
33
+ require_defineProperty._defineProperty(this, "_schema", void 0);
34
+ require_defineProperty._defineProperty(this, "_opDefinitions", {
35
+ set: require_OperationDefinition.make({
36
+ kind: "array.set",
37
+ payload: effect.Schema.Unknown,
38
+ target: effect.Schema.Unknown,
39
+ apply: (payload) => payload
40
+ }),
41
+ insert: require_OperationDefinition.make({
42
+ kind: "array.insert",
43
+ payload: effect.Schema.Unknown,
44
+ target: effect.Schema.Unknown,
45
+ apply: (payload) => payload
46
+ }),
47
+ remove: require_OperationDefinition.make({
48
+ kind: "array.remove",
49
+ payload: effect.Schema.Unknown,
50
+ target: effect.Schema.Unknown,
51
+ apply: (payload) => payload
52
+ }),
53
+ move: require_OperationDefinition.make({
54
+ kind: "array.move",
55
+ payload: effect.Schema.Unknown,
56
+ target: effect.Schema.Unknown,
57
+ apply: (payload) => payload
58
+ })
59
+ });
60
+ require_defineProperty._defineProperty(this, "_internal", {
61
+ createProxy: (env, operationPath) => {
62
+ const elementPrimitive = this._schema.element;
63
+ const getCurrentState = () => {
64
+ const state = env.getState(operationPath);
65
+ if (!state || !globalThis.Array.isArray(state)) return [];
66
+ return sortByPos(state);
67
+ };
68
+ const applyElementDefaults = (value) => {
69
+ return require_shared.applyDefaults(elementPrimitive, value);
70
+ };
71
+ return {
72
+ get: () => {
73
+ return getCurrentState();
74
+ },
75
+ set: (values) => {
76
+ const entries = [];
77
+ let prevPos = null;
78
+ for (const value of values) {
79
+ const id = env.generateId();
80
+ const pos = generatePosBetween(prevPos, null);
81
+ const mergedValue = applyElementDefaults(value);
82
+ entries.push({
83
+ id,
84
+ pos,
85
+ value: mergedValue
86
+ });
87
+ prevPos = pos;
88
+ }
89
+ env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.set, entries));
90
+ },
91
+ push: (value) => {
92
+ const sorted = getCurrentState();
93
+ const lastPos = sorted.length > 0 ? sorted[sorted.length - 1].pos : null;
94
+ const id = env.generateId();
95
+ const pos = generatePosBetween(lastPos, null);
96
+ const mergedValue = applyElementDefaults(value);
97
+ env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.insert, {
98
+ id,
99
+ pos,
100
+ value: mergedValue
101
+ }));
102
+ },
103
+ insertAt: (index, value) => {
104
+ const sorted = getCurrentState();
105
+ const leftPos = index > 0 && sorted[index - 1] ? sorted[index - 1].pos : null;
106
+ const rightPos = index < sorted.length && sorted[index] ? sorted[index].pos : null;
107
+ const id = env.generateId();
108
+ const pos = generatePosBetween(leftPos, rightPos);
109
+ const mergedValue = applyElementDefaults(value);
110
+ env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.insert, {
111
+ id,
112
+ pos,
113
+ value: mergedValue
114
+ }));
115
+ },
116
+ remove: (id) => {
117
+ env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.remove, { id }));
118
+ },
119
+ move: (id, toIndex) => {
120
+ const without = getCurrentState().filter((e) => e.id !== id);
121
+ const clampedIndex = Math.max(0, Math.min(toIndex, without.length));
122
+ const pos = generatePosBetween(clampedIndex > 0 && without[clampedIndex - 1] ? without[clampedIndex - 1].pos : null, clampedIndex < without.length && without[clampedIndex] ? without[clampedIndex].pos : null);
123
+ env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.move, {
124
+ id,
125
+ pos
126
+ }));
127
+ },
128
+ at: (id) => {
129
+ const elementPath = operationPath.append(id);
130
+ return elementPrimitive._internal.createProxy(env, elementPath);
131
+ },
132
+ find: (predicate) => {
133
+ const found = getCurrentState().find((entry) => predicate(entry.value, entry.id));
134
+ if (!found) return void 0;
135
+ const elementPath = operationPath.append(found.id);
136
+ return elementPrimitive._internal.createProxy(env, elementPath);
137
+ },
138
+ toSnapshot: () => {
139
+ return getCurrentState().map((entry) => {
140
+ const elementPath = operationPath.append(entry.id);
141
+ const elementProxy = elementPrimitive._internal.createProxy(env, elementPath);
142
+ return {
143
+ id: entry.id,
144
+ value: elementProxy.toSnapshot()
145
+ };
146
+ });
147
+ }
148
+ };
149
+ },
150
+ applyOperation: (state, operation) => {
151
+ const path = operation.path;
152
+ const tokens = path.toTokens().filter((t) => t !== "");
153
+ const currentState = state !== null && state !== void 0 ? state : [];
154
+ let newState;
155
+ if (tokens.length === 0) switch (operation.kind) {
156
+ case "array.set": {
157
+ const payload = operation.payload;
158
+ if (!globalThis.Array.isArray(payload)) throw new require_shared.ValidationError(`ArrayPrimitive.set requires an array payload`);
159
+ newState = payload;
160
+ break;
161
+ }
162
+ case "array.insert": {
163
+ const { id, pos, value } = operation.payload;
164
+ newState = [...currentState, {
165
+ id,
166
+ pos,
167
+ value
168
+ }];
169
+ break;
170
+ }
171
+ case "array.remove": {
172
+ const { id } = operation.payload;
173
+ newState = currentState.filter((entry) => entry.id !== id);
174
+ break;
175
+ }
176
+ case "array.move": {
177
+ const { id, pos } = operation.payload;
178
+ newState = currentState.map((entry) => entry.id === id ? require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, entry), {}, { pos }) : entry);
179
+ break;
180
+ }
181
+ default: throw new require_shared.ValidationError(`ArrayPrimitive cannot apply operation of kind: ${operation.kind}`);
182
+ }
183
+ else {
184
+ const elementId = tokens[0];
185
+ const entryIndex = currentState.findIndex((entry) => entry.id === elementId);
186
+ if (entryIndex === -1) throw new require_shared.ValidationError(`Array element not found with ID: ${elementId}`);
187
+ const elementPrimitive = this._schema.element;
188
+ const remainingPath = path.shift();
189
+ const elementOperation = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, operation), {}, { path: remainingPath });
190
+ const currentEntry = currentState[entryIndex];
191
+ const newValue = elementPrimitive._internal.applyOperation(currentEntry.value, elementOperation);
192
+ const mutableState = [...currentState];
193
+ mutableState[entryIndex] = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, currentEntry), {}, { value: newValue });
194
+ newState = mutableState;
195
+ }
196
+ require_shared.runValidators(newState, this._schema.validators);
197
+ return newState;
198
+ },
199
+ getInitialState: () => {
200
+ return this._schema.defaultValue;
201
+ },
202
+ transformOperation: (clientOp, serverOp) => {
203
+ const clientPath = clientOp.path;
204
+ const serverPath = serverOp.path;
205
+ if (!require_OperationPath.pathsOverlap(clientPath, serverPath)) return {
206
+ type: "transformed",
207
+ operation: clientOp
208
+ };
209
+ if (serverOp.kind === "array.remove") {
210
+ const removedId = serverOp.payload.id;
211
+ const clientTokens$1 = clientPath.toTokens().filter((t) => t !== "");
212
+ const serverTokens$1 = serverPath.toTokens().filter((t) => t !== "");
213
+ if (clientTokens$1.length > serverTokens$1.length) {
214
+ if (clientTokens$1[serverTokens$1.length] === removedId) return { type: "noop" };
215
+ }
216
+ }
217
+ if (serverOp.kind === "array.insert" && clientOp.kind === "array.insert") return {
218
+ type: "transformed",
219
+ operation: clientOp
220
+ };
221
+ if (serverOp.kind === "array.move" && clientOp.kind === "array.move") {
222
+ if (serverOp.payload.id === clientOp.payload.id) return {
223
+ type: "transformed",
224
+ operation: clientOp
225
+ };
226
+ return {
227
+ type: "transformed",
228
+ operation: clientOp
229
+ };
230
+ }
231
+ if (require_OperationPath.pathsEqual(clientPath, serverPath)) return {
232
+ type: "transformed",
233
+ operation: clientOp
234
+ };
235
+ if (serverOp.kind === "array.set" && require_OperationPath.isPrefix(serverPath, clientPath)) return {
236
+ type: "transformed",
237
+ operation: clientOp
238
+ };
239
+ const clientTokens = clientPath.toTokens().filter((t) => t !== "");
240
+ const serverTokens = serverPath.toTokens().filter((t) => t !== "");
241
+ if (clientTokens.length > 0 && serverTokens.length > 0) {
242
+ if (clientTokens[0] !== serverTokens[0]) return {
243
+ type: "transformed",
244
+ operation: clientOp
245
+ };
246
+ const elementPrimitive = this._schema.element;
247
+ const clientOpForElement = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, clientOp), {}, { path: clientOp.path.shift() });
248
+ const serverOpForElement = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, serverOp), {}, { path: serverOp.path.shift() });
249
+ const result = elementPrimitive._internal.transformOperation(clientOpForElement, serverOpForElement);
250
+ if (result.type === "transformed") return {
251
+ type: "transformed",
252
+ operation: require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, result.operation), {}, { path: clientOp.path })
253
+ };
254
+ return result;
255
+ }
256
+ return {
257
+ type: "transformed",
258
+ operation: clientOp
259
+ };
260
+ }
261
+ });
262
+ this._schema = schema;
263
+ }
264
+ /** Mark this array as required */
265
+ required() {
266
+ return new ArrayPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { required: true }));
267
+ }
268
+ /** Set a default value for this array */
269
+ default(defaultValue) {
270
+ return new ArrayPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { defaultValue }));
271
+ }
272
+ /** Get the element primitive */
273
+ get element() {
274
+ return this._schema.element;
275
+ }
276
+ /** Add a custom validation rule */
277
+ refine(fn, message) {
278
+ return new ArrayPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { validators: [...this._schema.validators, {
279
+ validate: fn,
280
+ message
281
+ }] }));
282
+ }
283
+ /** Minimum array length */
284
+ minLength(length) {
285
+ return this.refine((v) => v.length >= length, `Array must have at least ${length} elements`);
286
+ }
287
+ /** Maximum array length */
288
+ maxLength(length) {
289
+ return this.refine((v) => v.length <= length, `Array must have at most ${length} elements`);
290
+ }
291
+ };
292
+ /** Creates a new ArrayPrimitive with the given element type */
293
+ const Array = (element) => new ArrayPrimitive({
294
+ required: false,
295
+ defaultValue: void 0,
296
+ element,
297
+ validators: []
298
+ });
299
+
300
+ //#endregion
301
+ exports.Array = Array;
302
+ exports.ArrayPrimitive = ArrayPrimitive;
@@ -0,0 +1,95 @@
1
+ import { AnyPrimitive, InferProxy, InferSetInput, InferSnapshot, InferState, Primitive, PrimitiveInternal, Validator } from "./shared.cjs";
2
+ import { StructPrimitive, StructSetInput } from "./Struct.cjs";
3
+
4
+ //#region src/primitives/Array.d.ts
5
+
6
+ /**
7
+ * Entry in an ordered array with ID and fractional position
8
+ */
9
+ interface ArrayEntry<T> {
10
+ readonly id: string;
11
+ readonly pos: string;
12
+ readonly value: T;
13
+ }
14
+ /**
15
+ * Entry in an array snapshot with ID and value snapshot
16
+ */
17
+ interface ArrayEntrySnapshot<TElement extends AnyPrimitive> {
18
+ readonly id: string;
19
+ readonly value: InferSnapshot<TElement>;
20
+ }
21
+ /**
22
+ * Snapshot type for arrays - always an array (never undefined)
23
+ */
24
+ type ArraySnapshot<TElement extends AnyPrimitive> = readonly ArrayEntrySnapshot<TElement>[];
25
+ /**
26
+ * Compute the input type for array element values.
27
+ * Uses StructSetInput directly for struct elements so that:
28
+ * - Fields that are required AND have no default must be provided
29
+ * - Fields that are optional OR have defaults can be omitted
30
+ *
31
+ * For non-struct elements, falls back to InferSetInput.
32
+ */
33
+ type ArrayElementSetInput<TElement extends AnyPrimitive> = TElement extends StructPrimitive<infer TFields, any, any> ? StructSetInput<TFields> : InferSetInput<TElement>;
34
+ interface ArrayProxy<TElement extends AnyPrimitive> {
35
+ /** Gets the current array entries (sorted by position) */
36
+ get(): ArrayState<TElement>;
37
+ /** Replaces the entire array with new values (generates new IDs and positions, applies defaults) */
38
+ set(values: readonly ArrayElementSetInput<TElement>[]): void;
39
+ /** Appends a value to the end of the array (applies defaults for struct elements) */
40
+ push(value: ArrayElementSetInput<TElement>): void;
41
+ /** Inserts a value at the specified visual index (applies defaults for struct elements) */
42
+ insertAt(index: number, value: ArrayElementSetInput<TElement>): void;
43
+ /** Removes the element with the specified ID */
44
+ remove(id: string): void;
45
+ /** Moves an element to a new visual index */
46
+ move(id: string, toIndex: number): void;
47
+ /** Returns a proxy for the element with the specified ID */
48
+ at(id: string): InferProxy<TElement>;
49
+ /** Finds an element by predicate and returns its proxy */
50
+ find(predicate: (value: InferState<TElement>, id: string) => boolean): InferProxy<TElement> | undefined;
51
+ /** Returns a readonly snapshot of the array for rendering (always returns an array, never undefined) */
52
+ toSnapshot(): ArraySnapshot<TElement>;
53
+ }
54
+ /** The state type for arrays - an array of entries */
55
+ type ArrayState<TElement extends AnyPrimitive> = readonly ArrayEntry<InferState<TElement>>[];
56
+ interface ArrayPrimitiveSchema<TElement extends AnyPrimitive> {
57
+ readonly required: boolean;
58
+ readonly defaultValue: ArrayState<TElement> | undefined;
59
+ readonly element: TElement;
60
+ readonly validators: readonly Validator<ArrayState<TElement>>[];
61
+ }
62
+ /** Input type for array set() - an array of element set inputs */
63
+ type ArraySetInput<TElement extends AnyPrimitive> = readonly ArrayElementSetInput<TElement>[];
64
+ /** Input type for array update() - same as set() for arrays */
65
+ type ArrayUpdateInput<TElement extends AnyPrimitive> = readonly ArrayElementSetInput<TElement>[];
66
+ declare class ArrayPrimitive<TElement extends AnyPrimitive, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<ArrayState<TElement>, ArrayProxy<TElement>, TRequired, THasDefault, ArraySetInput<TElement>, ArrayUpdateInput<TElement>> {
67
+ readonly _tag: "ArrayPrimitive";
68
+ readonly _State: ArrayState<TElement>;
69
+ readonly _Proxy: ArrayProxy<TElement>;
70
+ readonly _TRequired: TRequired;
71
+ readonly _THasDefault: THasDefault;
72
+ readonly TSetInput: ArraySetInput<TElement>;
73
+ readonly TUpdateInput: ArrayUpdateInput<TElement>;
74
+ private readonly _schema;
75
+ private readonly _opDefinitions;
76
+ constructor(schema: ArrayPrimitiveSchema<TElement>);
77
+ /** Mark this array as required */
78
+ required(): ArrayPrimitive<TElement, true, THasDefault>;
79
+ /** Set a default value for this array */
80
+ default(defaultValue: ArrayState<TElement>): ArrayPrimitive<TElement, TRequired, true>;
81
+ /** Get the element primitive */
82
+ get element(): TElement;
83
+ /** Add a custom validation rule */
84
+ refine(fn: (value: ArrayState<TElement>) => boolean, message: string): ArrayPrimitive<TElement, TRequired, THasDefault>;
85
+ /** Minimum array length */
86
+ minLength(length: number): ArrayPrimitive<TElement, TRequired, THasDefault>;
87
+ /** Maximum array length */
88
+ maxLength(length: number): ArrayPrimitive<TElement, TRequired, THasDefault>;
89
+ readonly _internal: PrimitiveInternal<ArrayState<TElement>, ArrayProxy<TElement>>;
90
+ }
91
+ /** Creates a new ArrayPrimitive with the given element type */
92
+ declare const Array: <TElement extends AnyPrimitive>(element: TElement) => ArrayPrimitive<TElement, false, false>;
93
+ //#endregion
94
+ export { Array, ArrayElementSetInput, ArrayEntry, ArrayEntrySnapshot, ArrayPrimitive, ArrayProxy, ArraySetInput, ArraySnapshot, ArrayState, ArrayUpdateInput };
95
+ //# sourceMappingURL=Array.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Array.d.cts","names":[],"sources":["../../src/primitives/Array.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { AnyPrimitive, InferProxy, InferSetInput, InferSnapshot, InferState, Primitive, PrimitiveInternal, Validator } from "./shared.mjs";
2
+ import { StructPrimitive, StructSetInput } from "./Struct.mjs";
3
+ import "../Primitive.mjs";
4
+
5
+ //#region src/primitives/Array.d.ts
6
+ /**
7
+ * Entry in an ordered array with ID and fractional position
8
+ */
9
+ interface ArrayEntry<T> {
10
+ readonly id: string;
11
+ readonly pos: string;
12
+ readonly value: T;
13
+ }
14
+ /**
15
+ * Entry in an array snapshot with ID and value snapshot
16
+ */
17
+ interface ArrayEntrySnapshot<TElement extends AnyPrimitive> {
18
+ readonly id: string;
19
+ readonly value: InferSnapshot<TElement>;
20
+ }
21
+ /**
22
+ * Snapshot type for arrays - always an array (never undefined)
23
+ */
24
+ type ArraySnapshot<TElement extends AnyPrimitive> = readonly ArrayEntrySnapshot<TElement>[];
25
+ /**
26
+ * Compute the input type for array element values.
27
+ * Uses StructSetInput directly for struct elements so that:
28
+ * - Fields that are required AND have no default must be provided
29
+ * - Fields that are optional OR have defaults can be omitted
30
+ *
31
+ * For non-struct elements, falls back to InferSetInput.
32
+ */
33
+ type ArrayElementSetInput<TElement extends AnyPrimitive> = TElement extends StructPrimitive<infer TFields, any, any> ? StructSetInput<TFields> : InferSetInput<TElement>;
34
+ interface ArrayProxy<TElement extends AnyPrimitive> {
35
+ /** Gets the current array entries (sorted by position) */
36
+ get(): ArrayState<TElement>;
37
+ /** Replaces the entire array with new values (generates new IDs and positions, applies defaults) */
38
+ set(values: readonly ArrayElementSetInput<TElement>[]): void;
39
+ /** Appends a value to the end of the array (applies defaults for struct elements) */
40
+ push(value: ArrayElementSetInput<TElement>): void;
41
+ /** Inserts a value at the specified visual index (applies defaults for struct elements) */
42
+ insertAt(index: number, value: ArrayElementSetInput<TElement>): void;
43
+ /** Removes the element with the specified ID */
44
+ remove(id: string): void;
45
+ /** Moves an element to a new visual index */
46
+ move(id: string, toIndex: number): void;
47
+ /** Returns a proxy for the element with the specified ID */
48
+ at(id: string): InferProxy<TElement>;
49
+ /** Finds an element by predicate and returns its proxy */
50
+ find(predicate: (value: InferState<TElement>, id: string) => boolean): InferProxy<TElement> | undefined;
51
+ /** Returns a readonly snapshot of the array for rendering (always returns an array, never undefined) */
52
+ toSnapshot(): ArraySnapshot<TElement>;
53
+ }
54
+ /** The state type for arrays - an array of entries */
55
+ type ArrayState<TElement extends AnyPrimitive> = readonly ArrayEntry<InferState<TElement>>[];
56
+ interface ArrayPrimitiveSchema<TElement extends AnyPrimitive> {
57
+ readonly required: boolean;
58
+ readonly defaultValue: ArrayState<TElement> | undefined;
59
+ readonly element: TElement;
60
+ readonly validators: readonly Validator<ArrayState<TElement>>[];
61
+ }
62
+ /** Input type for array set() - an array of element set inputs */
63
+ type ArraySetInput<TElement extends AnyPrimitive> = readonly ArrayElementSetInput<TElement>[];
64
+ /** Input type for array update() - same as set() for arrays */
65
+ type ArrayUpdateInput<TElement extends AnyPrimitive> = readonly ArrayElementSetInput<TElement>[];
66
+ declare class ArrayPrimitive<TElement extends AnyPrimitive, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<ArrayState<TElement>, ArrayProxy<TElement>, TRequired, THasDefault, ArraySetInput<TElement>, ArrayUpdateInput<TElement>> {
67
+ readonly _tag: "ArrayPrimitive";
68
+ readonly _State: ArrayState<TElement>;
69
+ readonly _Proxy: ArrayProxy<TElement>;
70
+ readonly _TRequired: TRequired;
71
+ readonly _THasDefault: THasDefault;
72
+ readonly TSetInput: ArraySetInput<TElement>;
73
+ readonly TUpdateInput: ArrayUpdateInput<TElement>;
74
+ private readonly _schema;
75
+ private readonly _opDefinitions;
76
+ constructor(schema: ArrayPrimitiveSchema<TElement>);
77
+ /** Mark this array as required */
78
+ required(): ArrayPrimitive<TElement, true, THasDefault>;
79
+ /** Set a default value for this array */
80
+ default(defaultValue: ArrayState<TElement>): ArrayPrimitive<TElement, TRequired, true>;
81
+ /** Get the element primitive */
82
+ get element(): TElement;
83
+ /** Add a custom validation rule */
84
+ refine(fn: (value: ArrayState<TElement>) => boolean, message: string): ArrayPrimitive<TElement, TRequired, THasDefault>;
85
+ /** Minimum array length */
86
+ minLength(length: number): ArrayPrimitive<TElement, TRequired, THasDefault>;
87
+ /** Maximum array length */
88
+ maxLength(length: number): ArrayPrimitive<TElement, TRequired, THasDefault>;
89
+ readonly _internal: PrimitiveInternal<ArrayState<TElement>, ArrayProxy<TElement>>;
90
+ }
91
+ /** Creates a new ArrayPrimitive with the given element type */
92
+ declare const Array: <TElement extends AnyPrimitive>(element: TElement) => ArrayPrimitive<TElement, false, false>;
93
+ //#endregion
94
+ export { Array, ArrayElementSetInput, ArrayEntry, ArrayEntrySnapshot, ArrayPrimitive, ArrayProxy, ArraySetInput, ArraySnapshot, ArrayState, ArrayUpdateInput };
95
+ //# sourceMappingURL=Array.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Array.d.mts","names":[],"sources":["../../src/primitives/Array.ts"],"sourcesContent":[],"mappings":"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"}