@voidhash/mimic 1.0.0-beta.12 → 1.0.0-beta.13

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 (91) hide show
  1. package/.turbo/turbo-build.log +61 -61
  2. package/dist/Document.cjs +49 -8
  3. package/dist/Document.d.mts.map +1 -1
  4. package/dist/Document.mjs +50 -9
  5. package/dist/Document.mjs.map +1 -1
  6. package/dist/Operation.cjs +3 -2
  7. package/dist/Operation.d.cts +1 -0
  8. package/dist/Operation.d.cts.map +1 -1
  9. package/dist/Operation.d.mts +1 -0
  10. package/dist/Operation.d.mts.map +1 -1
  11. package/dist/Operation.mjs +3 -2
  12. package/dist/Operation.mjs.map +1 -1
  13. package/dist/OperationDefinition.cjs +3 -2
  14. package/dist/OperationDefinition.d.cts +3 -0
  15. package/dist/OperationDefinition.d.cts.map +1 -1
  16. package/dist/OperationDefinition.d.mts +3 -0
  17. package/dist/OperationDefinition.d.mts.map +1 -1
  18. package/dist/OperationDefinition.mjs +3 -2
  19. package/dist/OperationDefinition.mjs.map +1 -1
  20. package/dist/client/ClientDocument.cjs +81 -0
  21. package/dist/client/ClientDocument.d.cts +26 -2
  22. package/dist/client/ClientDocument.d.cts.map +1 -1
  23. package/dist/client/ClientDocument.d.mts +26 -2
  24. package/dist/client/ClientDocument.d.mts.map +1 -1
  25. package/dist/client/ClientDocument.mjs +87 -6
  26. package/dist/client/ClientDocument.mjs.map +1 -1
  27. package/dist/client/index.d.cts +2 -2
  28. package/dist/client/index.d.mts +2 -2
  29. package/dist/primitives/Array.cjs +2 -1
  30. package/dist/primitives/Array.d.cts.map +1 -1
  31. package/dist/primitives/Array.d.mts.map +1 -1
  32. package/dist/primitives/Array.mjs +2 -1
  33. package/dist/primitives/Array.mjs.map +1 -1
  34. package/dist/primitives/Boolean.cjs +2 -1
  35. package/dist/primitives/Boolean.d.cts.map +1 -1
  36. package/dist/primitives/Boolean.d.mts.map +1 -1
  37. package/dist/primitives/Boolean.mjs +2 -1
  38. package/dist/primitives/Boolean.mjs.map +1 -1
  39. package/dist/primitives/Either.cjs +2 -1
  40. package/dist/primitives/Either.d.cts.map +1 -1
  41. package/dist/primitives/Either.d.mts.map +1 -1
  42. package/dist/primitives/Either.mjs +2 -1
  43. package/dist/primitives/Either.mjs.map +1 -1
  44. package/dist/primitives/Literal.cjs +2 -1
  45. package/dist/primitives/Literal.d.cts.map +1 -1
  46. package/dist/primitives/Literal.d.mts.map +1 -1
  47. package/dist/primitives/Literal.mjs +2 -1
  48. package/dist/primitives/Literal.mjs.map +1 -1
  49. package/dist/primitives/Number.cjs +2 -1
  50. package/dist/primitives/Number.d.cts.map +1 -1
  51. package/dist/primitives/Number.d.mts.map +1 -1
  52. package/dist/primitives/Number.mjs +2 -1
  53. package/dist/primitives/Number.mjs.map +1 -1
  54. package/dist/primitives/String.cjs +2 -1
  55. package/dist/primitives/String.d.cts.map +1 -1
  56. package/dist/primitives/String.d.mts.map +1 -1
  57. package/dist/primitives/String.mjs +2 -1
  58. package/dist/primitives/String.mjs.map +1 -1
  59. package/dist/primitives/Struct.cjs +2 -1
  60. package/dist/primitives/Struct.d.cts.map +1 -1
  61. package/dist/primitives/Struct.d.mts.map +1 -1
  62. package/dist/primitives/Struct.mjs +2 -1
  63. package/dist/primitives/Struct.mjs.map +1 -1
  64. package/dist/primitives/Tree.cjs +2 -1
  65. package/dist/primitives/Tree.d.cts.map +1 -1
  66. package/dist/primitives/Tree.d.mts.map +1 -1
  67. package/dist/primitives/Tree.mjs +2 -1
  68. package/dist/primitives/Tree.mjs.map +1 -1
  69. package/dist/primitives/Union.cjs +2 -1
  70. package/dist/primitives/Union.d.cts.map +1 -1
  71. package/dist/primitives/Union.d.mts.map +1 -1
  72. package/dist/primitives/Union.mjs +2 -1
  73. package/dist/primitives/Union.mjs.map +1 -1
  74. package/dist/primitives/shared.d.cts.map +1 -1
  75. package/package.json +2 -2
  76. package/src/Document.ts +61 -8
  77. package/src/Operation.ts +2 -0
  78. package/src/OperationDefinition.ts +4 -1
  79. package/src/client/ClientDocument.ts +176 -0
  80. package/src/client/index.ts +1 -0
  81. package/src/primitives/Array.ts +1 -0
  82. package/src/primitives/Boolean.ts +1 -0
  83. package/src/primitives/Either.ts +1 -0
  84. package/src/primitives/Literal.ts +1 -0
  85. package/src/primitives/Number.ts +1 -0
  86. package/src/primitives/String.ts +1 -0
  87. package/src/primitives/Struct.ts +1 -0
  88. package/src/primitives/Tree.ts +1 -0
  89. package/src/primitives/Union.ts +1 -0
  90. package/tests/Document.test.ts +3 -2
  91. package/tests/client/ClientDocument.test.ts +177 -0
@@ -1,5 +1,5 @@
1
1
 
2
- > @voidhash/mimic@1.0.0-beta.12 build /home/runner/work/mimic/mimic/packages/mimic
2
+ > @voidhash/mimic@1.0.0-beta.13 build /home/runner/work/mimic/mimic/packages/mimic
3
3
  > tsdown
4
4
 
5
5
  ℹ tsdown v0.18.2 powered by rolldown v1.0.0-beta.55
@@ -11,24 +11,24 @@
11
11
  ℹ [CJS] dist/index.cjs  2.49 kB │ gzip: 0.42 kB
12
12
  ℹ [CJS] dist/client/index.cjs  1.92 kB │ gzip: 0.42 kB
13
13
  ℹ [CJS] dist/server/index.cjs  0.67 kB │ gzip: 0.26 kB
14
- ℹ [CJS] dist/primitives/Tree.cjs 29.98 kB │ gzip: 4.97 kB
15
- ℹ [CJS] dist/client/ClientDocument.cjs 20.36 kB │ gzip: 4.53 kB
14
+ ℹ [CJS] dist/primitives/Tree.cjs 30.01 kB │ gzip: 4.99 kB
15
+ ℹ [CJS] dist/client/ClientDocument.cjs 23.42 kB │ gzip: 5.12 kB
16
16
  ℹ [CJS] dist/FractionalIndex.cjs 16.98 kB │ gzip: 3.39 kB
17
17
  ℹ [CJS] dist/utils/tree-helpers.cjs 13.42 kB │ gzip: 3.18 kB
18
- ℹ [CJS] dist/primitives/Array.cjs 12.21 kB │ gzip: 2.66 kB
18
+ ℹ [CJS] dist/primitives/Array.cjs 12.23 kB │ gzip: 2.67 kB
19
19
  ℹ [CJS] dist/client/WebSocketTransport.cjs 10.98 kB │ gzip: 2.71 kB
20
- ℹ [CJS] dist/primitives/Struct.cjs 10.24 kB │ gzip: 2.33 kB
21
- ℹ [CJS] dist/primitives/Either.cjs  8.06 kB │ gzip: 2.04 kB
20
+ ℹ [CJS] dist/primitives/Struct.cjs 10.26 kB │ gzip: 2.34 kB
21
+ ℹ [CJS] dist/primitives/Either.cjs  8.08 kB │ gzip: 2.06 kB
22
22
  ℹ [CJS] dist/client/Rebase.cjs  7.85 kB │ gzip: 1.76 kB
23
- ℹ [CJS] dist/primitives/Union.cjs  7.47 kB │ gzip: 1.77 kB
23
+ ℹ [CJS] dist/primitives/Union.cjs  7.49 kB │ gzip: 1.78 kB
24
24
  ℹ [CJS] dist/EffectSchema.cjs  6.75 kB │ gzip: 1.63 kB
25
- ℹ [CJS] dist/primitives/String.cjs  5.03 kB │ gzip: 1.36 kB
25
+ ℹ [CJS] dist/Document.cjs  5.30 kB │ gzip: 1.77 kB
26
+ ℹ [CJS] dist/primitives/String.cjs  5.05 kB │ gzip: 1.37 kB
26
27
  ℹ [CJS] dist/client/errors.cjs  4.80 kB │ gzip: 0.97 kB
27
- ℹ [CJS] dist/primitives/Number.cjs  4.61 kB │ gzip: 1.21 kB
28
- ℹ [CJS] dist/Document.cjs  4.26 kB │ gzip: 1.43 kB
28
+ ℹ [CJS] dist/primitives/Number.cjs  4.63 kB │ gzip: 1.23 kB
29
29
  ℹ [CJS] dist/OperationPath.cjs  4.24 kB │ gzip: 1.19 kB
