lib0 0.2.112 → 0.2.115-0

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 (331) hide show
  1. package/README.md +1 -1
  2. package/broadcastchannel.js +1 -1
  3. package/buffer.d.ts +3 -3
  4. package/buffer.d.ts.map +1 -1
  5. package/buffer.js +1 -1
  6. package/coverage/tmp/coverage-27667-1761218530660-0.json +1 -0
  7. package/coverage/tmp/{coverage-20055-1752683207886-0.json → coverage-27668-1761218485882-0.json} +1 -1
  8. package/crypto/aes-gcm.d.ts +4 -4
  9. package/crypto/aes-gcm.d.ts.map +1 -1
  10. package/crypto/aes-gcm.js +6 -6
  11. package/crypto/common.d.ts +1 -1
  12. package/crypto/common.d.ts.map +1 -1
  13. package/crypto/common.js +1 -1
  14. package/crypto/ecdsa.d.ts +2 -2
  15. package/crypto/ecdsa.d.ts.map +1 -1
  16. package/crypto/ecdsa.js +4 -4
  17. package/crypto/rsa-oaep.d.ts +2 -2
  18. package/crypto/rsa-oaep.d.ts.map +1 -1
  19. package/crypto/rsa-oaep.js +3 -3
  20. package/decoding.d.ts +27 -14
  21. package/decoding.d.ts.map +1 -1
  22. package/decoding.js +12 -8
  23. package/delta/abstract-array.d.ts +166 -0
  24. package/delta/abstract-array.d.ts.map +1 -0
  25. package/delta/abstract-array.js +421 -0
  26. package/delta/abstract.d.ts +69 -0
  27. package/delta/abstract.d.ts.map +1 -0
  28. package/delta/abstract.js +102 -0
  29. package/delta/array.d.ts +23 -0
  30. package/delta/array.d.ts.map +1 -0
  31. package/delta/array.js +45 -0
  32. package/delta/array.test.d.ts +2 -0
  33. package/delta/array.test.d.ts.map +1 -0
  34. package/delta/binding.d.ts +105 -0
  35. package/delta/binding.d.ts.map +1 -0
  36. package/delta/binding.js +369 -0
  37. package/delta/binding.test.d.ts +5 -0
  38. package/delta/binding.test.d.ts.map +1 -0
  39. package/delta/d2.d.ts +705 -0
  40. package/delta/d2.d.ts.map +1 -0
  41. package/delta/d2.js +1309 -0
  42. package/delta/d2.test.d.ts +15 -0
  43. package/delta/d2.test.d.ts.map +1 -0
  44. package/delta/index.d.ts +14 -0
  45. package/delta/index.d.ts.map +1 -0
  46. package/delta/index.js +79 -0
  47. package/delta/map.d.ts +230 -0
  48. package/delta/map.d.ts.map +1 -0
  49. package/delta/map.js +304 -0
  50. package/delta/node.d.ts +119 -0
  51. package/delta/node.d.ts.map +1 -0
  52. package/delta/node.js +183 -0
  53. package/delta/node.test.d.ts +4 -0
  54. package/delta/node.test.d.ts.map +1 -0
  55. package/delta/ops.d.ts +466 -0
  56. package/delta/ops.d.ts.map +1 -0
  57. package/delta/ops.js +544 -0
  58. package/delta/readme.md +129 -0
  59. package/delta/text.d.ts +43 -0
  60. package/delta/text.d.ts.map +1 -0
  61. package/delta/text.js +54 -0
  62. package/delta/text.test.d.ts +6 -0
  63. package/delta/text.test.d.ts.map +1 -0
  64. package/delta/transformer.d.ts +164 -0
  65. package/delta/transformer.d.ts.map +1 -0
  66. package/delta/transformer.js +888 -0
  67. package/delta/transformer.test.d.ts +13 -0
  68. package/delta/transformer.test.d.ts.map +1 -0
  69. package/delta/value.d.ts +84 -0
  70. package/delta/value.d.ts.map +1 -0
  71. package/delta/value.js +168 -0
  72. package/dist/abstract-array.cjs +433 -0
  73. package/dist/abstract-array.cjs.map +1 -0
  74. package/dist/abstract.cjs +122 -0
  75. package/dist/abstract.cjs.map +1 -0
  76. package/dist/aes-gcm.cjs +12 -12
  77. package/dist/aes-gcm.cjs.map +1 -1
  78. package/dist/array.cjs +60 -17
  79. package/dist/array.cjs.map +1 -1
  80. package/dist/array2.cjs +26 -0
  81. package/dist/array2.cjs.map +1 -0
  82. package/dist/binding.cjs +398 -0
  83. package/dist/binding.cjs.map +1 -0
  84. package/dist/{broadcastchannel-2c4b0a1c.cjs → broadcastchannel-b4eaea6e.cjs} +4 -4
  85. package/dist/broadcastchannel-b4eaea6e.cjs.map +1 -0
  86. package/dist/broadcastchannel.cjs +12 -12
  87. package/dist/{buffer-a74f7330.cjs → buffer-adc4e6ea.cjs} +7 -7
  88. package/dist/buffer-adc4e6ea.cjs.map +1 -0
  89. package/dist/buffer.cjs +11 -11
  90. package/dist/buffer.d.ts +3 -3
  91. package/dist/buffer.d.ts.map +1 -1
  92. package/dist/cache.cjs +6 -6
  93. package/dist/common.cjs +1 -1
  94. package/dist/common.cjs.map +1 -1
  95. package/dist/component.cjs +14 -9
  96. package/dist/component.cjs.map +1 -1
  97. package/dist/crypto/aes-gcm.d.ts +4 -4
  98. package/dist/crypto/aes-gcm.d.ts.map +1 -1
  99. package/dist/crypto/common.d.ts +1 -1
  100. package/dist/crypto/common.d.ts.map +1 -1
  101. package/dist/crypto/ecdsa.d.ts +2 -2
  102. package/dist/crypto/ecdsa.d.ts.map +1 -1
  103. package/dist/crypto/rsa-oaep.d.ts +2 -2
  104. package/dist/crypto/rsa-oaep.d.ts.map +1 -1
  105. package/dist/d2.cjs +1347 -0
  106. package/dist/d2.cjs.map +1 -0
  107. package/dist/{decoding-2b136346.cjs → decoding-50b9ce38.cjs} +18 -14
  108. package/dist/decoding-50b9ce38.cjs.map +1 -0
  109. package/dist/decoding.cjs +6 -6
  110. package/dist/decoding.d.ts +27 -14
  111. package/dist/decoding.d.ts.map +1 -1
  112. package/dist/delta/abstract-array.d.ts +166 -0
  113. package/dist/delta/abstract-array.d.ts.map +1 -0
  114. package/dist/delta/abstract.d.ts +69 -0
  115. package/dist/delta/abstract.d.ts.map +1 -0
  116. package/dist/delta/array.d.ts +23 -0
  117. package/dist/delta/array.d.ts.map +1 -0
  118. package/dist/delta/array.test.d.ts +2 -0
  119. package/dist/delta/array.test.d.ts.map +1 -0
  120. package/dist/delta/binding.d.ts +105 -0
  121. package/dist/delta/binding.d.ts.map +1 -0
  122. package/dist/delta/binding.test.d.ts +5 -0
  123. package/dist/delta/binding.test.d.ts.map +1 -0
  124. package/dist/delta/d2.d.ts +705 -0
  125. package/dist/delta/d2.d.ts.map +1 -0
  126. package/dist/delta/d2.test.d.ts +15 -0
  127. package/dist/delta/d2.test.d.ts.map +1 -0
  128. package/dist/delta/index.d.ts +14 -0
  129. package/dist/delta/index.d.ts.map +1 -0
  130. package/dist/delta/map.d.ts +230 -0
  131. package/dist/delta/map.d.ts.map +1 -0
  132. package/dist/delta/node.d.ts +119 -0
  133. package/dist/delta/node.d.ts.map +1 -0
  134. package/dist/delta/node.test.d.ts +4 -0
  135. package/dist/delta/node.test.d.ts.map +1 -0
  136. package/dist/delta/ops.d.ts +466 -0
  137. package/dist/delta/ops.d.ts.map +1 -0
  138. package/dist/delta/text.d.ts +43 -0
  139. package/dist/delta/text.d.ts.map +1 -0
  140. package/dist/delta/text.test.d.ts +6 -0
  141. package/dist/delta/text.test.d.ts.map +1 -0
  142. package/dist/delta/transformer.d.ts +164 -0
  143. package/dist/delta/transformer.d.ts.map +1 -0
  144. package/dist/delta/transformer.test.d.ts +13 -0
  145. package/dist/delta/transformer.test.d.ts.map +1 -0
  146. package/dist/delta/value.d.ts +84 -0
  147. package/dist/delta/value.d.ts.map +1 -0
  148. package/dist/{diff-77c4cf8e.cjs → diff-f0776c15.cjs} +2 -2
  149. package/dist/{diff-77c4cf8e.cjs.map → diff-f0776c15.cjs.map} +1 -1
  150. package/dist/diff.cjs +3 -3
  151. package/dist/{dom-16daf1a0.cjs → dom-2b123630.cjs} +31 -2
  152. package/dist/dom-2b123630.cjs.map +1 -0
  153. package/dist/dom.cjs +17 -2
  154. package/dist/dom.cjs.map +1 -1
  155. package/dist/dom.d.ts +17 -0
  156. package/dist/dom.d.ts.map +1 -1
  157. package/dist/ecdsa.cjs +4 -4
  158. package/dist/ecdsa.cjs.map +1 -1
  159. package/dist/{encoding-1acb59c4.cjs → encoding-7f85922c.cjs} +5 -5
  160. package/dist/encoding-7f85922c.cjs.map +1 -0
  161. package/dist/encoding.cjs +4 -4
  162. package/dist/encoding.d.ts +6 -6
  163. package/dist/encoding.d.ts.map +1 -1
  164. package/dist/{environment-2de08e0e.cjs → environment-90227ead.cjs} +4 -4
  165. package/dist/{environment-2de08e0e.cjs.map → environment-90227ead.cjs.map} +1 -1
  166. package/dist/environment.cjs +5 -5
  167. package/dist/{error-8582d695.cjs → error-0c1f634f.cjs} +10 -2
  168. package/dist/error-0c1f634f.cjs.map +1 -0
  169. package/dist/error.cjs +2 -1
  170. package/dist/error.cjs.map +1 -1
  171. package/dist/error.d.ts +1 -0
  172. package/dist/error.d.ts.map +1 -1
  173. package/dist/{eventloop-b299a889.cjs → eventloop-a0168106.cjs} +2 -2
  174. package/dist/{eventloop-b299a889.cjs.map → eventloop-a0168106.cjs.map} +1 -1
  175. package/dist/eventloop.cjs +3 -3
  176. package/dist/{function-09b8292c.cjs → function-e7d18feb.cjs} +2 -2
  177. package/dist/{function-09b8292c.cjs.map → function-e7d18feb.cjs.map} +1 -1
  178. package/dist/function.cjs +2 -2
  179. package/dist/index.cjs +23 -22
  180. package/dist/index.cjs.map +1 -1
  181. package/dist/index2.cjs +71 -0
  182. package/dist/index2.cjs.map +1 -0
  183. package/dist/{indexeddb-0cbb4d6f.cjs → indexeddb-46d1e737.cjs} +3 -3
  184. package/dist/{indexeddb-0cbb4d6f.cjs.map → indexeddb-46d1e737.cjs.map} +1 -1
  185. package/dist/indexeddb.cjs +5 -5
  186. package/dist/indexeddbV2.cjs +2 -1
  187. package/dist/indexeddbV2.cjs.map +1 -1
  188. package/dist/jwt.cjs +12 -12
  189. package/dist/list.cjs +39 -12
  190. package/dist/list.cjs.map +1 -1
  191. package/dist/list.d.ts +13 -3
  192. package/dist/list.d.ts.map +1 -1
  193. package/dist/logging.cjs +11 -9
  194. package/dist/logging.cjs.map +1 -1
  195. package/dist/logging.common.cjs +7 -7
  196. package/dist/logging.node.cjs +7 -7
  197. package/dist/{map-0dabcc55.cjs → map-24d263c0.cjs} +7 -1
  198. package/dist/map-24d263c0.cjs.map +1 -0
  199. package/dist/map.cjs +314 -7
  200. package/dist/map.cjs.map +1 -1
  201. package/dist/map.d.ts +1 -0
  202. package/dist/map.d.ts.map +1 -1
  203. package/dist/map2.cjs +15 -0
  204. package/dist/map2.cjs.map +1 -0
  205. package/dist/{math-08e068f9.cjs → math-96d5e8c4.cjs} +4 -2
  206. package/dist/math-96d5e8c4.cjs.map +1 -0
  207. package/dist/math.cjs +1 -1
  208. package/dist/math.d.ts.map +1 -1
  209. package/dist/metric.cjs +1 -1
  210. package/dist/node.cjs +206 -0
  211. package/dist/node.cjs.map +1 -0
  212. package/dist/{number-466d8922.cjs → number-1fb57bba.cjs} +2 -2
  213. package/dist/{number-466d8922.cjs.map → number-1fb57bba.cjs.map} +1 -1
  214. package/dist/number.cjs +2 -2
  215. package/dist/{object-491858d1.cjs → object-18980796.cjs} +12 -2
  216. package/dist/object-18980796.cjs.map +1 -0
  217. package/dist/object.cjs +3 -1
  218. package/dist/object.cjs.map +1 -1
  219. package/dist/object.d.ts +3 -0
  220. package/dist/object.d.ts.map +1 -1
  221. package/dist/observable.cjs +1 -1
  222. package/dist/ops.cjs +575 -0
  223. package/dist/ops.cjs.map +1 -0
  224. package/dist/patience.cjs +2 -2
  225. package/dist/performance.node.cjs +4 -4
  226. package/dist/pledge.cjs +2 -1
  227. package/dist/pledge.cjs.map +1 -1
  228. package/dist/{prng-24dfe0bf.cjs → prng-004c76e8.cjs} +5 -5
  229. package/dist/{prng-24dfe0bf.cjs.map → prng-004c76e8.cjs.map} +1 -1
  230. package/dist/prng.cjs +12 -12
  231. package/dist/prng.d.ts +1 -1
  232. package/dist/prng.d.ts.map +1 -1
  233. package/dist/{promise-7d13a97c.cjs → promise-cda7b9bb.cjs} +2 -2
  234. package/dist/{promise-7d13a97c.cjs.map → promise-cda7b9bb.cjs.map} +1 -1
  235. package/dist/promise.cjs +3 -3
  236. package/dist/rabin-gf2-polynomial.cjs +11 -11
  237. package/dist/rabin-uncached.cjs +11 -11
  238. package/dist/rabin.cjs +11 -11
  239. package/dist/random.cjs +1 -1
  240. package/dist/rsa-oaep.cjs +3 -3
  241. package/dist/rsa-oaep.cjs.map +1 -1
  242. package/dist/schema.cjs +572 -167
  243. package/dist/schema.cjs.map +1 -1
  244. package/dist/schema.d.ts +326 -122
  245. package/dist/schema.d.ts.map +1 -1
  246. package/dist/schema.test.d.ts +5 -0
  247. package/dist/schema.test.d.ts.map +1 -1
  248. package/dist/{sort-b8702761.cjs → sort-812cc211.cjs} +2 -2
  249. package/dist/{sort-b8702761.cjs.map → sort-812cc211.cjs.map} +1 -1
  250. package/dist/sort.cjs +2 -2
  251. package/dist/{statistics-c2316dca.cjs → statistics-65f6114b.cjs} +2 -2
  252. package/dist/{statistics-c2316dca.cjs.map → statistics-65f6114b.cjs.map} +1 -1
  253. package/dist/statistics.cjs +2 -2
  254. package/dist/{string-b2827a90.cjs → string-fddc5f8b.cjs} +3 -3
  255. package/dist/string-fddc5f8b.cjs.map +1 -0
  256. package/dist/string.cjs +1 -1
  257. package/dist/string.d.ts +3 -3
  258. package/dist/string.d.ts.map +1 -1
  259. package/dist/testing.cjs +16 -16
  260. package/dist/text.cjs +79 -0
  261. package/dist/text.cjs.map +1 -0
  262. package/dist/{time-bc2081b9.cjs → time-d8438852.cjs} +2 -2
  263. package/dist/{time-bc2081b9.cjs.map → time-d8438852.cjs.map} +1 -1
  264. package/dist/time.cjs +2 -2
  265. package/dist/traits.cjs +22 -0
  266. package/dist/traits.cjs.map +1 -1
  267. package/dist/traits.d.ts +1 -0
  268. package/dist/traits.d.ts.map +1 -1
  269. package/dist/traits.test.d.ts.map +1 -1
  270. package/dist/transformer.cjs +930 -0
  271. package/dist/transformer.cjs.map +1 -0
  272. package/dist/url.cjs +2 -1
  273. package/dist/url.cjs.map +1 -1
  274. package/dist/value.cjs +187 -0
  275. package/dist/value.cjs.map +1 -0
  276. package/dist/webcrypto.d.ts +1 -1
  277. package/dist/webcrypto.d.ts.map +1 -1
  278. package/dist/{websocket-40a601d4.cjs → websocket-b073d0fc.cjs} +3 -3
  279. package/dist/{websocket-40a601d4.cjs.map → websocket-b073d0fc.cjs.map} +1 -1
  280. package/dist/websocket.cjs +4 -4
  281. package/dom.d.ts +17 -0
  282. package/dom.d.ts.map +1 -1
  283. package/dom.js +21 -0
  284. package/encoding.d.ts +6 -6
  285. package/encoding.d.ts.map +1 -1
  286. package/encoding.js +1 -1
  287. package/error.d.ts +1 -0
  288. package/error.d.ts.map +1 -1
  289. package/error.js +6 -0
  290. package/list.d.ts +13 -3
  291. package/list.d.ts.map +1 -1
  292. package/list.js +36 -8
  293. package/map.d.ts +1 -0
  294. package/map.d.ts.map +1 -1
  295. package/map.js +6 -0
  296. package/math.d.ts.map +1 -1
  297. package/math.js +3 -1
  298. package/object.d.ts +3 -0
  299. package/object.d.ts.map +1 -1
  300. package/object.js +9 -1
  301. package/package.json +9 -3
  302. package/prng.d.ts +1 -1
  303. package/prng.d.ts.map +1 -1
  304. package/prng.js +1 -1
  305. package/schema.d.ts +326 -122
  306. package/schema.d.ts.map +1 -1
  307. package/schema.js +513 -141
  308. package/schema.test.d.ts +5 -0
  309. package/schema.test.d.ts.map +1 -1
  310. package/string.d.ts +3 -3
  311. package/string.d.ts.map +1 -1
  312. package/string.js +2 -2
  313. package/test.html +1 -0
  314. package/test.js +13 -1
  315. package/traits.d.ts +1 -0
  316. package/traits.d.ts.map +1 -1
  317. package/traits.js +21 -0
  318. package/traits.test.d.ts.map +1 -1
  319. package/webcrypto.d.ts +1 -1
  320. package/webcrypto.d.ts.map +1 -1
  321. package/coverage/tmp/coverage-20054-1752683240888-0.json +0 -1
  322. package/dist/broadcastchannel-2c4b0a1c.cjs.map +0 -1
  323. package/dist/buffer-a74f7330.cjs.map +0 -1
  324. package/dist/decoding-2b136346.cjs.map +0 -1
  325. package/dist/dom-16daf1a0.cjs.map +0 -1
  326. package/dist/encoding-1acb59c4.cjs.map +0 -1
  327. package/dist/error-8582d695.cjs.map +0 -1
  328. package/dist/map-0dabcc55.cjs.map +0 -1
  329. package/dist/math-08e068f9.cjs.map +0 -1
  330. package/dist/object-491858d1.cjs.map +0 -1
  331. package/dist/string-b2827a90.cjs.map +0 -1