30
- ℹ [CJS] dist/primitives/Boolean.cjs  4.02 kB │ gzip: 1.06 kB
31
- ℹ [CJS] dist/primitives/Literal.cjs  3.89 kB │ gzip: 1.06 kB
30
+ ℹ [CJS] dist/primitives/Boolean.cjs  4.05 kB │ gzip: 1.07 kB
31
+ ℹ [CJS] dist/primitives/Literal.cjs  3.91 kB │ gzip: 1.07 kB
32
32
  ℹ [CJS] dist/server/ServerDocument.cjs  3.74 kB │ gzip: 1.16 kB
33
33
  ℹ [CJS] dist/client/StateMonitor.cjs  3.71 kB │ gzip: 1.27 kB
34
34
  ℹ [CJS] dist/primitives/shared.cjs  3.69 kB │ gzip: 1.25 kB
@@ -37,13 +37,13 @@
37
37
  ℹ [CJS] dist/Presence.cjs  2.36 kB │ gzip: 0.87 kB
38
38
  ℹ [CJS] dist/Primitive.cjs  2.34 kB │ gzip: 0.59 kB
39
39
  ℹ [CJS] dist/primitives/Lazy.cjs  1.81 kB │ gzip: 0.57 kB
40
+ ℹ [CJS] dist/Operation.cjs  1.75 kB │ gzip: 0.68 kB
40
41
  ℹ [CJS] dist/Transaction.cjs  1.66 kB │ gzip: 0.68 kB
41
- ℹ [CJS] dist/Operation.cjs  1.51 kB │ gzip: 0.60 kB
42
42
  ℹ [CJS] dist/_virtual/rolldown_runtime.cjs  1.31 kB │ gzip: 0.61 kB
43
43
  ℹ [CJS] dist/ProxyEnvironment.cjs  1.30 kB │ gzip: 0.57 kB
44
44
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs  0.95 kB │ gzip: 0.43 kB
45
+ ℹ [CJS] dist/OperationDefinition.cjs  0.78 kB │ gzip: 0.38 kB
45
46
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutProperties.cjs  0.61 kB │ gzip: 0.32 kB
46
- ℹ [CJS] dist/OperationDefinition.cjs  0.55 kB │ gzip: 0.30 kB
47
47
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs  0.53 kB │ gzip: 0.29 kB
48
48
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs  0.52 kB │ gzip: 0.32 kB
49
49
  ℹ [CJS] dist/types/index.cjs  0.50 kB │ gzip: 0.27 kB
@@ -52,9 +52,9 @@
52
52
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutPropertiesLoose.cjs  0.37 kB │ gzip: 0.24 kB
53
53
  ℹ [CJS] dist/client/Transport.cjs  0.21 kB │ gzip: 0.16 kB
54
54
  ℹ [CJS] dist/Transform.cjs  0.20 kB │ gzip: 0.16 kB
55
- ℹ [CJS] 44 files, total: 214.85 kB
55
+ ℹ [CJS] 44 files, total: 219.61 kB
56
56
  ℹ [CJS] dist/primitives/Tree.d.cts.map  6.90 kB │ gzip: 2.60 kB
57
- ℹ [CJS] dist/primitives/Struct.d.cts.map  4.62 kB │ gzip: 1.95 kB
57
+ ℹ [CJS] dist/primitives/Struct.d.cts.map  4.62 kB │ gzip: 1.94 kB
58
58
  ℹ [CJS] dist/utils/tree-helpers.d.cts.map  3.61 kB │ gzip: 1.31 kB
59
59
  ℹ [CJS] dist/primitives/Array.d.cts.map  3.27 kB │ gzip: 1.36 kB
60
60
  ℹ [CJS] dist/primitives/Union.d.cts.map  3.16 kB │ gzip: 1.38 kB
@@ -64,16 +64,16 @@
64
64
  ℹ [CJS] dist/primitives/String.d.cts.map  2.26 kB │ gzip: 1.00 kB
65
65
  ℹ [CJS] dist/primitives/Literal.d.cts.map  2.16 kB │ gzip: 0.99 kB
66
66
  ℹ [CJS] dist/primitives/Number.d.cts.map  2.13 kB │ gzip: 0.95 kB
67
+ ℹ [CJS] dist/client/ClientDocument.d.cts.map  1.84 kB │ gzip: 0.79 kB
67
68
  ℹ [CJS] dist/primitives/Boolean.d.cts.map  1.76 kB │ gzip: 0.81 kB
68
- ℹ [CJS] dist/client/ClientDocument.d.cts.map  1.69 kB │ gzip: 0.72 kB
69
69
  ℹ [CJS] dist/client/Transport.d.cts.map  1.47 kB │ gzip: 0.62 kB
70
70
  ℹ [CJS] dist/primitives/Lazy.d.cts.map  1.44 kB │ gzip: 0.69 kB
71
71
  ℹ [CJS] dist/client/Rebase.d.cts.map  1.02 kB │ gzip: 0.47 kB
72
+ ℹ [CJS] dist/OperationDefinition.d.cts.map  1.00 kB │ gzip: 0.45 kB
72
73
  ℹ [CJS] dist/EffectSchema.d.cts.map  1.00 kB │ gzip: 0.48 kB
73
74
  ℹ [CJS] dist/server/ServerDocument.d.cts.map  0.99 kB │ gzip: 0.50 kB
74
- ℹ [CJS] dist/OperationDefinition.d.cts.map  0.89 kB │ gzip: 0.42 kB
75
75
  ℹ [CJS] dist/Document.d.cts.map  0.85 kB │ gzip: 0.46 kB
76
- ℹ [CJS] dist/Operation.d.cts.map  0.81 kB │ gzip: 0.42 kB
76
+ ℹ [CJS] dist/Operation.d.cts.map  0.82 kB │ gzip: 0.42 kB
77
77
  ℹ [CJS] dist/OperationPath.d.cts.map  0.77 kB │ gzip: 0.43 kB
78
78
  ℹ [CJS] dist/client/errors.d.cts.map  0.74 kB │ gzip: 0.38 kB
79
79
  ℹ [CJS] dist/Presence.d.cts.map  0.69 kB │ gzip: 0.38 kB
@@ -86,14 +86,14 @@
86
86
  ℹ [CJS] dist/types/index.d.cts.map  0.12 kB │ gzip: 0.11 kB
87
87
  ℹ [CJS] dist/Primitive.d.cts.map  0.12 kB │ gzip: 0.11 kB
88
88
  ℹ [CJS] dist/index.d.cts  1.18 kB │ gzip: 0.30 kB
89
- ℹ [CJS] dist/client/index.d.cts  1.01 kB │ gzip: 0.29 kB
89
+ ℹ [CJS] dist/client/index.d.cts  1.04 kB │ gzip: 0.31 kB
90
90
  ℹ [CJS] dist/server/index.d.cts  0.68 kB │ gzip: 0.24 kB
91
91
  ℹ [CJS] dist/primitives/Tree.d.cts 13.50 kB │ gzip: 3.50 kB
92
92
  ℹ [CJS] dist/utils/tree-helpers.d.cts 12.18 kB │ gzip: 2.52 kB
93
93
  ℹ [CJS] dist/client/Transport.d.cts  7.30 kB │ gzip: 1.84 kB
94
+ ℹ [CJS] dist/client/ClientDocument.d.cts  6.99 kB │ gzip: 2.01 kB
94
95
  ℹ [CJS] dist/primitives/Struct.d.cts  6.93 kB │ gzip: 1.84 kB
95
96
  ℹ [CJS] dist/primitives/shared.d.cts  6.89 kB │ gzip: 2.09 kB
96
- ℹ [CJS] dist/client/ClientDocument.d.cts  6.07 kB │ gzip: 1.68 kB
97
97
  ℹ [CJS] dist/server/ServerDocument.d.cts  5.48 kB │ gzip: 1.76 kB
98
98
  ℹ [CJS] dist/primitives/Either.d.cts  5.44 kB │ gzip: 1.54 kB
99
99
  ℹ [CJS] dist/primitives/Array.d.cts  5.01 kB │ gzip: 1.44 kB
@@ -113,74 +113,74 @@
113
113
  ℹ [CJS] dist/types/index.d.cts  2.49 kB │ gzip: 0.59 kB
114
114
  ℹ [CJS] dist/OperationPath.d.cts  2.36 kB │ gzip: 0.71 kB
115
115
  ℹ [CJS] dist/primitives/Lazy.d.cts  2.02 kB │ gzip: 0.61 kB
116
- ℹ [CJS] dist/Operation.d.cts  1.92 kB │ gzip: 0.63 kB
116
+ ℹ [CJS] dist/Operation.d.cts  1.95 kB │ gzip: 0.64 kB
117
117
  ℹ [CJS] dist/Transaction.d.cts  1.87 kB │ gzip: 0.65 kB
118
118
  ℹ [CJS] dist/server/errors.d.cts  1.77 kB │ gzip: 0.46 kB
119
119
  ℹ [CJS] dist/ProxyEnvironment.d.cts  1.39 kB │ gzip: 0.56 kB
120
120
  ℹ [CJS] dist/client/WebSocketTransport.d.cts  1.22 kB │ gzip: 0.55 kB
121
- ℹ [CJS] dist/OperationDefinition.d.cts  1.10 kB │ gzip: 0.37 kB
121
+ ℹ [CJS] dist/OperationDefinition.d.cts  1.21 kB │ gzip: 0.40 kB
122
122
  ℹ [CJS] dist/Transform.d.cts  0.48 kB │ gzip: 0.26 kB
123
- ℹ [CJS] 67 files, total: 184.57 kB
124
- ✔ Build complete in 6318ms
123
+ ℹ [CJS] 67 files, total: 185.94 kB
124
+ ✔ Build complete in 6276ms
125
125
  ℹ [ESM] dist/index.mjs  1.13 kB │ gzip: 0.29 kB
126
126
  ℹ [ESM] dist/client/index.mjs  0.99 kB │ gzip: 0.28 kB
127
127
  ℹ [ESM] dist/server/index.mjs  0.41 kB │ gzip: 0.17 kB
128
- ℹ [ESM] dist/primitives/Tree.mjs.map 68.16 kB │ gzip: 12.83 kB
128
+ ℹ [ESM] dist/primitives/Tree.mjs.map 68.20 kB │ gzip: 12.85 kB
129
+ ℹ [ESM] dist/client/ClientDocument.mjs.map 54.81 kB │ gzip: 12.64 kB
129
130
  ℹ [ESM] dist/FractionalIndex.mjs.map 52.10 kB │ gzip: 10.05 kB
130
- ℹ [ESM] dist/client/ClientDocument.mjs.map 46.96 kB │ gzip: 10.85 kB
131
- ℹ [ESM] dist/primitives/Tree.mjs 28.12 kB │ gzip: 4.93 kB
132
- ℹ [ESM] dist/primitives/Array.mjs.map 26.02 kB │ gzip: 6.47 kB
133
- ℹ [ESM] dist/primitives/Struct.mjs.map 25.45 kB │ gzip: 6.50 kB
131
+ ℹ [ESM] dist/primitives/Tree.mjs 28.14 kB │ gzip: 4.95 kB
132
+ ℹ [ESM] dist/primitives/Array.mjs.map 26.06 kB │ gzip: 6.49 kB
133
+ ℹ [ESM] dist/primitives/Struct.mjs.map 25.49 kB │ gzip: 6.51 kB
134
134
  ℹ [ESM] dist/utils/tree-helpers.mjs.map 24.70 kB │ gzip: 5.20 kB
135
135
  ℹ [ESM] dist/client/WebSocketTransport.mjs.map 23.44 kB │ gzip: 5.75 kB
136
- ℹ [ESM] dist/client/ClientDocument.mjs 20.03 kB │ gzip: 4.49 kB
137
- ℹ [ESM] dist/primitives/Union.mjs.map 18.55 kB │ gzip: 4.63 kB
138
- ℹ [ESM] dist/primitives/Either.mjs.map 16.78 kB │ gzip: 4.12 kB
136
+ ℹ [ESM] dist/client/ClientDocument.mjs 22.98 kB │ gzip: 5.08 kB
137
+ ℹ [ESM] dist/primitives/Union.mjs.map 18.59 kB │ gzip: 4.65 kB
138
+ ℹ [ESM] dist/primitives/Either.mjs.map 16.82 kB │ gzip: 4.14 kB
139
139
  ℹ [ESM] dist/EffectSchema.mjs.map 16.73 kB │ gzip: 3.54 kB
140
140
  ℹ [ESM] dist/FractionalIndex.mjs 16.49 kB │ gzip: 3.36 kB
141
141
  ℹ [ESM] dist/client/Rebase.mjs.map 14.15 kB │ gzip: 3.21 kB
142
142
  ℹ [ESM] dist/server/ServerDocument.mjs.map 14.09 kB │ gzip: 3.86 kB
143
143
  ℹ [ESM] dist/utils/tree-helpers.mjs 13.31 kB │ gzip: 3.15 kB
144
+ ℹ [ESM] dist/Document.mjs.map 13.29 kB │ gzip: 4.11 kB
144
145
  ℹ [ESM] dist/primitives/shared.mjs.map 13.14 kB │ gzip: 3.69 kB
145
- ℹ [ESM] dist/primitives/Array.mjs 11.07 kB │ gzip: 2.64 kB
146
- ℹ [ESM] dist/Document.mjs.map 10.89 kB │ gzip: 3.31 kB
146
+ ℹ [ESM] dist/primitives/Array.mjs 11.09 kB │ gzip: 2.65 kB
147
147
  ℹ [ESM] dist/client/WebSocketTransport.mjs 10.81 kB │ gzip: 2.68 kB
148
148
  ℹ [ESM] dist/client/StateMonitor.mjs.map 10.39 kB │ gzip: 3.04 kB
149
- ℹ [ESM] dist/primitives/String.mjs.map  9.70 kB │ gzip: 2.70 kB
150
- ℹ [ESM] dist/primitives/Struct.mjs  9.30 kB │ gzip: 2.31 kB
149
+ ℹ [ESM] dist/primitives/String.mjs.map  9.73 kB │ gzip: 2.71 kB
150
+ ℹ [ESM] dist/primitives/Struct.mjs  9.32 kB │ gzip: 2.32 kB
151
151
  ℹ [ESM] dist/client/Transport.mjs.map  9.09 kB │ gzip: 1.86 kB
152
- ℹ [ESM] dist/primitives/Number.mjs.map  8.71 kB │ gzip: 2.41 kB
152
+ ℹ [ESM] dist/primitives/Number.mjs.map  8.75 kB │ gzip: 2.43 kB
153
153
  ℹ [ESM] dist/client/Rebase.mjs  7.61 kB │ gzip: 1.73 kB
154
- ℹ [ESM] dist/primitives/Either.mjs  7.47 kB │ gzip: 2.02 kB
155
- ℹ [ESM] dist/primitives/Boolean.mjs.map  7.45 kB │ gzip: 2.13 kB
156
- ℹ [ESM] dist/primitives/Literal.mjs.map  7.42 kB │ gzip: 2.17 kB
154
+ ℹ [ESM] dist/primitives/Either.mjs  7.49 kB │ gzip: 2.03 kB
155
+ ℹ [ESM] dist/primitives/Boolean.mjs.map  7.48 kB │ gzip: 2.16 kB
156
+ ℹ [ESM] dist/primitives/Literal.mjs.map  7.46 kB │ gzip: 2.18 kB
157
157
  ℹ [ESM] dist/OperationPath.mjs.map  7.30 kB │ gzip: 1.73 kB
158
158
  ℹ [ESM] dist/primitives/Tree.d.mts.map  6.90 kB │ gzip: 2.60 kB
159
- ℹ [ESM] dist/primitives/Union.mjs  6.85 kB │ gzip: 1.75 kB
159
+ ℹ [ESM] dist/primitives/Union.mjs  6.87 kB │ gzip: 1.76 kB
160
160
  ℹ [ESM] dist/EffectSchema.mjs  6.47 kB │ gzip: 1.59 kB
161
161
  ℹ [ESM] dist/primitives/TreeNode.mjs.map  6.47 kB │ gzip: 2.05 kB
162
162
  ℹ [ESM] dist/client/errors.mjs.map  5.68 kB │ gzip: 1.37 kB
163
+ ℹ [ESM] dist/Document.mjs  5.03 kB │ gzip: 1.74 kB
163
164
  ℹ [ESM] dist/primitives/Struct.d.mts.map  4.63 kB │ gzip: 1.96 kB
164
165
  ℹ [ESM] dist/primitives/Lazy.mjs.map  4.59 kB │ gzip: 1.40 kB
165
166
  ℹ [ESM] dist/Presence.mjs.map  4.56 kB │ gzip: 1.30 kB
166
- ℹ [ESM] dist/primitives/String.mjs  4.42 kB │ gzip: 1.34 kB
167
+ ℹ [ESM] dist/primitives/String.mjs  4.44 kB │ gzip: 1.35 kB
167
168
  ℹ [ESM] dist/client/errors.mjs  4.10 kB │ gzip: 0.95 kB
168
169
  ℹ [ESM] dist/OperationPath.mjs  4.03 kB │ gzip: 1.13 kB
169
- ℹ [ESM] dist/Document.mjs  4.00 kB │ gzip: 1.40 kB
170
- ℹ [ESM] dist/primitives/Number.mjs  3.99 kB │ gzip: 1.19 kB
170
+ ℹ [ESM] dist/primitives/Number.mjs  4.01 kB │ gzip: 1.21 kB
171
171
  ℹ [ESM] dist/server/errors.mjs.map  3.86 kB │ gzip: 0.96 kB
172
172
  ℹ [ESM] dist/types/index.mjs.map  3.71 kB │ gzip: 0.78 kB
173
173
  ℹ [ESM] dist/utils/tree-helpers.d.mts.map  3.61 kB │ gzip: 1.31 kB
174
174
  ℹ [ESM] dist/client/StateMonitor.mjs  3.60 kB │ gzip: 1.23 kB
175
175
  ℹ [ESM] dist/server/ServerDocument.mjs  3.56 kB │ gzip: 1.13 kB
176
176
  ℹ [ESM] dist/primitives/shared.mjs  3.55 kB │ gzip: 1.25 kB