@@ -0,0 +1,13 @@
1
+ export function testBasics(_tc: t.TestCase): void;
2
+ export function testMapBasics(_tc: t.TestCase): void;
3
+ export function testMapQuery(_tc: t.TestCase): void;
4
+ export function testMappingTransformer(): void;
5
+ export function testQuery(): void;
6
+ export function testTransformerCreateUtility(): void;
7
+ export function testStaticContent(): void;
8
+ export function testFixedArray(): void;
9
+ export function testNode(): void;
10
+ export function testNodeTransformer(): void;
11
+ export function testNodeTransformerFromNode(): void;
12
+ import * as t from '../testing.js';
13
+ //# sourceMappingURL=transformer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.test.d.ts","sourceRoot":"","sources":["transformer.test.js"],"names":[],"mappings":"AAwDO,gCAFI,CAAC,CAAC,QAAQ,QAgBpB;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAcpB;AAKM,kCAFI,CAAC,CAAC,QAAQ,QAcpB;AAEM,+CAGN;AAEM,kCAMN;AAEM,qDAYN;AAEM,0CAgCN;AAEM,uCAKN;AAEM,iCAMN;AAEM,4CAYN;AAEM,oDAQN;mBA5MkB,eAAe"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @template {any} Vals
3
+ * @typedef {Vals extends AbstractDelta ? ops.MapInsertOp<Vals,''>|ops.MapDeleteOp<Vals,''>|ops.MapModifyOp<Extract<Vals,AbstractDelta>,''> : ops.MapInsertOp<Vals,''>|ops.MapDeleteOp<Vals,''>} ValueOpsFromValues
4
+ */
5
+ /**
6
+ * @template Vals
7
+ * @extends {AbstractDelta}
8
+ */
9
+ export class DeltaValue<Vals> extends AbstractDelta {
10
+ /**
11
+ * @param {s.Schema<Vals>} $vals
12
+ */
13
+ constructor($vals: s.Schema<Vals>);
14
+ $vals: s.Schema<Vals>;
15
+ /**
16
+ * @type {ValueOpsFromValues<Vals>?}
17
+ */
18
+ change: ValueOpsFromValues<Vals> | null;
19
+ get(): Vals | undefined;
20
+ /**
21
+ * @param {DeltaValue<Vals>} other
22
+ * @return {boolean}
23
+ */
24
+ equals(other: DeltaValue<Vals>): boolean;
25
+ /**
26
+ * @param {DeltaValue<Vals>} other
27
+ */
28
+ [traits.EqualityTraitSymbol](other: DeltaValue<Vals>): boolean;
29
+ }
30
+ /**
31
+ * @template Vals
32
+ * @extends DeltaValue<Vals>
33
+ */
34
+ export class DeltaValueBuilder<Vals> extends DeltaValue<Vals> {
35
+ /**
36
+ * @param {Extract<Vals, AbstractDelta>} delta
37
+ */
38
+ modify(delta: Extract<Vals, AbstractDelta>): this;
39
+ /**
40
+ * @param {Vals} newVal
41
+ * @param {Vals|undefined} prevValue
42
+ * @param {import('./abstract.js').Attribution?} attribution
43
+ */
44
+ set(newVal: Vals, prevValue?: Vals | undefined, attribution?: import("./abstract.js").Attribution | null): this;
45
+ /**
46
+ * @param {Vals|undefined} prevValue
47
+ * @param {import('./abstract.js').Attribution?} attribution
48
+ */
49
+ delete(prevValue?: Vals | undefined, attribution?: import("./abstract.js").Attribution | null): this;
50
+ /**
51
+ *
52
+ * - insert vs delete ⇒ insert takes precedence
53
+ * - insert vs modify ⇒ insert takes precedence
54
+ * - insert vs insert ⇒ priority decides
55
+ * - delete vs modify ⇒ delete takes precedence
56
+ * - delete vs delete ⇒ current delete op is removed because item has already been deleted
57
+ * - modify vs modify ⇒ rebase using priority
58
+ *
59
+ * @param {DeltaValueBuilder<Vals>} other
60
+ * @param {boolean} priority
61
+ */
62
+ rebase(other: DeltaValueBuilder<Vals>, priority: boolean): void;
63
+ /**
64
+ * @param {DeltaValue<Vals>} other
65
+ */
66
+ apply(other: DeltaValue<Vals>): void;
67
+ /**
68
+ * @return {this}
69
+ */
70
+ clone(): this;
71
+ done(): DeltaValue<Vals>;
72
+ }
73
+ export function value<Vals = any>($vals?: s.Schema<Vals>): DeltaValueBuilder<Vals>;
74
+ export function $value<Vals extends unknown>($vals: s.Schema<Vals>): s.Schema<DeltaValue<Vals>>;
75
+ /**
76
+ * @type {s.Schema<DeltaValue<any>>}
77
+ */
78
+ export const $valueAny: s.Schema<DeltaValue<any>>;
79
+ export type ValueOpsFromValues<Vals extends unknown> = Vals extends AbstractDelta ? ops.MapInsertOp<Vals, ""> | ops.MapDeleteOp<Vals, ""> | ops.MapModifyOp<Extract<Vals, AbstractDelta>, ""> : ops.MapInsertOp<Vals, ""> | ops.MapDeleteOp<Vals, "">;
80
+ import { AbstractDelta } from './abstract.js';
81
+ import * as s from '../schema.js';
82
+ import * as traits from '../traits.js';
83
+ import * as ops from './ops.js';
84
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["value.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;;;GAGG;AACH,wBAHa,IAAI;IAIf;;OAEG;IACH,mBAFW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EASxB;IALC,sBAAkB;IAClB;;OAEG;IACH,QAFU,kBAAkB,CAAC,IAAI,CAAC,OAAC,CAEjB;IAGpB,wBAEC;IAED;;;OAGG;IACH,cAHW,UAAU,CAAC,IAAI,CAAC,GACf,OAAO,CAIlB;IAED;;OAEG;IACH,oCAFW,UAAU,CAAC,IAAI,CAAC,WAI1B;CACF;AAED;;;GAGG;AACH,+BAHa,IAAI;IAIf;;OAEG;IACH,cAFW,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,QAKtC;IAED;;;;OAIG;IACH,YAJW,IAAI,cACJ,IAAI,GAAC,SAAS,gBACd,OAAO,eAAe,EAAE,WAAW,OAAC,QAK9C;IAED;;;OAGG;IACH,mBAHW,IAAI,GAAC,SAAS,gBACd,OAAO,eAAe,EAAE,WAAW,OAAC,QAK9C;IAED;;;;;;;;;;;OAWG;IACH,cAHW,iBAAiB,CAAC,IAAI,CAAC,YACvB,OAAO,QAuBjB;IAED;;OAEG;IACH,aAFW,UAAU,CAAC,IAAI,CAAC,QAgB1B;IAED;;OAEG;IACH,SAFY,IAAI,CAQf;IAED,QACoB,UAAU,CAAC,IAAI,CAAC,CACnC;CACF;AAOM,sBAJO,IAAI,gBACP,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GACb,iBAAiB,CAAC,IAAI,CAAC,CAEuD;AAOnF,uBAJY,IAAI,yBACZ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GACb,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAEoE;AAE1G;;GAEG;AACH,wBAFU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAEe;+BAhK/B,IAAI,oBACV,IAAI,SAAS,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,GAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,GAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAC,aAAa,CAAC,EAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC,GAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAC,EAAE,CAAC;8BAJjK,eAAe;mBAF1B,cAAc;wBADT,cAAc;qBAEjB,UAAU"}
package/delta/value.js ADDED
@@ -0,0 +1,168 @@
1
+ import * as fun from '../function.js'
2
+ import * as traits from '../traits.js'
3
+ import * as s from '../schema.js'
4
+ import * as ops from './ops.js'
5
+ import { AbstractDelta } from './abstract.js'
6
+
7
+ /**
8
+ * @template {any} Vals
9
+ * @typedef {Vals extends AbstractDelta ? ops.MapInsertOp<Vals,''>|ops.MapDeleteOp<Vals,''>|ops.MapModifyOp<Extract<Vals,AbstractDelta>,''> : ops.MapInsertOp<Vals,''>|ops.MapDeleteOp<Vals,''>} ValueOpsFromValues
10
+ */
11
+
12
+ /**
13
+ * @template Vals
14
+ * @extends {AbstractDelta}
15
+ */
16
+ export class DeltaValue extends AbstractDelta {
17
+ /**
18
+ * @param {s.Schema<Vals>} $vals
19
+ */
20
+ constructor ($vals) {
21
+ super()
22
+ this.$vals = $vals
23
+ /**
24
+ * @type {ValueOpsFromValues<Vals>?}
25
+ */
26
+ this.change = null
27
+ }
28
+
29
+ get () {
30
+ return ops.$insertOp.check(this.change) ? this.change.value : undefined
31
+ }
32
+
33
+ /**
34
+ * @param {DeltaValue<Vals>} other
35
+ * @return {boolean}
36
+ */
37
+ equals (other) {
38
+ return this[traits.EqualityTraitSymbol](other)
39
+ }
40
+
41
+ /**
42
+ * @param {DeltaValue<Vals>} other
43
+ */
44
+ [traits.EqualityTraitSymbol] (other) {
45
+ return fun.equalityDeep(this.change, other.change)
46
+ }
47
+ }
48
+
49
+ /**
50
+ * @template Vals
51
+ * @extends DeltaValue<Vals>
52
+ */
53
+ export class DeltaValueBuilder extends DeltaValue {
54
+ /**
55
+ * @param {Extract<Vals, AbstractDelta>} delta
56
+ */
57
+ modify (delta) {
58
+ this.change = /** @type {ValueOpsFromValues<Vals>} */ (new ops.MapModifyOp('', delta))
59
+ return this
60
+ }
61
+
62
+ /**
63
+ * @param {Vals} newVal
64
+ * @param {Vals|undefined} prevValue
65
+ * @param {import('./abstract.js').Attribution?} attribution
66
+ */
67
+ set (newVal, prevValue = undefined, attribution = null) {
68
+ this.change = /** @type {ValueOpsFromValues<Vals>} */ (new ops.MapInsertOp('', this.$vals.cast(newVal), prevValue && this.$vals.cast(prevValue), attribution))
69
+ return this
70
+ }
71
+
72
+ /**
73
+ * @param {Vals|undefined} prevValue
74
+ * @param {import('./abstract.js').Attribution?} attribution
75
+ */
76
+ delete (prevValue = undefined, attribution = null) {
77
+ this.change = /** @type {ValueOpsFromValues<Vals>} */ (new ops.MapDeleteOp('', prevValue && this.$vals.cast(prevValue), attribution))
78
+ return this
79
+ }
80
+
81
+ /**
82
+ *
83
+ * - insert vs delete ⇒ insert takes precedence
84
+ * - insert vs modify ⇒ insert takes precedence
85
+ * - insert vs insert ⇒ priority decides
86
+ * - delete vs modify ⇒ delete takes precedence
87
+ * - delete vs delete ⇒ current delete op is removed because item has already been deleted
88
+ * - modify vs modify ⇒ rebase using priority
89
+ *
90
+ * @param {DeltaValueBuilder<Vals>} other
91
+ * @param {boolean} priority
92
+ */
93
+ rebase (other, priority) {
94
+ const c = this.change
95
+ if (ops.$insertOp.check(c)) {
96
+ if (other.change?.constructor === ops.MapInsertOp && !priority) {
97
+ this.change = null
98
+ }
99
+ } else if (ops.$deleteOp.check(c)) {
100
+ const otherOp = other.change
101
+ if (otherOp?.constructor === ops.MapInsertOp) {
102
+ this.change = null
103
+ }
104
+ } else if (ops.$modifyOp.check(c)) {
105
+ const otherOp = other.change
106
+ if (otherOp == null) {
107
+ // nop
108
+ } else if (otherOp.constructor === ops.MapModifyOp) {
109
+ c.value.rebase(otherOp.value, priority)
110
+ } else {
111
+ this.change = null
112
+ }
113
+ }
114
+ }
115
+
116
+ /**
117
+ * @param {DeltaValue<Vals>} other
118
+ */
119
+ apply (other) {
120
+ const oop = other.change
121
+ const c = this.change
122
+ if (ops.$modifyOp.check(oop)) {
123
+ if (c != null && (ops.$modifyOp.check(c) || ops.$insertOp.check(c)) && $valueAny.check(c.value)) {
124
+ /** @type {DeltaValue<any>} */ (c.value).apply(oop.value)
125
+ } else {
126
+ // then this is a simple modify
127
+ this.change = oop
128
+ }
129
+ } else if (oop != null) {
130
+ oop.prevValue = c?.value
131
+ this.change = oop
132
+ }
133
+ }
134
+
135
+ /**
136
+ * @return {this}
137
+ */
138
+ clone () {
139
+ const d = /** @type {this} */ (new DeltaValueBuilder(this.$vals))
140
+ d.change = /** @type {ValueOpsFromValues<Vals>} */ (this.change?.clone())
141
+ d.origin = this.origin
142
+ d.isDiff = this.isDiff
143
+ return d
144
+ }
145
+
146
+ done () {
147
+ return /** @type {DeltaValue<Vals>} */ (this)
148
+ }
149
+ }
150
+
151
+ /**
152
+ * @template [Vals=any]
153
+ * @param {s.Schema<Vals>} $vals
154
+ * @return {DeltaValueBuilder<Vals>}
155
+ */
156
+ export const value = ($vals = s.$any) => /** @type {any} */ (new DeltaValueBuilder($vals))
157
+
158
+ /**
159
+ * @template {any} Vals
160
+ * @param {s.Schema<Vals>} $vals
161
+ * @return {s.Schema<DeltaValue<Vals>>}
162
+ */
163
+ export const $value = $vals => /** @type {any} */ (s.$instanceOf(DeltaValue, o => $vals.extends(o.$vals)))
164
+
165
+ /**
166
+ * @type {s.Schema<DeltaValue<any>>}
167
+ */
168
+ export const $valueAny = s.$instanceOf(DeltaValue)