177
- ℹ [ESM] dist/primitives/Boolean.mjs  3.40 kB │ gzip: 1.04 kB
178
- ℹ [ESM] dist/primitives/Literal.mjs  3.31 kB │ gzip: 1.04 kB
177
+ ℹ [ESM] dist/primitives/Boolean.mjs  3.43 kB │ gzip: 1.05 kB
178
+ ℹ [ESM] dist/primitives/Literal.mjs  3.33 kB │ gzip: 1.05 kB
179
179
  ℹ [ESM] dist/primitives/Array.d.mts.map  3.26 kB │ gzip: 1.35 kB
180
- ℹ [ESM] dist/primitives/Union.d.mts.map  3.15 kB │ gzip: 1.37 kB
180
+ ℹ [ESM] dist/primitives/Union.d.mts.map  3.15 kB │ gzip: 1.36 kB
181
181
  ℹ [ESM] dist/primitives/Either.d.mts.map  3.12 kB │ gzip: 1.26 kB
182
+ ℹ [ESM] dist/Operation.mjs.map  2.93 kB │ gzip: 0.95 kB
182
183
  ℹ [ESM] dist/server/errors.mjs  2.85 kB │ gzip: 0.70 kB
183
- ℹ [ESM] dist/Operation.mjs.map  2.75 kB │ gzip: 0.86 kB
184
184
  ℹ [ESM] dist/Transaction.mjs.map  2.65 kB │ gzip: 0.99 kB
185
185
  ℹ [ESM] dist/primitives/TreeNode.d.mts.map  2.45 kB │ gzip: 1.07 kB
186
186
  ℹ [ESM] dist/ProxyEnvironment.mjs.map  2.42 kB │ gzip: 0.93 kB
@@ -191,33 +191,33 @@
191
191
  ℹ [ESM] dist/Presence.mjs  2.15 kB │ gzip: 0.80 kB
192
192
  ℹ [ESM] dist/primitives/Number.d.mts.map  2.13 kB │ gzip: 0.95 kB
193
193
  ℹ [ESM] dist/Primitive.mjs  1.98 kB │ gzip: 0.57 kB
194
+ ℹ [ESM] dist/client/ClientDocument.d.mts.map  1.85 kB │ gzip: 0.79 kB
194
195
  ℹ [ESM] dist/primitives/Boolean.d.mts.map  1.76 kB │ gzip: 0.81 kB
195
- ℹ [ESM] dist/client/ClientDocument.d.mts.map  1.75 kB │ gzip: 0.76 kB
196
196
  ℹ [ESM] dist/primitives/Lazy.mjs  1.57 kB │ gzip: 0.58 kB
197
+ ℹ [ESM] dist/Operation.mjs  1.53 kB │ gzip: 0.65 kB
197
198
  ℹ [ESM] dist/Transaction.mjs  1.48 kB │ gzip: 0.64 kB
198
199
  ℹ [ESM] dist/client/Transport.d.mts.map  1.47 kB │ gzip: 0.62 kB
199
200
  ℹ [ESM] dist/primitives/Lazy.d.mts.map  1.44 kB │ gzip: 0.69 kB
200
- ℹ [ESM] dist/Operation.mjs  1.32 kB │ gzip: 0.57 kB
201
+ ℹ [ESM] dist/OperationDefinition.mjs.map  1.29 kB │ gzip: 0.54 kB
201
202
  ℹ [ESM] dist/ProxyEnvironment.mjs  1.18 kB │ gzip: 0.53 kB
202
- ℹ [ESM] dist/OperationDefinition.mjs.map  1.07 kB │ gzip: 0.47 kB
203
203
  ℹ [ESM] dist/Primitive.mjs.map  1.05 kB │ gzip: 0.29 kB
204
204
  ℹ [ESM] dist/client/Rebase.d.mts.map  1.03 kB │ gzip: 0.48 kB
205
+ ℹ [ESM] dist/OperationDefinition.d.mts.map  1.00 kB │ gzip: 0.45 kB
205
206
  ℹ [ESM] dist/EffectSchema.d.mts.map  1.00 kB │ gzip: 0.48 kB
206
207
  ℹ [ESM] dist/server/ServerDocument.d.mts.map  0.97 kB │ gzip: 0.49 kB
207
208
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs  0.90 kB │ gzip: 0.42 kB
208
- ℹ [ESM] dist/OperationDefinition.d.mts.map  0.89 kB │ gzip: 0.42 kB
209
209
  ℹ [ESM] dist/Document.d.mts.map  0.84 kB │ gzip: 0.46 kB
210
- ℹ [ESM] dist/Operation.d.mts.map  0.81 kB │ gzip: 0.42 kB
210
+ ℹ [ESM] dist/Operation.d.mts.map  0.82 kB │ gzip: 0.42 kB
211
211
  ℹ [ESM] dist/OperationPath.d.mts.map  0.77 kB │ gzip: 0.43 kB
212
212
  ℹ [ESM] dist/client/errors.d.mts.map  0.74 kB │ gzip: 0.38 kB
213
213
  ℹ [ESM] dist/Presence.d.mts.map  0.69 kB │ gzip: 0.38 kB
214
214
  ℹ [ESM] dist/Transform.mjs.map  0.67 kB │ gzip: 0.30 kB
215
215
  ℹ [ESM] dist/client/StateMonitor.d.mts.map  0.63 kB │ gzip: 0.35 kB
216
+ ℹ [ESM] dist/OperationDefinition.mjs  0.63 kB │ gzip: 0.34 kB
216
217
  ℹ [ESM] dist/Transaction.d.mts.map  0.56 kB │ gzip: 0.32 kB
217
218
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectWithoutProperties.mjs  0.54 kB │ gzip: 0.31 kB
218
219
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs  0.47 kB │ gzip: 0.30 kB
219
220
  ℹ [ESM] dist/ProxyEnvironment.d.mts.map  0.44 kB │ gzip: 0.27 kB
220
- ℹ [ESM] dist/OperationDefinition.mjs  0.43 kB │ gzip: 0.26 kB
221
221
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs  0.43 kB │ gzip: 0.24 kB
222
222
  ℹ [ESM] dist/server/errors.d.mts.map  0.41 kB │ gzip: 0.25 kB
223
223
  ℹ [ESM] dist/types/index.mjs  0.37 kB │ gzip: 0.23 kB
@@ -232,14 +232,14 @@
232
232
  ℹ [ESM] dist/types/index.d.mts.map  0.12 kB │ gzip: 0.11 kB
233
233
  ℹ [ESM] dist/Primitive.d.mts.map  0.12 kB │ gzip: 0.11 kB
234
234
  ℹ [ESM] dist/index.d.mts  1.18 kB │ gzip: 0.30 kB
235
- ℹ [ESM] dist/client/index.d.mts  1.01 kB │ gzip: 0.29 kB
235
+ ℹ [ESM] dist/client/index.d.mts  1.04 kB │ gzip: 0.31 kB
236
236
  ℹ [ESM] dist/server/index.d.mts  0.68 kB │ gzip: 0.24 kB
237
237
  ℹ [ESM] dist/primitives/Tree.d.mts 13.50 kB │ gzip: 3.50 kB
238
238
  ℹ [ESM] dist/utils/tree-helpers.d.mts 12.18 kB │ gzip: 2.52 kB
239
239
  ℹ [ESM] dist/client/Transport.d.mts  7.30 kB │ gzip: 1.84 kB
240
+ ℹ [ESM] dist/client/ClientDocument.d.mts  7.02 kB │ gzip: 2.02 kB
240
241
  ℹ [ESM] dist/primitives/Struct.d.mts  6.96 kB │ gzip: 1.85 kB
241
242
  ℹ [ESM] dist/primitives/shared.d.mts  6.89 kB │ gzip: 2.09 kB
242
- ℹ [ESM] dist/client/ClientDocument.d.mts  6.09 kB │ gzip: 1.69 kB
243
243
  ℹ [ESM] dist/server/ServerDocument.d.mts  5.50 kB │ gzip: 1.76 kB
244
244
  ℹ [ESM] dist/primitives/Either.d.mts  5.44 kB │ gzip: 1.54 kB
245
245
  ℹ [ESM] dist/primitives/Array.d.mts  5.04 kB │ gzip: 1.45 kB
@@ -259,12 +259,12 @@
259
259
  ℹ [ESM] dist/types/index.d.mts  2.49 kB │ gzip: 0.59 kB
260
260
  ℹ [ESM] dist/OperationPath.d.mts  2.36 kB │ gzip: 0.71 kB
261
261
  ℹ [ESM] dist/primitives/Lazy.d.mts  2.04 kB │ gzip: 0.62 kB
262
- ℹ [ESM] dist/Operation.d.mts  1.92 kB │ gzip: 0.63 kB
262
+ ℹ [ESM] dist/Operation.d.mts  1.95 kB │ gzip: 0.64 kB
263
263
  ℹ [ESM] dist/Transaction.d.mts  1.87 kB │ gzip: 0.65 kB
264
264
  ℹ [ESM] dist/server/errors.d.mts  1.77 kB │ gzip: 0.46 kB
265
265
  ℹ [ESM] dist/ProxyEnvironment.d.mts  1.39 kB │ gzip: 0.56 kB
266
266
  ℹ [ESM] dist/client/WebSocketTransport.d.mts  1.22 kB │ gzip: 0.55 kB
267
- ℹ [ESM] dist/OperationDefinition.d.mts  1.10 kB │ gzip: 0.37 kB
267
+ ℹ [ESM] dist/OperationDefinition.d.mts  1.21 kB │ gzip: 0.40 kB
268
268
  ℹ [ESM] dist/Transform.d.mts  0.48 kB │ gzip: 0.26 kB
269
- ℹ [ESM] 144 files, total: 853.49 kB
270
- ✔ Build complete in 6353ms
269
+ ℹ [ESM] 144 files, total: 870.36 kB
270
+ ✔ Build complete in 6322ms
package/dist/Document.cjs CHANGED
@@ -35,9 +35,52 @@ var OperationError = class extends Error {
35
35
  */
36
36
  const make = (schema, options) => {
37
37
  let _state = (options === null || options === void 0 ? void 0 : options.initialState) !== void 0 ? options.initialState : (options === null || options === void 0 ? void 0 : options.initial) !== void 0 ? schema._internal.convertSetInputToState ? schema._internal.convertSetInputToState(options.initial) : options.initial : schema._internal.getInitialState();
38
- let _pending = [];
38
+ /**
39
+ * An ops buffer that maintains a dedup index for O(1) lookups by path:kind.
40
+ */
41
+ const makeOpsBuffer = () => {
42
+ let ops = [];
43
+ let index = /* @__PURE__ */ new Map();
44
+ const dedupKey = (op) => `${require_OperationPath.encode(op.path)}:${String(op.kind)}`;
45
+ return {
46
+ push(op) {
47
+ if (op.deduplicable) {
48
+ const key = dedupKey(op);
49
+ const existing = index.get(key);
50
+ if (existing !== void 0) {
51
+ ops.splice(existing, 1);
52
+ const newIndex = /* @__PURE__ */ new Map();
53
+ for (const [k, v] of index) {
54
+ if (k === key) continue;
55
+ newIndex.set(k, v > existing ? v - 1 : v);
56
+ }
57
+ index = newIndex;
58
+ }
59
+ index.set(key, ops.length);
60
+ }
61
+ ops.push(op);
62
+ },
63
+ drain() {
64
+ const result = ops;
65
+ ops = [];
66
+ index = /* @__PURE__ */ new Map();
67
+ return result;
68
+ },
69
+ mergeFrom(other) {
70
+ for (const op of other.toArray()) this.push(op);
71
+ },
72
+ toArray() {
73
+ return ops;
74
+ },
75
+ reset() {
76
+ ops = [];
77
+ index = /* @__PURE__ */ new Map();
78
+ }
79
+ };
80
+ };
81
+ const _pending = makeOpsBuffer();
39
82
  let _inTransaction = false;
40
- let _txOps = [];
83
+ let _txOps = makeOpsBuffer();
41
84
  let _txBaseState = void 0;
42
85
  /**
43
86
  * Gets state at the given path.
@@ -115,18 +158,18 @@ const make = (schema, options) => {
115
158
  transaction: (fn) => {
116
159
  if (_inTransaction) throw new NestedTransactionError();
117
160
  _inTransaction = true;
118
- _txOps = [];
161
+ _txOps.reset();
119
162
  _txBaseState = _state;
120
163
  try {
121
164
  const result = fn(rootProxy);
122
- _pending.push(..._txOps);
165
+ _pending.mergeFrom(_txOps);
123
166
  return result;
124
167
  } catch (error) {
125
168
  _state = _txBaseState;
126
169
  throw error;
127
170
  } finally {
128
171
  _inTransaction = false;
129
- _txOps = [];
172
+ _txOps.reset();
130
173
  _txBaseState = void 0;
131
174
  }
132
175
  },
@@ -134,9 +177,7 @@ const make = (schema, options) => {
134
177
  for (const op of ops) applyOperation(op);
135
178
  },
136
179
  flush: () => {
137
- const tx = require_Transaction.make(_pending);
138
- _pending = [];
139
- return tx;
180
+ return require_Transaction.make(_pending.drain());
140
181
  }
141
182
  };
142
183
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Document.d.mts","names":[],"sources":["../src/Document.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cAaa,sBAAA,SAA+B,KAAA;;;;;;;cAW/B,cAAA,SAAuB,KAAA;EAXvB,SAAA,IAAA,GAAA,gBAAuB;EAWvB,WAAA,CAAA,OAAe,EAAA,MAAA;AAe5B;;;;AAKiB,UALA,QAKA,CAAA,gBALyB,YAKzB,CAAA,CAAA;EAGa;EAArB,SAAA,MAAA,EANU,OAMV;EAQ+B;EAAxB,SAAA,IAAA,EAXC,UAWD,CAXsB,OAWtB,CAAA;EAQiC;EAArB,GAAA,EAAA,EAhBnB,UAgBmB,CAhBE,OAgBF,CAAA,GAAA,SAAA;EAAkC;;;;;;EAkB7C,UAAA,EAAA,EA1BD,aA0BgB,CA1BQ,OA0BR,CAAA;EAAiB;;;;;;EAkBpC,WAyKZ,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,IAAA,EA7M2B,UA6M3B,CA7MgD,OA6MhD,CAAA,EAAA,GA7M6D,CA6M7D,CAAA,EA7MiE,CA6MjE;EAzKoC;;;;EAGzB,KAAA,CAAA,GAAA,EAjCC,aAiCD,CAjCe,SAiCf,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA;EAAT;;;WA5BQ;;UAOM,gCAAgC;;qBAE5B,cAAwB;;;;;;0BAMnB,WAAqB;;;;;cAUlC,uBAAwB,sBAC3B,mBACE,gBAAgB,aACzB,SAAS"}
1
+ {"version":3,"file":"Document.d.mts","names":[],"sources":["../src/Document.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;cAaa,sBAAA,SAA+B,KAAA;;;;;;;cAW/B,cAAA,SAAuB,KAAA;EAXvB,SAAA,IAAA,GAAA,gBAAuB;EAWvB,WAAA,CAAA,OAAe,EAAA,MAAA;AAe5B;;;;AAKiB,UALA,QAKA,CAAA,gBALyB,YAKzB,CAAA,CAAA;EAGa;EAArB,SAAA,MAAA,EANU,OAMV;EAQ+B;EAAxB,SAAA,IAAA,EAXC,UAWD,CAXsB,OAWtB,CAAA;EAQiC;EAArB,GAAA,EAAA,EAhBnB,UAgBmB,CAhBE,OAgBF,CAAA,GAAA,SAAA;EAAkC;;;;;;EAkB7C,UAAA,EAAA,EA1BD,aA0BgB,CA1BQ,OA0BR,CAAA;EAAiB;;;;;;EAkBpC,WA8NZ,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,IAAA,EAlQ2B,UAkQ3B,CAlQgD,OAkQhD,CAAA,EAAA,GAlQ6D,CAkQ7D,CAAA,EAlQiE,CAkQjE;EA9NoC;;;;EAGzB,KAAA,CAAA,GAAA,EAjCC,aAiCD,CAjCe,SAiCf,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA;EAAT;;;WA5BQ;;UAOM,gCAAgC;;qBAE5B,cAAwB;;;;;;0BAMnB,WAAqB;;;;;cAUlC,uBAAwB,sBAC3B,mBACE,gBAAgB,aACzB,SAAS"}
package/dist/Document.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { __export } from "./_virtual/rolldown_runtime.mjs";
2
2
  import { _defineProperty } from "./_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs";
3
- import { make as make$1 } from "./OperationPath.mjs";
3
+ import { encode, make as make$1 } from "./OperationPath.mjs";
4
4
  import { make as make$2 } from "./ProxyEnvironment.mjs";
5
5
  import { make as make$3 } from "./Transaction.mjs";
6
6
 
@@ -35,9 +35,52 @@ var OperationError = class extends Error {
35
35
  */
36
36
  const make = (schema, options) => {
37
37
  let _state = (options === null || options === void 0 ? void 0 : options.initialState) !== void 0 ? options.initialState : (options === null || options === void 0 ? void 0 : options.initial) !== void 0 ? schema._internal.convertSetInputToState ? schema._internal.convertSetInputToState(options.initial) : options.initial : schema._internal.getInitialState();
38
- let _pending = [];
38
+ /**
39
+ * An ops buffer that maintains a dedup index for O(1) lookups by path:kind.
40
+ */
41
+ const makeOpsBuffer = () => {
42
+ let ops = [];
43
+ let index = /* @__PURE__ */ new Map();
44
+ const dedupKey = (op) => `${encode(op.path)}:${String(op.kind)}`;
45
+ return {
46
+ push(op) {
47
+ if (op.deduplicable) {
48
+ const key = dedupKey(op);
49
+ const existing = index.get(key);
50
+ if (existing !== void 0) {
51
+ ops.splice(existing, 1);
52
+ const newIndex = /* @__PURE__ */ new Map();
53
+ for (const [k, v] of index) {
54
+ if (k === key) continue;
55
+ newIndex.set(k, v > existing ? v - 1 : v);
56
+ }
57
+ index = newIndex;
58
+ }
59
+ index.set(key, ops.length);
60
+ }
61
+ ops.push(op);
62
+ },
63
+ drain() {
64
+ const result = ops;
65
+ ops = [];
66
+ index = /* @__PURE__ */ new Map();
67
+ return result;
68
+ },
69
+ mergeFrom(other) {
70
+ for (const op of other.toArray()) this.push(op);
71
+ },
72
+ toArray() {
73
+ return ops;
74
+ },
75
+ reset() {
76
+ ops = [];
77
+ index = /* @__PURE__ */ new Map();
78
+ }
79
+ };
80
+ };
81
+ const _pending = makeOpsBuffer();
39
82
  let _inTransaction = false;
40
- let _txOps = [];
83
+ let _txOps = makeOpsBuffer();
41
84
  let _txBaseState = void 0;
42
85
  /**
43
86
  * Gets state at the given path.
@@ -115,18 +158,18 @@ const make = (schema, options) => {
115
158
  transaction: (fn) => {
116
159
  if (_inTransaction) throw new NestedTransactionError();
117
160
  _inTransaction = true;
118
- _txOps = [];
161
+ _txOps.reset();
119
162
  _txBaseState = _state;
120
163
  try {
121
164
  const result = fn(rootProxy);
122
- _pending.push(..._txOps);
165
+ _pending.mergeFrom(_txOps);
123
166
  return result;
124
167
  } catch (error) {
125
168
  _state = _txBaseState;
126
169
  throw error;
127
170
  } finally {
128
171
  _inTransaction = false;
129
- _txOps = [];
172
+ _txOps.reset();
130
173
  _txBaseState = void 0;
131
174
  }
132
175
  },
@@ -134,9 +177,7 @@ const make = (schema, options) => {
134
177
  for (const op of ops) applyOperation(op);
135
178
  },
136
179
  flush: () => {
137
- const tx = make$3(_pending);
138
- _pending = [];
139
- return tx;
180
+ return make$3(_pending.drain());
140
181
  }
141
182
  };
142
183
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Document.mjs","names":["_state: Primitive.InferState<TSchema> | undefined","_pending: Operation.Operation<any, any, any>[]","_txOps: Operation.Operation<any, any, any>[]","_txBaseState: Primitive.InferState<TSchema> | undefined","current: unknown","ProxyEnvironment.make","OperationPath.make","Transaction.make"],"sources":["../src/Document.ts"],"sourcesContent":["import * as Operation from \"./Operation\";\nimport * as OperationPath from \"./OperationPath\";\nimport * as ProxyEnvironment from \"./ProxyEnvironment\";\nimport * as Transaction from \"./Transaction\";\nimport type * as Primitive from \"./Primitive\";\n\n// =============================================================================\n// Document Errors\n// =============================================================================\n\n/**\n * Error thrown when attempting to start a nested transaction.\n */\nexport class NestedTransactionError extends Error {\n readonly _tag = \"NestedTransactionError\";\n constructor() {\n super(\"Nested transactions are not supported\");\n this.name = \"NestedTransactionError\";\n }\n}\n\n/**\n * Error thrown when an operation fails to apply.\n */\nexport class OperationError extends Error {\n readonly _tag = \"OperationError\";\n constructor(message: string) {\n super(message);\n this.name = \"OperationError\";\n }\n}\n\n// =============================================================================\n// Document Interface\n// =============================================================================\n\n/**\n * A Document manages state for a primitive-based schema with transaction support.\n */\nexport interface Document<TSchema extends Primitive.AnyPrimitive> {\n /** The schema defining this document's structure */\n readonly schema: TSchema;\n \n /** Root proxy for accessing and modifying document data */\n readonly root: Primitive.InferProxy<TSchema>;\n \n /** Returns the current document state */\n get(): Primitive.InferState<TSchema> | undefined;\n \n /**\n * Returns a readonly snapshot of the entire document state for rendering.\n * The snapshot is a type-safe, readonly structure where:\n * - Required fields and fields with defaults are guaranteed to be defined\n * - Optional fields may be undefined\n */\n toSnapshot(): Primitive.InferSnapshot<TSchema>;\n \n /**\n * Runs a function within a transaction.\n * All operations are collected and applied atomically.\n * If the function throws, all changes are rolled back.\n * @returns The return value of the function\n */\n transaction<R>(fn: (root: Primitive.InferProxy<TSchema>) => R): R;\n \n /**\n * Applies external operations (e.g., from server/peers) to the document.\n * These operations are NOT added to pending operations.\n */\n apply(ops: ReadonlyArray<Operation.Operation<any, any, any>>): void;\n \n /**\n * Returns pending local operations as a Transaction and clears the buffer.\n */\n flush(): Transaction.Transaction;\n}\n\n// =============================================================================\n// Document Options\n// =============================================================================\n\nexport interface DocumentOptions<TSchema extends Primitive.AnyPrimitive> {\n /** Initial value for the document (using set input format) */\n readonly initial?: Primitive.InferSetInput<TSchema>;\n /**\n * Raw initial state for the document (already in internal state format).\n * Use this when loading state from the server or storage.\n * Takes precedence over `initial` if both are provided.\n */\n readonly initialState?: Primitive.InferState<TSchema>;\n}\n\n// =============================================================================\n// Document Implementation\n// =============================================================================\n\n/**\n * Creates a new Document for the given schema.\n */\nexport const make = <TSchema extends Primitive.AnyPrimitive>(\n schema: TSchema,\n options?: DocumentOptions<TSchema>\n): Document<TSchema> => {\n // Internal state - determine initial state based on options\n // Priority: initialState (raw) > initial (needs conversion) > schema defaults\n let _state: Primitive.InferState<TSchema> | undefined =\n options?.initialState !== undefined\n ? options.initialState\n : options?.initial !== undefined\n ? (schema._internal.convertSetInputToState\n ? schema._internal.convertSetInputToState(options.initial)\n : options.initial as Primitive.InferState<TSchema>)\n : schema._internal.getInitialState();\n \n // Pending operations buffer (local changes not yet flushed)\n let _pending: Operation.Operation<any, any, any>[] = [];\n \n // Transaction state\n let _inTransaction = false;\n let _txOps: Operation.Operation<any, any, any>[] = [];\n let _txBaseState: Primitive.InferState<TSchema> | undefined = undefined;\n\n /**\n * Gets state at the given path.\n */\n const getStateAtPath = (path: OperationPath.OperationPath): unknown => {\n const tokens = path.toTokens().filter(t => t !== \"\");\n \n if (tokens.length === 0) {\n return _state;\n }\n \n let current: unknown = _state;\n for (const token of tokens) {\n if (current === null || current === undefined) {\n return undefined;\n }\n \n if (typeof current === \"object\") {\n // Handle array entries (which have { id, pos, value } structure)\n if (Array.isArray(current)) {\n // Try to find by ID in array entries\n const entry = current.find((e: any) => e.id === token);\n if (entry) {\n current = entry.value;\n continue;\n }\n }\n \n // Handle regular object property access\n current = (current as Record<string, unknown>)[token];\n } else {\n return undefined;\n }\n }\n \n return current;\n };\n\n /**\n * Applies a single operation to the current state.\n */\n const applyOperation = (op: Operation.Operation<any, any, any>): void => {\n try {\n _state = schema._internal.applyOperation(_state, op);\n } catch (error) {\n if (error instanceof Error) {\n throw new OperationError(error.message);\n }\n throw new OperationError(String(error));\n }\n };\n\n /**\n * Handles an operation from a proxy.\n * In transaction mode: collects operations, applies to state immediately for subsequent reads.\n * Outside transaction mode: auto-wraps in a single-operation transaction.\n */\n const handleOperation = (op: Operation.Operation<any, any, any>): void => {\n if (_inTransaction) {\n // In transaction: collect op and apply immediately for subsequent reads\n _txOps.push(op);\n applyOperation(op);\n } else {\n // Not in transaction: auto-wrap in single-operation transaction\n const baseState = _state;\n try {\n applyOperation(op);\n _pending.push(op);\n } catch (error) {\n // Rollback on error\n _state = baseState;\n throw error;\n }\n }\n };\n\n /**\n * Creates a ProxyEnvironment for the document.\n */\n const createEnv = (): ProxyEnvironment.ProxyEnvironment => {\n return ProxyEnvironment.make({\n onOperation: handleOperation,\n getState: getStateAtPath,\n });\n };\n\n // Create the root proxy\n const env = createEnv();\n const rootProxy = schema._internal.createProxy(env, OperationPath.make(\"\")) as Primitive.InferProxy<TSchema>;\n\n // Document implementation\n const document: Document<TSchema> = {\n schema,\n root: rootProxy,\n \n get: (): Primitive.InferState<TSchema> | undefined => {\n return _state;\n },\n \n toSnapshot: (): Primitive.InferSnapshot<TSchema> => {\n return (rootProxy as { toSnapshot(): Primitive.InferSnapshot<TSchema> }).toSnapshot();\n },\n \n transaction: <R,>(fn: (root: Primitive.InferProxy<TSchema>) => R): R => {\n if (_inTransaction) {\n throw new NestedTransactionError();\n }\n \n // Start transaction\n _inTransaction = true;\n _txOps = [];\n _txBaseState = _state;\n \n try {\n // Execute the transaction function\n const result = fn(rootProxy);\n \n // Commit: add transaction ops to pending\n _pending.push(..._txOps);\n \n return result;\n } catch (error) {\n // Rollback: restore base state\n _state = _txBaseState;\n throw error;\n } finally {\n // Clean up transaction state\n _inTransaction = false;\n _txOps = [];\n _txBaseState = undefined;\n }\n },\n \n apply: (ops: ReadonlyArray<Operation.Operation<any, any, any>>): void => {\n for (const op of ops) {\n applyOperation(op);\n }\n },\n \n flush: (): Transaction.Transaction => {\n const tx = Transaction.make(_pending);\n _pending = [];\n return tx;\n },\n };\n\n return document;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAaA,IAAa,yBAAb,cAA4C,MAAM;CAEhD,cAAc;AACZ,QAAM,wCAAwC;wBAFvC,QAAO;AAGd,OAAK,OAAO;;;;;;AAOhB,IAAa,iBAAb,cAAoC,MAAM;CAExC,YAAY,SAAiB;AAC3B,QAAM,QAAQ;wBAFP,QAAO;AAGd,OAAK,OAAO;;;;;;AAuEhB,MAAa,QACX,QACA,YACsB;CAGtB,IAAIA,4DACF,QAAS,kBAAiB,SACtB,QAAQ,kEACR,QAAS,aAAY,SAClB,OAAO,UAAU,yBACd,OAAO,UAAU,uBAAuB,QAAQ,QAAQ,GACxD,QAAQ,UACZ,OAAO,UAAU,iBAAiB;CAG1C,IAAIC,WAAiD,EAAE;CAGvD,IAAI,iBAAiB;CACrB,IAAIC,SAA+C,EAAE;CACrD,IAAIC,eAA0D;;;;CAK9D,MAAM,kBAAkB,SAA+C;EACrE,MAAM,SAAS,KAAK,UAAU,CAAC,QAAO,MAAK,MAAM,GAAG;AAEpD,MAAI,OAAO,WAAW,EACpB,QAAO;EAGT,IAAIC,UAAmB;AACvB,OAAK,MAAM,SAAS,QAAQ;AAC1B,OAAI,YAAY,QAAQ,YAAY,OAClC;AAGF,OAAI,OAAO,YAAY,UAAU;AAE/B,QAAI,MAAM,QAAQ,QAAQ,EAAE;KAE1B,MAAM,QAAQ,QAAQ,MAAM,MAAW,EAAE,OAAO,MAAM;AACtD,SAAI,OAAO;AACT,gBAAU,MAAM;AAChB;;;AAKJ,cAAW,QAAoC;SAE/C;;AAIJ,SAAO;;;;;CAMT,MAAM,kBAAkB,OAAiD;AACvE,MAAI;AACF,YAAS,OAAO,UAAU,eAAe,QAAQ,GAAG;WAC7C,OAAO;AACd,OAAI,iBAAiB,MACnB,OAAM,IAAI,eAAe,MAAM,QAAQ;AAEzC,SAAM,IAAI,eAAe,OAAO,MAAM,CAAC;;;;;;;;CAS3C,MAAM,mBAAmB,OAAiD;AACxE,MAAI,gBAAgB;AAElB,UAAO,KAAK,GAAG;AACf,kBAAe,GAAG;SACb;GAEL,MAAM,YAAY;AAClB,OAAI;AACF,mBAAe,GAAG;AAClB,aAAS,KAAK,GAAG;YACV,OAAO;AAEd,aAAS;AACT,UAAM;;;;;;;CAQZ,MAAM,kBAAqD;AACzD,SAAOC,OAAsB;GAC3B,aAAa;GACb,UAAU;GACX,CAAC;;CAIJ,MAAM,MAAM,WAAW;CACvB,MAAM,YAAY,OAAO,UAAU,YAAY,KAAKC,OAAmB,GAAG,CAAC;AA0D3E,QAvDoC;EAClC;EACA,MAAM;EAEN,WAAsD;AACpD,UAAO;;EAGT,kBAAoD;AAClD,UAAQ,UAAiE,YAAY;;EAGvF,cAAkB,OAAsD;AACtE,OAAI,eACF,OAAM,IAAI,wBAAwB;AAIpC,oBAAiB;AACjB,YAAS,EAAE;AACX,kBAAe;AAEf,OAAI;IAEF,MAAM,SAAS,GAAG,UAAU;AAG5B,aAAS,KAAK,GAAG,OAAO;AAExB,WAAO;YACA,OAAO;AAEd,aAAS;AACT,UAAM;aACE;AAER,qBAAiB;AACjB,aAAS,EAAE;AACX,mBAAe;;;EAInB,QAAQ,QAAiE;AACvE,QAAK,MAAM,MAAM,IACf,gBAAe,GAAG;;EAItB,aAAsC;GACpC,MAAM,KAAKC,OAAiB,SAAS;AACrC,cAAW,EAAE;AACb,UAAO;;EAEV"}
1
+ {"version":3,"file":"Document.mjs","names":["_state: Primitive.InferState<TSchema> | undefined","ops: Operation.Operation<any, any, any>[]","OperationPath.encode","_txBaseState: Primitive.InferState<TSchema> | undefined","current: unknown","ProxyEnvironment.make","OperationPath.make","Transaction.make"],"sources":["../src/Document.ts"],"sourcesContent":["import * as Operation from \"./Operation\";\nimport * as OperationPath from \"./OperationPath\";\nimport * as ProxyEnvironment from \"./ProxyEnvironment\";\nimport * as Transaction from \"./Transaction\";\nimport type * as Primitive from \"./Primitive\";\n\n// =============================================================================\n// Document Errors\n// =============================================================================\n\n/**\n * Error thrown when attempting to start a nested transaction.\n */\nexport class NestedTransactionError extends Error {\n readonly _tag = \"NestedTransactionError\";\n constructor() {\n super(\"Nested transactions are not supported\");\n this.name = \"NestedTransactionError\";\n }\n}\n\n/**\n * Error thrown when an operation fails to apply.\n */\nexport class OperationError extends Error {\n readonly _tag = \"OperationError\";\n constructor(message: string) {\n super(message);\n this.name = \"OperationError\";\n }\n}\n\n// =============================================================================\n// Document Interface\n// =============================================================================\n\n/**\n * A Document manages state for a primitive-based schema with transaction support.\n */\nexport interface Document<TSchema extends Primitive.AnyPrimitive> {\n /** The schema defining this document's structure */\n readonly schema: TSchema;\n \n /** Root proxy for accessing and modifying document data */\n readonly root: Primitive.InferProxy<TSchema>;\n \n /** Returns the current document state */\n get(): Primitive.InferState<TSchema> | undefined;\n \n /**\n * Returns a readonly snapshot of the entire document state for rendering.\n * The snapshot is a type-safe, readonly structure where:\n * - Required fields and fields with defaults are guaranteed to be defined\n * - Optional fields may be undefined\n */\n toSnapshot(): Primitive.InferSnapshot<TSchema>;\n \n /**\n * Runs a function within a transaction.\n * All operations are collected and applied atomically.\n * If the function throws, all changes are rolled back.\n * @returns The return value of the function\n */\n transaction<R>(fn: (root: Primitive.InferProxy<TSchema>) => R): R;\n \n /**\n * Applies external operations (e.g., from server/peers) to the document.\n * These operations are NOT added to pending operations.\n */\n apply(ops: ReadonlyArray<Operation.Operation<any, any, any>>): void;\n \n /**\n * Returns pending local operations as a Transaction and clears the buffer.\n */\n flush(): Transaction.Transaction;\n}\n\n// =============================================================================\n// Document Options\n// =============================================================================\n\nexport interface DocumentOptions<TSchema extends Primitive.AnyPrimitive> {\n /** Initial value for the document (using set input format) */\n readonly initial?: Primitive.InferSetInput<TSchema>;\n /**\n * Raw initial state for the document (already in internal state format).\n * Use this when loading state from the server or storage.\n * Takes precedence over `initial` if both are provided.\n */\n readonly initialState?: Primitive.InferState<TSchema>;\n}\n\n// =============================================================================\n// Document Implementation\n// =============================================================================\n\n/**\n * Creates a new Document for the given schema.\n */\nexport const make = <TSchema extends Primitive.AnyPrimitive>(\n schema: TSchema,\n options?: DocumentOptions<TSchema>\n): Document<TSchema> => {\n // Internal state - determine initial state based on options\n // Priority: initialState (raw) > initial (needs conversion) > schema defaults\n let _state: Primitive.InferState<TSchema> | undefined =\n options?.initialState !== undefined\n ? options.initialState\n : options?.initial !== undefined\n ? (schema._internal.convertSetInputToState\n ? schema._internal.convertSetInputToState(options.initial)\n : options.initial as Primitive.InferState<TSchema>)\n : schema._internal.getInitialState();\n \n /**\n * An ops buffer that maintains a dedup index for O(1) lookups by path:kind.\n */\n const makeOpsBuffer = () => {\n let ops: Operation.Operation<any, any, any>[] = [];\n // Maps \"encodedPath:kind\" → array index for deduplicable ops\n let index = new Map<string, number>();\n\n const dedupKey = (op: Operation.Operation<any, any, any>): string =>\n `${OperationPath.encode(op.path)}:${String(op.kind)}`;\n\n return {\n push(op: Operation.Operation<any, any, any>): void {\n if (op.deduplicable) {\n const key = dedupKey(op);\n const existing = index.get(key);\n if (existing !== undefined) {\n // Remove old entry; shift indices above it down by 1\n ops.splice(existing, 1);\n // Rebuild affected index entries\n const newIndex = new Map<string, number>();\n for (const [k, v] of index) {\n if (k === key) continue;\n newIndex.set(k, v > existing ? v - 1 : v);\n }\n index = newIndex;\n }\n index.set(key, ops.length);\n }\n ops.push(op);\n },\n /** Drains all ops and resets the buffer. */\n drain(): Operation.Operation<any, any, any>[] {\n const result = ops;\n ops = [];\n index = new Map();\n return result;\n },\n /** Appends all ops from another buffer (used on tx commit). */\n mergeFrom(other: ReturnType<typeof makeOpsBuffer>): void {\n for (const op of other.toArray()) {\n this.push(op);\n }\n },\n toArray(): readonly Operation.Operation<any, any, any>[] {\n return ops;\n },\n reset(): void {\n ops = [];\n index = new Map();\n },\n };\n };\n\n // Pending operations buffer (local changes not yet flushed)\n const _pending = makeOpsBuffer();\n\n // Transaction state\n let _inTransaction = false;\n let _txOps = makeOpsBuffer();\n let _txBaseState: Primitive.InferState<TSchema> | undefined = undefined;\n\n /**\n * Gets state at the given path.\n */\n const getStateAtPath = (path: OperationPath.OperationPath): unknown => {\n const tokens = path.toTokens().filter(t => t !== \"\");\n \n if (tokens.length === 0) {\n return _state;\n }\n \n let current: unknown = _state;\n for (const token of tokens) {\n if (current === null || current === undefined) {\n return undefined;\n }\n \n if (typeof current === \"object\") {\n // Handle array entries (which have { id, pos, value } structure)\n if (Array.isArray(current)) {\n // Try to find by ID in array entries\n const entry = current.find((e: any) => e.id === token);\n if (entry) {\n current = entry.value;\n continue;\n }\n }\n \n // Handle regular object property access\n current = (current as Record<string, unknown>)[token];\n } else {\n return undefined;\n }\n }\n \n return current;\n };\n\n /**\n * Applies a single operation to the current state.\n */\n const applyOperation = (op: Operation.Operation<any, any, any>): void => {\n try {\n _state = schema._internal.applyOperation(_state, op);\n } catch (error) {\n if (error instanceof Error) {\n throw new OperationError(error.message);\n }\n throw new OperationError(String(error));\n }\n };\n\n /**\n * Handles an operation from a proxy.\n * In transaction mode: collects operations, applies to state immediately for subsequent reads.\n * Outside transaction mode: auto-wraps in a single-operation transaction.\n */\n const handleOperation = (op: Operation.Operation<any, any, any>): void => {\n if (_inTransaction) {\n // In transaction: collect op and apply immediately for subsequent reads\n _txOps.push(op);\n applyOperation(op);\n } else {\n // Not in transaction: auto-wrap in single-operation transaction\n const baseState = _state;\n try {\n applyOperation(op);\n _pending.push(op);\n } catch (error) {\n // Rollback on error\n _state = baseState;\n throw error;\n }\n }\n };\n\n /**\n * Creates a ProxyEnvironment for the document.\n */\n const createEnv = (): ProxyEnvironment.ProxyEnvironment => {\n return ProxyEnvironment.make({\n onOperation: handleOperation,\n getState: getStateAtPath,\n });\n };\n\n // Create the root proxy\n const env = createEnv();\n const rootProxy = schema._internal.createProxy(env, OperationPath.make(\"\")) as Primitive.InferProxy<TSchema>;\n\n // Document implementation\n const document: Document<TSchema> = {\n schema,\n root: rootProxy,\n \n get: (): Primitive.InferState<TSchema> | undefined => {\n return _state;\n },\n \n toSnapshot: (): Primitive.InferSnapshot<TSchema> => {\n return (rootProxy as { toSnapshot(): Primitive.InferSnapshot<TSchema> }).toSnapshot();\n },\n \n transaction: <R,>(fn: (root: Primitive.InferProxy<TSchema>) => R): R => {\n if (_inTransaction) {\n throw new NestedTransactionError();\n }\n \n // Start transaction\n _inTransaction = true;\n _txOps.reset();\n _txBaseState = _state;\n \n try {\n // Execute the transaction function\n const result = fn(rootProxy);\n \n // Commit: add transaction ops to pending\n _pending.mergeFrom(_txOps);\n \n return result;\n } catch (error) {\n // Rollback: restore base state\n _state = _txBaseState;\n throw error;\n } finally {\n // Clean up transaction state\n _inTransaction = false;\n _txOps.reset();\n _txBaseState = undefined;\n }\n },\n \n apply: (ops: ReadonlyArray<Operation.Operation<any, any, any>>): void => {\n for (const op of ops) {\n applyOperation(op);\n }\n },\n \n flush: (): Transaction.Transaction => {\n const tx = Transaction.make(_pending.drain());\n return tx;\n },\n };\n\n return document;\n};\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
+ const require_objectSpread2 = require('./_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs');
2
3
  const require_OperationPath = require('./OperationPath.cjs');
3
4
 
4
5
  //#region src/Operation.ts
@@ -8,11 +9,11 @@ var Operation_exports = /* @__PURE__ */ require_rolldown_runtime.__export({
8
9
  fromDefinition: () => fromDefinition
9
10
  });
10
11
  const fromDefinition = (operationPath, definition, payload) => {
11
- return {
12
+ return require_objectSpread2._objectSpread2({
12
13
  kind: definition.kind,
13
14
  path: operationPath,
14
15
  payload
15
- };
16
+ }, definition.deduplicable !== void 0 ? { deduplicable: definition.deduplicable } : {});
16
17
  };
17
18
  /**
18
19
  * Encodes an Operation to a JSON-serializable format for network transport.
@@ -10,6 +10,7 @@ type Operation<TKind, TPayload extends Schema.Schema.Any, TDef extends Operation
10
10
  readonly kind: TKind;
11
11
  readonly path: OperationPath;
12
12
  readonly payload: Schema.Schema.Type<TPayload>;
13
+ readonly deduplicable?: boolean;
13
14
  } & TDef;
14
15
  declare const fromDefinition: <TKind, TPayload extends Schema.Schema.Any, TDef extends OperationDefinition<TKind, TPayload, any>>(operationPath: OperationPath, definition: TDef, payload: Schema.Schema.Type<TPayload>) => Operation<TKind, TPayload, TDef>;
15
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Operation.d.cts","names":[],"sources":["../src/Operation.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAMY,kCAAkC,MAAA,CAAO,MAAA,CAAO,kBAAkB,oBAAwC,OAAO;iBAC1G;iBACA;oBACG,MAAA,CAAO,MAAA,CAAO,KAAK;IAErC;cAES,yCAA0C,MAAA,CAAO,MAAA,CAAO,kBAAkB,oBAAwC,OAAO,+BAA+B,2BAAyC,eAAe,MAAA,CAAO,MAAA,CAAO,KAAK,cAAY,UAAU,OAAO,UAAU;;;;UAWtQ,gBAAA;EAlBL,SAAA,IAAS,EAAA,OAAA;EAAyB,SAAO,IAAO,EAoBzC,oBApByC;EAA0D,SAAA,OAAA,EAAA,OAAA;;;;;;;AAKlH,cAwBS,MAxBT,EAAA,CAAA,KAAA,EAAA,iBAwB2C,MAAA,CAAO,MAAA,CAAO,GAxBzD,EAAA,aAwB2E,mBAxB3E,CAwBmH,KAxBnH,EAwB0H,QAxB1H,EAAA,GAAA,CAAA,CAAA,CAAA,SAAA,EAyBW,SAzBX,CAyBqB,KAzBrB,EAyB4B,QAzB5B,EAyBsC,IAzBtC,CAAA,EAAA,GA0BD,gBA1BC;;AAEJ;;;;;;AAA8M,cAuCjM,MAvCiM,EAAA,CAAA,OAAA,EAuC9K,gBAvC8K,EAAA,GAuC3J,SAvC2J,CAAA,OAAA,EAuCxI,MAAA,CAAO,MAAA,CAAO,GAvC0H,EAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"Operation.d.cts","names":[],"sources":["../src/Operation.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAMY,kCAAkC,MAAA,CAAO,MAAA,CAAO,kBAAkB,oBAAwC,OAAO;iBAC1G;iBACA;oBACG,MAAA,CAAO,MAAA,CAAO,KAAK;;IAGrC;cAES,yCAA0C,MAAA,CAAO,MAAA,CAAO,kBAAkB,oBAAwC,OAAO,+BAA+B,2BAAyC,eAAe,MAAA,CAAO,MAAA,CAAO,KAAK,cAAY,UAAU,OAAO,UAAU;;;;AAR3Q,UAoBK,gBAAA,CApBI;EAAyB,SAAO,IAAO,EAAA,OAAA;EAA0D,SAAA,IAAA,EAsBnG,oBAtBmG;EAAO,SAAA,OAAA,EAAA,OAAA;;;;;;;AAMrH,cAyBK,MAzBL,EAAA,CAAA,KAAA,EAAA,iBAyBuC,MAAA,CAAO,MAAA,CAAO,GAzBrD,EAAA,aAyBuE,mBAzBvE,CAyB+G,KAzB/G,EAyBsH,QAzBtH,EAAA,GAAA,CAAA,CAAA,CAAA,SAAA,EA0BO,SA1BP,CA0BiB,KA1BjB,EA0BwB,QA1BxB,EA0BkC,IA1BlC,CAAA,EAAA,GA2BL,gBA3BK;AAER;;;;;;;AAAgP,cAwCnO,MAxCmO,EAAA,CAAA,OAAA,EAwChN,gBAxCgN,EAAA,GAwC7L,SAxC6L,CAAA,OAAA,EAwC1K,MAAA,CAAO,MAAA,CAAO,GAxC4J,EAAA,GAAA,CAAA"}