lib0 0.2.117 → 1.0.0-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 (861) hide show
  1. package/package.json +160 -407
  2. package/{array.js → src/array.js} +6 -2
  3. package/{binary.js → src/binary.js} +29 -35
  4. package/{delta → src/delta}/delta.js +472 -411
  5. package/{environment.js → src/environment.js} +30 -16
  6. package/{hash → src/hash}/rabin.js +6 -6
  7. package/{schema.js → src/schema.js} +127 -58
  8. package/{string.js → src/string.js} +47 -26
  9. package/{testing.js → src/testing.js} +3 -1
  10. package/src/ts.js +46 -0
  11. package/{dist → types}/array.d.ts +1 -1
  12. package/types/array.d.ts.map +1 -0
  13. package/{dist → types}/binary.d.ts +31 -37
  14. package/types/binary.d.ts.map +1 -0
  15. package/types/broadcastchannel.d.ts.map +1 -0
  16. package/types/buffer.d.ts.map +1 -0
  17. package/types/cache.d.ts.map +1 -0
  18. package/types/component.d.ts.map +1 -0
  19. package/types/conditions.d.ts.map +1 -0
  20. package/types/decoding.d.ts.map +1 -0
  21. package/types/delta/delta.d.ts +78 -7
  22. package/types/delta/delta.d.ts.map +1 -1
  23. package/types/delta/t3.test.d.ts.map +1 -1
  24. package/types/diff.d.ts.map +1 -0
  25. package/types/dom.d.ts.map +1 -0
  26. package/types/encoding.d.ts.map +1 -0
  27. package/{environment.d.ts → types/environment.d.ts} +2 -0
  28. package/types/environment.d.ts.map +1 -0
  29. package/types/error.d.ts.map +1 -0
  30. package/types/eventloop.d.ts.map +1 -0
  31. package/{function.d.ts → types/function.d.ts} +1 -1
  32. package/types/function.d.ts.map +1 -0
  33. package/types/hash/sha256.node.d.ts +1 -1
  34. package/types/hash/sha256.node.d.ts.map +1 -1
  35. package/types/indexeddb.d.ts.map +1 -0
  36. package/types/indexeddbV2.d.ts.map +1 -0
  37. package/types/iterator.d.ts.map +1 -0
  38. package/types/json.d.ts.map +1 -0
  39. package/types/list.d.ts.map +1 -0
  40. package/types/logging.common.d.ts.map +1 -0
  41. package/types/logging.d.ts.map +1 -0
  42. package/types/logging.node.d.ts.map +1 -0
  43. package/types/map.d.ts.map +1 -0
  44. package/types/math.d.ts.map +1 -0
  45. package/types/metric.d.ts.map +1 -0
  46. package/types/mutex.d.ts.map +1 -0
  47. package/{number.d.ts → types/number.d.ts} +2 -2
  48. package/types/number.d.ts.map +1 -0
  49. package/types/object.d.ts.map +1 -0
  50. package/types/observable.d.ts.map +1 -0
  51. package/types/pair.d.ts.map +1 -0
  52. package/types/performance.d.ts.map +1 -0
  53. package/types/performance.node.d.ts.map +1 -0
  54. package/types/pledge.d.ts.map +1 -0
  55. package/types/prng.d.ts.map +1 -0
  56. package/types/promise.d.ts.map +1 -0
  57. package/types/queue.d.ts.map +1 -0
  58. package/types/random.d.ts.map +1 -0
  59. package/{schema.d.ts → types/schema.d.ts} +65 -59
  60. package/types/schema.d.ts.map +1 -0
  61. package/types/set.d.ts.map +1 -0
  62. package/types/sort.d.ts.map +1 -0
  63. package/types/statistics.d.ts.map +1 -0
  64. package/types/storage.d.ts.map +1 -0
  65. package/{string.d.ts → types/string.d.ts} +3 -8
  66. package/types/string.d.ts.map +1 -0
  67. package/types/symbol.d.ts.map +1 -0
  68. package/{testing.d.ts → types/testing.d.ts} +2 -1
  69. package/types/testing.d.ts.map +1 -0
  70. package/types/time.d.ts.map +1 -0
  71. package/types/tree.d.ts.map +1 -0
  72. package/types/ts.d.ts +22 -0
  73. package/types/ts.d.ts.map +1 -0
  74. package/types/url.d.ts.map +1 -0
  75. package/types/webcrypto.d.ts.map +1 -0
  76. package/types/webcrypto.deno.d.ts.map +1 -0
  77. package/types/webcrypto.node.d.ts.map +1 -0
  78. package/types/webcrypto.react-native.d.ts.map +1 -0
  79. package/types/websocket.d.ts.map +1 -0
  80. package/.github/workflows/node.js.yml +0 -24
  81. package/.jsdoc.json +0 -18
  82. package/.vscode/launch.json +0 -17
  83. package/array.d.ts +0 -30
  84. package/array.d.ts.map +0 -1
  85. package/array.test.d.ts +0 -13
  86. package/array.test.d.ts.map +0 -1
  87. package/bin/0ecdsa-generate-keypair.d.ts +0 -3
  88. package/bin/0ecdsa-generate-keypair.d.ts.map +0 -1
  89. package/bin/0serve.d.ts +0 -3
  90. package/bin/0serve.d.ts.map +0 -1
  91. package/bin/gendocs.d.ts +0 -3
  92. package/bin/gendocs.d.ts.map +0 -1
  93. package/bin/gentesthtml.d.ts +0 -3
  94. package/bin/gentesthtml.d.ts.map +0 -1
  95. package/binary.d.ts +0 -87
  96. package/binary.d.ts.map +0 -1
  97. package/binary.test.d.ts +0 -4
  98. package/binary.test.d.ts.map +0 -1
  99. package/broadcastchannel.d.ts.map +0 -1
  100. package/broadcastchannel.test.d.ts +0 -3
  101. package/broadcastchannel.test.d.ts.map +0 -1
  102. package/buffer.d.ts.map +0 -1
  103. package/buffer.test.d.ts +0 -6
  104. package/buffer.test.d.ts.map +0 -1
  105. package/cache.d.ts.map +0 -1
  106. package/cache.test.d.ts +0 -3
  107. package/cache.test.d.ts.map +0 -1
  108. package/component.d.ts.map +0 -1
  109. package/conditions.d.ts.map +0 -1
  110. package/coverage/tmp/coverage-70359-1766561372098-0.json +0 -1
  111. package/crypto/aes-gcm.d.ts +0 -17
  112. package/crypto/aes-gcm.d.ts.map +0 -1
  113. package/crypto/common.d.ts +0 -3
  114. package/crypto/common.d.ts.map +0 -1
  115. package/crypto/ecdsa.d.ts +0 -17
  116. package/crypto/ecdsa.d.ts.map +0 -1
  117. package/crypto/jwt.d.ts +0 -10
  118. package/crypto/jwt.d.ts.map +0 -1
  119. package/crypto/rsa-oaep.d.ts +0 -13
  120. package/crypto/rsa-oaep.d.ts.map +0 -1
  121. package/crypto.test.d.ts +0 -9
  122. package/crypto.test.d.ts.map +0 -1
  123. package/decoding.d.ts.map +0 -1
  124. package/delta/binding.d.ts +0 -107
  125. package/delta/binding.d.ts.map +0 -1
  126. package/delta/binding.test.d.ts +0 -5
  127. package/delta/binding.test.d.ts.map +0 -1
  128. package/delta/delta-pitch.test.d.ts +0 -5
  129. package/delta/delta-pitch.test.d.ts.map +0 -1
  130. package/delta/delta.d.ts +0 -1008
  131. package/delta/delta.d.ts.map +0 -1
  132. package/delta/delta.test.d.ts +0 -29
  133. package/delta/delta.test.d.ts.map +0 -1
  134. package/delta/t3.test.d.ts +0 -19
  135. package/delta/t3.test.d.ts.map +0 -1
  136. package/deno.json +0 -12
  137. package/deno.lock +0 -122
  138. package/diff/patience.d.ts +0 -16
  139. package/diff/patience.d.ts.map +0 -1
  140. package/diff/patience.test.d.ts +0 -4
  141. package/diff/patience.test.d.ts.map +0 -1
  142. package/diff.d.ts.map +0 -1
  143. package/diff.test.d.ts +0 -6
  144. package/diff.test.d.ts.map +0 -1
  145. package/dist/aes-gcm.cjs +0 -171
  146. package/dist/aes-gcm.cjs.map +0 -1
  147. package/dist/array-78849c95.cjs +0 -260
  148. package/dist/array-78849c95.cjs.map +0 -1
  149. package/dist/array.cjs +0 -26
  150. package/dist/array.cjs.map +0 -1
  151. package/dist/array.d.ts.map +0 -1
  152. package/dist/array.test.d.ts +0 -13
  153. package/dist/array.test.d.ts.map +0 -1
  154. package/dist/bin/0ecdsa-generate-keypair.d.ts +0 -3
  155. package/dist/bin/0ecdsa-generate-keypair.d.ts.map +0 -1
  156. package/dist/bin/0serve.d.ts +0 -3
  157. package/dist/bin/0serve.d.ts.map +0 -1
  158. package/dist/bin/gendocs.d.ts +0 -3
  159. package/dist/bin/gendocs.d.ts.map +0 -1
  160. package/dist/bin/gentesthtml.d.ts +0 -3
  161. package/dist/bin/gentesthtml.d.ts.map +0 -1
  162. package/dist/binary-ac8e39e2.cjs +0 -229
  163. package/dist/binary-ac8e39e2.cjs.map +0 -1
  164. package/dist/binary.cjs +0 -74
  165. package/dist/binary.cjs.map +0 -1
  166. package/dist/binary.d.ts.map +0 -1
  167. package/dist/binary.test.d.ts +0 -4
  168. package/dist/binary.test.d.ts.map +0 -1
  169. package/dist/binding.cjs +0 -484
  170. package/dist/binding.cjs.map +0 -1
  171. package/dist/broadcastchannel-aca4f606.cjs +0 -128
  172. package/dist/broadcastchannel-aca4f606.cjs.map +0 -1
  173. package/dist/broadcastchannel.cjs +0 -29
  174. package/dist/broadcastchannel.cjs.map +0 -1
  175. package/dist/broadcastchannel.d.ts +0 -8
  176. package/dist/broadcastchannel.d.ts.map +0 -1
  177. package/dist/broadcastchannel.test.d.ts +0 -3
  178. package/dist/broadcastchannel.test.d.ts.map +0 -1
  179. package/dist/buffer-3e750729.cjs +0 -198
  180. package/dist/buffer-3e750729.cjs.map +0 -1
  181. package/dist/buffer.cjs +0 -38
  182. package/dist/buffer.cjs.map +0 -1
  183. package/dist/buffer.d.ts +0 -22
  184. package/dist/buffer.d.ts.map +0 -1
  185. package/dist/buffer.test.d.ts +0 -6
  186. package/dist/buffer.test.d.ts.map +0 -1
  187. package/dist/cache.cjs +0 -223
  188. package/dist/cache.cjs.map +0 -1
  189. package/dist/cache.d.ts +0 -52
  190. package/dist/cache.d.ts.map +0 -1
  191. package/dist/cache.test.d.ts +0 -3
  192. package/dist/cache.test.d.ts.map +0 -1
  193. package/dist/common.cjs +0 -47
  194. package/dist/common.cjs.map +0 -1
  195. package/dist/component.cjs +0 -437
  196. package/dist/component.cjs.map +0 -1
  197. package/dist/component.d.ts +0 -86
  198. package/dist/component.d.ts.map +0 -1
  199. package/dist/conditions-f5c0c102.cjs +0 -24
  200. package/dist/conditions-f5c0c102.cjs.map +0 -1
  201. package/dist/conditions.cjs +0 -10
  202. package/dist/conditions.cjs.map +0 -1
  203. package/dist/conditions.d.ts +0 -2
  204. package/dist/conditions.d.ts.map +0 -1
  205. package/dist/crypto/aes-gcm.d.ts +0 -17
  206. package/dist/crypto/aes-gcm.d.ts.map +0 -1
  207. package/dist/crypto/common.d.ts +0 -3
  208. package/dist/crypto/common.d.ts.map +0 -1
  209. package/dist/crypto/ecdsa.d.ts +0 -17
  210. package/dist/crypto/ecdsa.d.ts.map +0 -1
  211. package/dist/crypto/jwt.d.ts +0 -10
  212. package/dist/crypto/jwt.d.ts.map +0 -1
  213. package/dist/crypto/rsa-oaep.d.ts +0 -13
  214. package/dist/crypto/rsa-oaep.d.ts.map +0 -1
  215. package/dist/crypto.test.d.ts +0 -9
  216. package/dist/crypto.test.d.ts.map +0 -1
  217. package/dist/decoding-76e75827.cjs +0 -795
  218. package/dist/decoding-76e75827.cjs.map +0 -1
  219. package/dist/decoding.cjs +0 -55
  220. package/dist/decoding.cjs.map +0 -1
  221. package/dist/decoding.d.ts +0 -165
  222. package/dist/decoding.d.ts.map +0 -1
  223. package/dist/delta/binding.d.ts +0 -107
  224. package/dist/delta/binding.d.ts.map +0 -1
  225. package/dist/delta/binding.test.d.ts +0 -5
  226. package/dist/delta/binding.test.d.ts.map +0 -1
  227. package/dist/delta/delta-pitch.test.d.ts +0 -5
  228. package/dist/delta/delta-pitch.test.d.ts.map +0 -1
  229. package/dist/delta/delta.d.ts +0 -1008
  230. package/dist/delta/delta.d.ts.map +0 -1
  231. package/dist/delta/delta.test.d.ts +0 -29
  232. package/dist/delta/delta.test.d.ts.map +0 -1
  233. package/dist/delta/t3.test.d.ts +0 -19
  234. package/dist/delta/t3.test.d.ts.map +0 -1
  235. package/dist/delta.cjs +0 -2412
  236. package/dist/delta.cjs.map +0 -1
  237. package/dist/diff/patience.d.ts +0 -16
  238. package/dist/diff/patience.d.ts.map +0 -1
  239. package/dist/diff/patience.test.d.ts +0 -4
  240. package/dist/diff/patience.test.d.ts.map +0 -1
  241. package/dist/diff-9d236524.cjs +0 -162
  242. package/dist/diff-9d236524.cjs.map +0 -1
  243. package/dist/diff.cjs +0 -18
  244. package/dist/diff.cjs.map +0 -1
  245. package/dist/diff.d.ts +0 -36
  246. package/dist/diff.d.ts.map +0 -1
  247. package/dist/diff.test.d.ts +0 -6
  248. package/dist/diff.test.d.ts.map +0 -1
  249. package/dist/dom-7e625b09.cjs +0 -371
  250. package/dist/dom-7e625b09.cjs.map +0 -1
  251. package/dist/dom.cjs +0 -71
  252. package/dist/dom.cjs.map +0 -1
  253. package/dist/dom.d.ts.map +0 -1
  254. package/dist/ecdsa.cjs +0 -130
  255. package/dist/ecdsa.cjs.map +0 -1
  256. package/dist/encoding-1a745c43.cjs +0 -1025
  257. package/dist/encoding-1a745c43.cjs.map +0 -1
  258. package/dist/encoding.cjs +0 -54
  259. package/dist/encoding.cjs.map +0 -1
  260. package/dist/encoding.d.ts.map +0 -1
  261. package/dist/encoding.test.d.ts +0 -50
  262. package/dist/encoding.test.d.ts.map +0 -1
  263. package/dist/environment-1c97264d.cjs +0 -180
  264. package/dist/environment-1c97264d.cjs.map +0 -1
  265. package/dist/environment.cjs +0 -29
  266. package/dist/environment.cjs.map +0 -1
  267. package/dist/environment.d.ts +0 -19
  268. package/dist/environment.d.ts.map +0 -1
  269. package/dist/equality.cjs +0 -34
  270. package/dist/equality.cjs.map +0 -1
  271. package/dist/error-0c1f634f.cjs +0 -53
  272. package/dist/error-0c1f634f.cjs.map +0 -1
  273. package/dist/error.cjs +0 -13
  274. package/dist/error.cjs.map +0 -1
  275. package/dist/error.d.ts.map +0 -1
  276. package/dist/eventloop-a0168106.cjs +0 -151
  277. package/dist/eventloop-a0168106.cjs.map +0 -1
  278. package/dist/eventloop.cjs +0 -19
  279. package/dist/eventloop.cjs.map +0 -1
  280. package/dist/eventloop.d.ts.map +0 -1
  281. package/dist/eventloop.test.d.ts +0 -10
  282. package/dist/eventloop.test.d.ts.map +0 -1
  283. package/dist/fingerprint.cjs +0 -44
  284. package/dist/fingerprint.cjs.map +0 -1
  285. package/dist/function-314580f7.cjs +0 -223
  286. package/dist/function-314580f7.cjs.map +0 -1
  287. package/dist/function.cjs +0 -26
  288. package/dist/function.cjs.map +0 -1
  289. package/dist/function.d.ts +0 -19
  290. package/dist/function.d.ts.map +0 -1
  291. package/dist/function.test.d.ts +0 -5
  292. package/dist/function.test.d.ts.map +0 -1
  293. package/dist/hash/rabin-gf2-polynomial.d.ts +0 -45
  294. package/dist/hash/rabin-gf2-polynomial.d.ts.map +0 -1
  295. package/dist/hash/rabin-uncached.d.ts +0 -29
  296. package/dist/hash/rabin-uncached.d.ts.map +0 -1
  297. package/dist/hash/rabin.d.ts +0 -27
  298. package/dist/hash/rabin.d.ts.map +0 -1
  299. package/dist/hash/rabin.test.d.ts +0 -8
  300. package/dist/hash/rabin.test.d.ts.map +0 -1
  301. package/dist/hash/sha256.d.ts +0 -2
  302. package/dist/hash/sha256.d.ts.map +0 -1
  303. package/dist/hash/sha256.node.d.ts +0 -2
  304. package/dist/hash/sha256.node.d.ts.map +0 -1
  305. package/dist/hash/sha256.test.d.ts +0 -7
  306. package/dist/hash/sha256.test.d.ts.map +0 -1
  307. package/dist/index.cjs +0 -99
  308. package/dist/index.cjs.map +0 -1
  309. package/dist/index.d.ts +0 -35
  310. package/dist/index.d.ts.map +0 -1
  311. package/dist/indexeddb-46d1e737.cjs +0 -311
  312. package/dist/indexeddb-46d1e737.cjs.map +0 -1
  313. package/dist/indexeddb.cjs +0 -37
  314. package/dist/indexeddb.cjs.map +0 -1
  315. package/dist/indexeddb.d.ts.map +0 -1
  316. package/dist/indexeddb.test.d.ts +0 -3
  317. package/dist/indexeddb.test.d.ts.map +0 -1
  318. package/dist/indexeddbV2.cjs +0 -288
  319. package/dist/indexeddbV2.cjs.map +0 -1
  320. package/dist/indexeddbV2.d.ts.map +0 -1
  321. package/dist/indexeddbV2.test.d.ts +0 -3
  322. package/dist/indexeddbV2.test.d.ts.map +0 -1
  323. package/dist/isomorphic.cjs +0 -17
  324. package/dist/isomorphic.cjs.map +0 -1
  325. package/dist/iterator-9fc627c1.cjs +0 -78
  326. package/dist/iterator-9fc627c1.cjs.map +0 -1
  327. package/dist/iterator.cjs +0 -13
  328. package/dist/iterator.cjs.map +0 -1
  329. package/dist/iterator.d.ts.map +0 -1
  330. package/dist/json-092190a1.cjs +0 -34
  331. package/dist/json-092190a1.cjs.map +0 -1
  332. package/dist/json.cjs +0 -11
  333. package/dist/json.cjs.map +0 -1
  334. package/dist/json.d.ts.map +0 -1
  335. package/dist/jwt.cjs +0 -96
  336. package/dist/jwt.cjs.map +0 -1
  337. package/dist/list.cjs +0 -266
  338. package/dist/list.cjs.map +0 -1
  339. package/dist/list.d.ts.map +0 -1
  340. package/dist/list.test.d.ts +0 -6
  341. package/dist/list.test.d.ts.map +0 -1
  342. package/dist/logging.cjs +0 -428
  343. package/dist/logging.cjs.map +0 -1
  344. package/dist/logging.common.cjs +0 -132
  345. package/dist/logging.common.cjs.map +0 -1
  346. package/dist/logging.common.d.ts.map +0 -1
  347. package/dist/logging.d.ts.map +0 -1
  348. package/dist/logging.node.cjs +0 -203
  349. package/dist/logging.node.cjs.map +0 -1
  350. package/dist/logging.node.d.ts.map +0 -1
  351. package/dist/logging.test.d.ts +0 -3
  352. package/dist/logging.test.d.ts.map +0 -1
  353. package/dist/map-24d263c0.cjs +0 -139
  354. package/dist/map-24d263c0.cjs.map +0 -1
  355. package/dist/map.cjs +0 -15
  356. package/dist/map.cjs.map +0 -1
  357. package/dist/map.d.ts.map +0 -1
  358. package/dist/map.test.d.ts +0 -4
  359. package/dist/map.test.d.ts.map +0 -1
  360. package/dist/math-96d5e8c4.cjs +0 -103
  361. package/dist/math-96d5e8c4.cjs.map +0 -1
  362. package/dist/math.cjs +0 -26
  363. package/dist/math.cjs.map +0 -1
  364. package/dist/math.d.ts.map +0 -1
  365. package/dist/math.test.d.ts +0 -3
  366. package/dist/math.test.d.ts.map +0 -1
  367. package/dist/metric.cjs +0 -83
  368. package/dist/metric.cjs.map +0 -1
  369. package/dist/metric.d.ts.map +0 -1
  370. package/dist/metric.test.d.ts +0 -3
  371. package/dist/metric.test.d.ts.map +0 -1
  372. package/dist/mutex-63f09c81.cjs +0 -54
  373. package/dist/mutex-63f09c81.cjs.map +0 -1
  374. package/dist/mutex.cjs +0 -10
  375. package/dist/mutex.cjs.map +0 -1
  376. package/dist/mutex.d.ts.map +0 -1
  377. package/dist/mutex.test.d.ts +0 -3
  378. package/dist/mutex.test.d.ts.map +0 -1
  379. package/dist/number-1fb57bba.cjs +0 -64
  380. package/dist/number-1fb57bba.cjs.map +0 -1
  381. package/dist/number.cjs +0 -20
  382. package/dist/number.cjs.map +0 -1
  383. package/dist/number.d.ts +0 -10
  384. package/dist/number.d.ts.map +0 -1
  385. package/dist/number.test.d.ts +0 -4
  386. package/dist/number.test.d.ts.map +0 -1
  387. package/dist/object-c0c9435b.cjs +0 -212
  388. package/dist/object-c0c9435b.cjs.map +0 -1
  389. package/dist/object.cjs +0 -27
  390. package/dist/object.cjs.map +0 -1
  391. package/dist/object.d.ts.map +0 -1
  392. package/dist/object.test.d.ts +0 -6
  393. package/dist/object.test.d.ts.map +0 -1
  394. package/dist/observable.cjs +0 -169
  395. package/dist/observable.cjs.map +0 -1
  396. package/dist/observable.d.ts.map +0 -1
  397. package/dist/observable.test.d.ts +0 -3
  398. package/dist/observable.test.d.ts.map +0 -1
  399. package/dist/pair-ab022bc3.cjs +0 -69
  400. package/dist/pair-ab022bc3.cjs.map +0 -1
  401. package/dist/pair.cjs +0 -14
  402. package/dist/pair.cjs.map +0 -1
  403. package/dist/pair.d.ts.map +0 -1
  404. package/dist/pair.test.d.ts +0 -3
  405. package/dist/pair.test.d.ts.map +0 -1
  406. package/dist/patience.cjs +0 -236
  407. package/dist/patience.cjs.map +0 -1
  408. package/dist/performance.cjs +0 -14
  409. package/dist/performance.cjs.map +0 -1
  410. package/dist/performance.d.ts.map +0 -1
  411. package/dist/performance.node.cjs +0 -36
  412. package/dist/performance.node.cjs.map +0 -1
  413. package/dist/performance.node.d.ts.map +0 -1
  414. package/dist/pledge.cjs +0 -308
  415. package/dist/pledge.cjs.map +0 -1
  416. package/dist/pledge.d.ts.map +0 -1
  417. package/dist/pledge.test.d.ts +0 -6
  418. package/dist/pledge.test.d.ts.map +0 -1
  419. package/dist/prng/Mt19937.d.ts +0 -29
  420. package/dist/prng/Mt19937.d.ts.map +0 -1
  421. package/dist/prng/Xoroshiro128plus.d.ts +0 -27
  422. package/dist/prng/Xoroshiro128plus.d.ts.map +0 -1
  423. package/dist/prng/Xorshift32.d.ts +0 -21
  424. package/dist/prng/Xorshift32.d.ts.map +0 -1
  425. package/dist/prng-37d48618.cjs +0 -387
  426. package/dist/prng-37d48618.cjs.map +0 -1
  427. package/dist/prng.cjs +0 -44
  428. package/dist/prng.cjs.map +0 -1
  429. package/dist/prng.d.ts.map +0 -1
  430. package/dist/prng.test.d.ts +0 -6
  431. package/dist/prng.test.d.ts.map +0 -1
  432. package/dist/promise-cda7b9bb.cjs +0 -145
  433. package/dist/promise-cda7b9bb.cjs.map +0 -1
  434. package/dist/promise.cjs +0 -22
  435. package/dist/promise.cjs.map +0 -1
  436. package/dist/promise.d.ts.map +0 -1
  437. package/dist/promise.test.d.ts +0 -5
  438. package/dist/promise.test.d.ts.map +0 -1
  439. package/dist/queue.cjs +0 -97
  440. package/dist/queue.cjs.map +0 -1
  441. package/dist/queue.d.ts.map +0 -1
  442. package/dist/queue.test.d.ts +0 -3
  443. package/dist/queue.test.d.ts.map +0 -1
  444. package/dist/rabin-gf2-polynomial.cjs +0 -440
  445. package/dist/rabin-gf2-polynomial.cjs.map +0 -1
  446. package/dist/rabin-uncached.cjs +0 -90
  447. package/dist/rabin-uncached.cjs.map +0 -1
  448. package/dist/rabin.cjs +0 -128
  449. package/dist/rabin.cjs.map +0 -1
  450. package/dist/random.cjs +0 -48
  451. package/dist/random.cjs.map +0 -1
  452. package/dist/random.d.ts.map +0 -1
  453. package/dist/random.test.d.ts +0 -7
  454. package/dist/random.test.d.ts.map +0 -1
  455. package/dist/rollup.config.d.ts +0 -13
  456. package/dist/rollup.config.d.ts.map +0 -1
  457. package/dist/rsa-oaep.cjs +0 -112
  458. package/dist/rsa-oaep.cjs.map +0 -1
  459. package/dist/schema.cjs +0 -1223
  460. package/dist/schema.cjs.map +0 -1
  461. package/dist/schema.d.ts +0 -595
  462. package/dist/schema.d.ts.map +0 -1
  463. package/dist/schema.test.d.ts +0 -15
  464. package/dist/schema.test.d.ts.map +0 -1
  465. package/dist/set-5b47859e.cjs +0 -45
  466. package/dist/set-5b47859e.cjs.map +0 -1
  467. package/dist/set.cjs +0 -13
  468. package/dist/set.cjs.map +0 -1
  469. package/dist/set.d.ts.map +0 -1
  470. package/dist/set.test.d.ts +0 -3
  471. package/dist/set.test.d.ts.map +0 -1
  472. package/dist/sha256.cjs +0 -183
  473. package/dist/sha256.cjs.map +0 -1
  474. package/dist/sha256.node.cjs +0 -17
  475. package/dist/sha256.node.cjs.map +0 -1
  476. package/dist/sort-812cc211.cjs +0 -103
  477. package/dist/sort-812cc211.cjs.map +0 -1
  478. package/dist/sort.cjs +0 -13
  479. package/dist/sort.cjs.map +0 -1
  480. package/dist/sort.d.ts.map +0 -1
  481. package/dist/sort.test.d.ts +0 -7
  482. package/dist/sort.test.d.ts.map +0 -1
  483. package/dist/statistics-65f6114b.cjs +0 -32
  484. package/dist/statistics-65f6114b.cjs.map +0 -1
  485. package/dist/statistics.cjs +0 -12
  486. package/dist/statistics.cjs.map +0 -1
  487. package/dist/statistics.d.ts.map +0 -1
  488. package/dist/statistics.test.d.ts +0 -3
  489. package/dist/statistics.test.d.ts.map +0 -1
  490. package/dist/storage.cjs +0 -81
  491. package/dist/storage.cjs.map +0 -1
  492. package/dist/storage.d.ts.map +0 -1
  493. package/dist/storage.test.d.ts +0 -3
  494. package/dist/storage.test.d.ts.map +0 -1
  495. package/dist/string-fddc5f8b.cjs +0 -209
  496. package/dist/string-fddc5f8b.cjs.map +0 -1
  497. package/dist/string.cjs +0 -32
  498. package/dist/string.cjs.map +0 -1
  499. package/dist/string.d.ts +0 -28
  500. package/dist/string.d.ts.map +0 -1
  501. package/dist/string.test.d.ts +0 -9
  502. package/dist/string.test.d.ts.map +0 -1
  503. package/dist/symbol-9c439012.cjs +0 -29
  504. package/dist/symbol-9c439012.cjs.map +0 -1
  505. package/dist/symbol.cjs +0 -11
  506. package/dist/symbol.cjs.map +0 -1
  507. package/dist/symbol.d.ts.map +0 -1
  508. package/dist/symbol.test.d.ts +0 -3
  509. package/dist/symbol.test.d.ts.map +0 -1
  510. package/dist/testing.cjs +0 -709
  511. package/dist/testing.cjs.map +0 -1
  512. package/dist/testing.d.ts +0 -64
  513. package/dist/testing.d.ts.map +0 -1
  514. package/dist/testing.test.d.ts +0 -9
  515. package/dist/testing.test.d.ts.map +0 -1
  516. package/dist/time-d8438852.cjs +0 -63
  517. package/dist/time-d8438852.cjs.map +0 -1
  518. package/dist/time.cjs +0 -14
  519. package/dist/time.cjs.map +0 -1
  520. package/dist/time.d.ts.map +0 -1
  521. package/dist/time.test.d.ts +0 -4
  522. package/dist/time.test.d.ts.map +0 -1
  523. package/dist/trait/equality.d.ts +0 -6
  524. package/dist/trait/equality.d.ts.map +0 -1
  525. package/dist/trait/fingerprint.d.ts +0 -13
  526. package/dist/trait/fingerprint.d.ts.map +0 -1
  527. package/dist/trait/traits.d.ts +0 -3
  528. package/dist/trait/traits.d.ts.map +0 -1
  529. package/dist/trait/traits.test.d.ts +0 -5
  530. package/dist/trait/traits.test.d.ts.map +0 -1
  531. package/dist/traits.cjs +0 -31
  532. package/dist/traits.cjs.map +0 -1
  533. package/dist/tree-9f3c8837.cjs +0 -557
  534. package/dist/tree-9f3c8837.cjs.map +0 -1
  535. package/dist/tree.cjs +0 -10
  536. package/dist/tree.cjs.map +0 -1
  537. package/dist/tree.d.ts.map +0 -1
  538. package/dist/tree.test.d.ts +0 -2
  539. package/dist/tree.test.d.ts.map +0 -1
  540. package/dist/url.cjs +0 -46
  541. package/dist/url.cjs.map +0 -1
  542. package/dist/url.d.ts.map +0 -1
  543. package/dist/url.test.d.ts +0 -3
  544. package/dist/url.test.d.ts.map +0 -1
  545. package/dist/webcrypto.cjs +0 -12
  546. package/dist/webcrypto.cjs.map +0 -1
  547. package/dist/webcrypto.d.ts.map +0 -1
  548. package/dist/webcrypto.deno.cjs +0 -12
  549. package/dist/webcrypto.deno.cjs.map +0 -1
  550. package/dist/webcrypto.deno.d.ts.map +0 -1
  551. package/dist/webcrypto.node.cjs +0 -12
  552. package/dist/webcrypto.node.cjs.map +0 -1
  553. package/dist/webcrypto.node.d.ts.map +0 -1
  554. package/dist/webcrypto.react-native.cjs +0 -20
  555. package/dist/webcrypto.react-native.cjs.map +0 -1
  556. package/dist/webcrypto.react-native.d.ts.map +0 -1
  557. package/dist/websocket-b073d0fc.cjs +0 -157
  558. package/dist/websocket-b073d0fc.cjs.map +0 -1
  559. package/dist/websocket.cjs +0 -17
  560. package/dist/websocket.cjs.map +0 -1
  561. package/dist/websocket.d.ts.map +0 -1
  562. package/dom.d.ts +0 -60
  563. package/dom.d.ts.map +0 -1
  564. package/encoding.d.ts +0 -235
  565. package/encoding.d.ts.map +0 -1
  566. package/encoding.test.d.ts +0 -50
  567. package/encoding.test.d.ts.map +0 -1
  568. package/environment.d.ts.map +0 -1
  569. package/error.d.ts +0 -5
  570. package/error.d.ts.map +0 -1
  571. package/eventloop.d.ts +0 -16
  572. package/eventloop.d.ts.map +0 -1
  573. package/eventloop.test.d.ts +0 -10
  574. package/eventloop.test.d.ts.map +0 -1
  575. package/function.d.ts.map +0 -1
  576. package/function.test.d.ts +0 -5
  577. package/function.test.d.ts.map +0 -1
  578. package/hash/rabin-gf2-polynomial.d.ts +0 -45
  579. package/hash/rabin-gf2-polynomial.d.ts.map +0 -1
  580. package/hash/rabin-uncached.d.ts +0 -29
  581. package/hash/rabin-uncached.d.ts.map +0 -1
  582. package/hash/rabin.d.ts +0 -27
  583. package/hash/rabin.d.ts.map +0 -1
  584. package/hash/rabin.test.d.ts +0 -8
  585. package/hash/rabin.test.d.ts.map +0 -1
  586. package/hash/sha256.d.ts +0 -2
  587. package/hash/sha256.d.ts.map +0 -1
  588. package/hash/sha256.node.d.ts +0 -2
  589. package/hash/sha256.node.d.ts.map +0 -1
  590. package/hash/sha256.test.d.ts +0 -7
  591. package/hash/sha256.test.d.ts.map +0 -1
  592. package/index.d.ts +0 -35
  593. package/index.d.ts.map +0 -1
  594. package/index.js +0 -82
  595. package/indexeddb.d.ts +0 -34
  596. package/indexeddb.d.ts.map +0 -1
  597. package/indexeddb.test.d.ts +0 -3
  598. package/indexeddb.test.d.ts.map +0 -1
  599. package/indexeddbV2.d.ts +0 -35
  600. package/indexeddbV2.d.ts.map +0 -1
  601. package/indexeddbV2.test.d.ts +0 -3
  602. package/indexeddbV2.test.d.ts.map +0 -1
  603. package/isomorphic.js +0 -10
  604. package/iterator.d.ts +0 -5
  605. package/iterator.d.ts.map +0 -1
  606. package/json.d.ts +0 -23
  607. package/json.d.ts.map +0 -1
  608. package/list.d.ts +0 -55
  609. package/list.d.ts.map +0 -1
  610. package/list.test.d.ts +0 -6
  611. package/list.test.d.ts.map +0 -1
  612. package/logging.common.d.ts +0 -12
  613. package/logging.common.d.ts.map +0 -1
  614. package/logging.d.ts +0 -55
  615. package/logging.d.ts.map +0 -1
  616. package/logging.node.d.ts +0 -14
  617. package/logging.node.d.ts.map +0 -1
  618. package/logging.test.d.ts +0 -3
  619. package/logging.test.d.ts.map +0 -1
  620. package/map.d.ts +0 -8
  621. package/map.d.ts.map +0 -1
  622. package/map.test.d.ts +0 -4
  623. package/map.test.d.ts.map +0 -1
  624. package/math.d.ts +0 -23
  625. package/math.d.ts.map +0 -1
  626. package/math.test.d.ts +0 -3
  627. package/math.test.d.ts.map +0 -1
  628. package/metric.d.ts +0 -25
  629. package/metric.d.ts.map +0 -1
  630. package/metric.test.d.ts +0 -3
  631. package/metric.test.d.ts.map +0 -1
  632. package/mutex.d.ts +0 -3
  633. package/mutex.d.ts.map +0 -1
  634. package/mutex.test.d.ts +0 -3
  635. package/mutex.test.d.ts.map +0 -1
  636. package/number.d.ts.map +0 -1
  637. package/number.test.d.ts +0 -4
  638. package/number.test.d.ts.map +0 -1
  639. package/object.d.ts +0 -72
  640. package/object.d.ts.map +0 -1
  641. package/object.test.d.ts +0 -6
  642. package/object.test.d.ts.map +0 -1
  643. package/observable.d.ts +0 -86
  644. package/observable.d.ts.map +0 -1
  645. package/observable.test.d.ts +0 -3
  646. package/observable.test.d.ts.map +0 -1
  647. package/pair.d.ts +0 -22
  648. package/pair.d.ts.map +0 -1
  649. package/pair.test.d.ts +0 -3
  650. package/pair.test.d.ts.map +0 -1
  651. package/performance.d.ts +0 -4
  652. package/performance.d.ts.map +0 -1
  653. package/performance.node.d.ts +0 -14
  654. package/performance.node.d.ts.map +0 -1
  655. package/pledge.d.ts +0 -68
  656. package/pledge.d.ts.map +0 -1
  657. package/pledge.test.d.ts +0 -6
  658. package/pledge.test.d.ts.map +0 -1
  659. package/prng/Mt19937.d.ts +0 -29
  660. package/prng/Mt19937.d.ts.map +0 -1
  661. package/prng/Xoroshiro128plus.d.ts +0 -27
  662. package/prng/Xoroshiro128plus.d.ts.map +0 -1
  663. package/prng/Xorshift32.d.ts +0 -21
  664. package/prng/Xorshift32.d.ts.map +0 -1
  665. package/prng.d.ts +0 -44
  666. package/prng.d.ts.map +0 -1
  667. package/prng.test.d.ts +0 -6
  668. package/prng.test.d.ts.map +0 -1
  669. package/promise.d.ts +0 -22
  670. package/promise.d.ts.map +0 -1
  671. package/promise.test.d.ts +0 -5
  672. package/promise.test.d.ts.map +0 -1
  673. package/queue.d.ts +0 -34
  674. package/queue.d.ts.map +0 -1
  675. package/queue.test.d.ts +0 -3
  676. package/queue.test.d.ts.map +0 -1
  677. package/random.d.ts +0 -6
  678. package/random.d.ts.map +0 -1
  679. package/random.test.d.ts +0 -7
  680. package/random.test.d.ts.map +0 -1
  681. package/rollup.config.d.ts +0 -13
  682. package/rollup.config.d.ts.map +0 -1
  683. package/schema.d.ts.map +0 -1
  684. package/schema.test.d.ts +0 -15
  685. package/schema.test.d.ts.map +0 -1
  686. package/set.d.ts +0 -5
  687. package/set.d.ts.map +0 -1
  688. package/set.test.d.ts +0 -3
  689. package/set.test.d.ts.map +0 -1
  690. package/sort.d.ts +0 -4
  691. package/sort.d.ts.map +0 -1
  692. package/sort.test.d.ts +0 -7
  693. package/sort.test.d.ts.map +0 -1
  694. package/statistics.d.ts +0 -3
  695. package/statistics.d.ts.map +0 -1
  696. package/statistics.test.d.ts +0 -3
  697. package/statistics.test.d.ts.map +0 -1
  698. package/storage.d.ts +0 -15
  699. package/storage.d.ts.map +0 -1
  700. package/storage.test.d.ts +0 -3
  701. package/storage.test.d.ts.map +0 -1
  702. package/string.d.ts.map +0 -1
  703. package/string.test.d.ts +0 -9
  704. package/string.test.d.ts.map +0 -1
  705. package/symbol.d.ts +0 -11
  706. package/symbol.d.ts.map +0 -1
  707. package/symbol.test.d.ts +0 -3
  708. package/symbol.test.d.ts.map +0 -1
  709. package/test.d.ts +0 -2
  710. package/test.d.ts.map +0 -1
  711. package/test.html +0 -168
  712. package/test.js +0 -104
  713. package/testing.d.ts.map +0 -1
  714. package/testing.test.d.ts +0 -9
  715. package/testing.test.d.ts.map +0 -1
  716. package/time.d.ts +0 -9
  717. package/time.d.ts.map +0 -1
  718. package/time.test.d.ts +0 -4
  719. package/time.test.d.ts.map +0 -1
  720. package/trait/equality.d.ts +0 -6
  721. package/trait/equality.d.ts.map +0 -1
  722. package/trait/fingerprint.d.ts +0 -13
  723. package/trait/fingerprint.d.ts.map +0 -1
  724. package/trait/traits.d.ts +0 -3
  725. package/trait/traits.d.ts.map +0 -1
  726. package/trait/traits.test.d.ts +0 -5
  727. package/trait/traits.test.d.ts.map +0 -1
  728. package/tree.d.ts +0 -96
  729. package/tree.d.ts.map +0 -1
  730. package/tree.test.d.ts +0 -2
  731. package/tree.test.d.ts.map +0 -1
  732. package/url.d.ts +0 -7
  733. package/url.d.ts.map +0 -1
  734. package/url.test.d.ts +0 -3
  735. package/url.test.d.ts.map +0 -1
  736. package/webcrypto.d.ts +0 -3
  737. package/webcrypto.d.ts.map +0 -1
  738. package/webcrypto.deno.d.ts +0 -3
  739. package/webcrypto.deno.d.ts.map +0 -1
  740. package/webcrypto.node.d.ts +0 -3
  741. package/webcrypto.node.d.ts.map +0 -1
  742. package/webcrypto.react-native.d.ts +0 -3
  743. package/webcrypto.react-native.d.ts.map +0 -1
  744. package/websocket.d.ts +0 -38
  745. package/websocket.d.ts.map +0 -1
  746. /package/{bin → src/bin}/0ecdsa-generate-keypair.js +0 -0
  747. /package/{bin → src/bin}/0serve.js +0 -0
  748. /package/{bin → src/bin}/gendocs.js +0 -0
  749. /package/{bin → src/bin}/gentesthtml.js +0 -0
  750. /package/{broadcastchannel.js → src/broadcastchannel.js} +0 -0
  751. /package/{buffer.js → src/buffer.js} +0 -0
  752. /package/{cache.js → src/cache.js} +0 -0
  753. /package/{component.js → src/component.js} +0 -0
  754. /package/{conditions.js → src/conditions.js} +0 -0
  755. /package/{crypto → src/crypto}/aes-gcm.js +0 -0
  756. /package/{crypto → src/crypto}/common.js +0 -0
  757. /package/{crypto → src/crypto}/ecdsa.js +0 -0
  758. /package/{crypto → src/crypto}/jwt.js +0 -0
  759. /package/{crypto → src/crypto}/rsa-oaep.js +0 -0
  760. /package/{decoding.js → src/decoding.js} +0 -0
  761. /package/{delta → src/delta}/binding.js +0 -0
  762. /package/{delta → src/delta}/readme.md +0 -0
  763. /package/{diff → src/diff}/patience.js +0 -0
  764. /package/{diff.js → src/diff.js} +0 -0
  765. /package/{dom.js → src/dom.js} +0 -0
  766. /package/{encoding.js → src/encoding.js} +0 -0
  767. /package/{error.js → src/error.js} +0 -0
  768. /package/{eventloop.js → src/eventloop.js} +0 -0
  769. /package/{function.js → src/function.js} +0 -0
  770. /package/{hash → src/hash}/rabin-gf2-polynomial.js +0 -0
  771. /package/{hash → src/hash}/rabin-uncached.js +0 -0
  772. /package/{hash → src/hash}/sha256.js +0 -0
  773. /package/{hash → src/hash}/sha256.node.js +0 -0
  774. /package/{indexeddb.js → src/indexeddb.js} +0 -0
  775. /package/{indexeddbV2.js → src/indexeddbV2.js} +0 -0
  776. /package/{iterator.js → src/iterator.js} +0 -0
  777. /package/{json.js → src/json.js} +0 -0
  778. /package/{list.js → src/list.js} +0 -0
  779. /package/{logging.common.js → src/logging.common.js} +0 -0
  780. /package/{logging.js → src/logging.js} +0 -0
  781. /package/{logging.node.js → src/logging.node.js} +0 -0
  782. /package/{map.js → src/map.js} +0 -0
  783. /package/{math.js → src/math.js} +0 -0
  784. /package/{metric.js → src/metric.js} +0 -0
  785. /package/{mutex.js → src/mutex.js} +0 -0
  786. /package/{number.js → src/number.js} +0 -0
  787. /package/{object.js → src/object.js} +0 -0
  788. /package/{observable.js → src/observable.js} +0 -0
  789. /package/{pair.js → src/pair.js} +0 -0
  790. /package/{performance.js → src/performance.js} +0 -0
  791. /package/{performance.node.js → src/performance.node.js} +0 -0
  792. /package/{pledge.js → src/pledge.js} +0 -0
  793. /package/{prng → src/prng}/Mt19937.js +0 -0
  794. /package/{prng → src/prng}/Xoroshiro128plus.js +0 -0
  795. /package/{prng → src/prng}/Xorshift32.js +0 -0
  796. /package/{prng.js → src/prng.js} +0 -0
  797. /package/{promise.js → src/promise.js} +0 -0
  798. /package/{queue.js → src/queue.js} +0 -0
  799. /package/{random.js → src/random.js} +0 -0
  800. /package/{set.js → src/set.js} +0 -0
  801. /package/{sort.js → src/sort.js} +0 -0
  802. /package/{statistics.js → src/statistics.js} +0 -0
  803. /package/{storage.js → src/storage.js} +0 -0
  804. /package/{symbol.js → src/symbol.js} +0 -0
  805. /package/{time.js → src/time.js} +0 -0
  806. /package/{trait → src/trait}/equality.js +0 -0
  807. /package/{trait → src/trait}/fingerprint.js +0 -0
  808. /package/{trait → src/trait}/traits.js +0 -0
  809. /package/{tree.js → src/tree.js} +0 -0
  810. /package/{url.js → src/url.js} +0 -0
  811. /package/{webcrypto.deno.js → src/webcrypto.deno.js} +0 -0
  812. /package/{webcrypto.js → src/webcrypto.js} +0 -0
  813. /package/{webcrypto.node.js → src/webcrypto.node.js} +0 -0
  814. /package/{webcrypto.react-native.js → src/webcrypto.react-native.js} +0 -0
  815. /package/{websocket.js → src/websocket.js} +0 -0
  816. /package/{broadcastchannel.d.ts → types/broadcastchannel.d.ts} +0 -0
  817. /package/{buffer.d.ts → types/buffer.d.ts} +0 -0
  818. /package/{cache.d.ts → types/cache.d.ts} +0 -0
  819. /package/{component.d.ts → types/component.d.ts} +0 -0
  820. /package/{conditions.d.ts → types/conditions.d.ts} +0 -0
  821. /package/{decoding.d.ts → types/decoding.d.ts} +0 -0
  822. /package/{diff.d.ts → types/diff.d.ts} +0 -0
  823. /package/{dist → types}/dom.d.ts +0 -0
  824. /package/{dist → types}/encoding.d.ts +0 -0
  825. /package/{dist → types}/error.d.ts +0 -0
  826. /package/{dist → types}/eventloop.d.ts +0 -0
  827. /package/{dist → types}/indexeddb.d.ts +0 -0
  828. /package/{dist → types}/indexeddbV2.d.ts +0 -0
  829. /package/{dist → types}/iterator.d.ts +0 -0
  830. /package/{dist → types}/json.d.ts +0 -0
  831. /package/{dist → types}/list.d.ts +0 -0
  832. /package/{dist → types}/logging.common.d.ts +0 -0
  833. /package/{dist → types}/logging.d.ts +0 -0
  834. /package/{dist → types}/logging.node.d.ts +0 -0
  835. /package/{dist → types}/map.d.ts +0 -0
  836. /package/{dist → types}/math.d.ts +0 -0
  837. /package/{dist → types}/metric.d.ts +0 -0
  838. /package/{dist → types}/mutex.d.ts +0 -0
  839. /package/{dist → types}/object.d.ts +0 -0
  840. /package/{dist → types}/observable.d.ts +0 -0
  841. /package/{dist → types}/pair.d.ts +0 -0
  842. /package/{dist → types}/performance.d.ts +0 -0
  843. /package/{dist → types}/performance.node.d.ts +0 -0
  844. /package/{dist → types}/pledge.d.ts +0 -0
  845. /package/{dist → types}/prng.d.ts +0 -0
  846. /package/{dist → types}/promise.d.ts +0 -0
  847. /package/{dist → types}/queue.d.ts +0 -0
  848. /package/{dist → types}/random.d.ts +0 -0
  849. /package/{dist → types}/set.d.ts +0 -0
  850. /package/{dist → types}/sort.d.ts +0 -0
  851. /package/{dist → types}/statistics.d.ts +0 -0
  852. /package/{dist → types}/storage.d.ts +0 -0
  853. /package/{dist → types}/symbol.d.ts +0 -0
  854. /package/{dist → types}/time.d.ts +0 -0
  855. /package/{dist → types}/tree.d.ts +0 -0
  856. /package/{dist → types}/url.d.ts +0 -0
  857. /package/{dist → types}/webcrypto.d.ts +0 -0
  858. /package/{dist → types}/webcrypto.deno.d.ts +0 -0
  859. /package/{dist → types}/webcrypto.node.d.ts +0 -0
  860. /package/{dist → types}/webcrypto.react-native.d.ts +0 -0
  861. /package/{dist → types}/websocket.d.ts +0 -0
@@ -37,18 +37,14 @@ import * as prng from '../prng.js'
37
37
  /**
38
38
  * @type {s.Schema<Attribution>}
39
39
  */
40
- export const $attribution = s.$object({
40
+ export const $attribution = /* @__PURE__ */(() => s.$object({
41
41
  insert: s.$array(s.$string).optional,
42
42
  insertAt: s.$number.optional,
43
43
  delete: s.$array(s.$string).optional,
44
44
  deleteAt: s.$number.optional,
45
45
  format: s.$record(s.$string, s.$array(s.$string)).optional,
46
46
  formatAt: s.$number.optional
47
- })
48
-
49
- /**
50
- * @typedef {s.Unwrap<$anyOp>} DeltaOps
51
- */
47
+ }))()
52
48
 
53
49
  /**
54
50
  * @typedef {{ [key: string]: any }} FormattingAttributes
@@ -76,7 +72,7 @@ export const $attribution = s.$object({
76
72
  */
77
73
 
78
74
  /**
79
- * @typedef {AttrInsertOp<any>|AttrDeleteOp<any>|AttrModifyOp} AttrOpAny
75
+ * @typedef {SetAttrOp<any>|DeleteAttrOp<any>|ModifyAttrOp} AttrOpAny
80
76
  */
81
77
 
82
78
  /**
@@ -86,11 +82,11 @@ export const $attribution = s.$object({
86
82
  /**
87
83
  * @type {s.Schema<DeltaAttrOpJSON>}
88
84
  */
89
- export const $deltaMapChangeJson = s.$union(
85
+ export const $deltaMapChangeJson = /* @__PURE__ */(() => s.$union(
90
86
  s.$object({ type: s.$literal('insert'), value: s.$any, prevValue: s.$any.optional, attribution: $attribution.optional }),
91
87
  s.$object({ type: s.$literal('modify'), value: s.$any }),
92
88
  s.$object({ type: s.$literal('delete'), prevValue: s.$any.optional, attribution: $attribution.optional })
93
- )
89
+ ))()
94
90
 
95
91
  /**
96
92
  * @template {{[key:string]: any} | null} Attrs
@@ -131,6 +127,10 @@ export class TextOp extends list.ListNode {
131
127
  this._fingerprint = null
132
128
  }
133
129
 
130
+ get $type () {
131
+ return $textOp
132
+ }
133
+
134
134
  /**
135
135
  * @param {string} newVal
136
136
  */
@@ -196,7 +196,7 @@ export class TextOp extends list.ListNode {
196
196
  }
197
197
 
198
198
  /**
199
- * @template {fingerprintTrait.Fingerprintable} ArrayContent
199
+ * @template {any} ArrayContent
200
200
  */
201
201
  export class InsertOp extends list.ListNode {
202
202
  /**
@@ -227,6 +227,10 @@ export class InsertOp extends list.ListNode {
227
227
  this._fingerprint = null
228
228
  }
229
229
 
230
+ get $type () {
231
+ return $insertOp
232
+ }
233
+
230
234
  /**
231
235
  * @param {ArrayContent} newVal
232
236
  */
@@ -271,7 +275,7 @@ export class InsertOp extends list.ListNode {
271
275
  encoding.writeVarUint(encoder, 1) // insertOp type: 1
272
276
  encoding.writeVarUint(encoder, this.insert.length)
273
277
  this.insert.forEach(ins => {
274
- encoding.writeVarString(encoder, fingerprintTrait.fingerprint(ins))
278
+ encoding.writeVarString(encoder, fingerprintTrait.fingerprint(/** @type {any} */ (ins)))
275
279
  })
276
280
  encoding.writeAny(encoder, this.format)
277
281
  })))
@@ -313,8 +317,7 @@ export class InsertOp extends list.ListNode {
313
317
  }
314
318
 
315
319
  /**
316
- * @template {fingerprintTrait.Fingerprintable} [Children=never]
317
- * @template {string} [Text=never]
320
+ * @template {DeltaConf} [DConf={}]
318
321
  */
319
322
  export class DeleteOp extends list.ListNode {
320
323
  /**
@@ -324,7 +327,7 @@ export class DeleteOp extends list.ListNode {
324
327
  super()
325
328
  this.delete = len
326
329
  /**
327
- * @type {(Children|Text) extends never ? null : (Delta<any,{},Children,Text>?)}
330
+ * @type {Delta<DConf>?}
328
331
  */
329
332
  this.prevValue = null
330
333
  /**
@@ -333,6 +336,10 @@ export class DeleteOp extends list.ListNode {
333
336
  this._fingerprint = null
334
337
  }
335
338
 
339
+ get $type () {
340
+ return $deleteOp
341
+ }
342
+
336
343
  /**
337
344
  * @return {'delete'}
338
345
  */
@@ -358,7 +365,7 @@ export class DeleteOp extends list.ListNode {
358
365
  * @param {number} len
359
366
  */
360
367
  _splice (_offset, len) {
361
- this.prevValue = /** @type {any} */ (this.prevValue?.slice(_offset, len) || null)
368
+ this.prevValue = /** @type {any} */ (this.prevValue ? slice(this.prevValue, _offset, len) : null)
362
369
  this._fingerprint = null
363
370
  this.delete -= len
364
371
  return this
@@ -378,6 +385,11 @@ export class DeleteOp extends list.ListNode {
378
385
  return this.delete === other.delete
379
386
  }
380
387
 
388
+ /**
389
+ * @param {number} start
390
+ * @param {number} end
391
+ * @return {DeleteOp}
392
+ */
381
393
  clone (start = 0, end = this.delete) {
382
394
  return new DeleteOp(end - start)
383
395
  }
@@ -412,6 +424,10 @@ export class RetainOp extends list.ListNode {
412
424
  this._fingerprint = null
413
425
  }
414
426
 
427
+ get $type () {
428
+ return $retainOp
429
+ }
430
+
415
431
  /**
416
432
  * @return {'retain'}
417
433
  */
@@ -467,7 +483,7 @@ export class RetainOp extends list.ListNode {
467
483
  /**
468
484
  * Delta that can be applied on a YType Embed
469
485
  *
470
- * @template {DeltaAny} [DTypes=DeltaAny]
486
+ * @template {Delta} [DTypes=DeltaAny]
471
487
  */
472
488
  export class ModifyOp extends list.ListNode {
473
489
  /**
@@ -498,6 +514,10 @@ export class ModifyOp extends list.ListNode {
498
514
  this._fingerprint = null
499
515
  }
500
516
 
517
+ get $type () {
518
+ return $modifyOp
519
+ }
520
+
501
521
  /**
502
522
  * @return {'modify'}
503
523
  */
@@ -568,10 +588,10 @@ export class ModifyOp extends list.ListNode {
568
588
  }
569
589
 
570
590
  /**
571
- * @template {fingerprintTrait.Fingerprintable} V
591
+ * @template {any} [V=any]
572
592
  * @template {string|number} [K=any]
573
593
  */
574
- export class AttrInsertOp {
594
+ export class SetAttrOp {
575
595
  /**
576
596
  * @param {K} key
577
597
  * @param {V} value
@@ -605,6 +625,10 @@ export class AttrInsertOp {
605
625
  this._fingerprint = null
606
626
  }
607
627
 
628
+ get $type () {
629
+ return $setAttrOp
630
+ }
631
+
608
632
  /**
609
633
  * @return {'insert'}
610
634
  */
@@ -635,7 +659,7 @@ export class AttrInsertOp {
635
659
  encoding.writeVarString(encoder, this.value.fingerprint)
636
660
  } else {
637
661
  encoding.writeUint8(encoder, 1)
638
- encoding.writeAny(encoder, this.value)
662
+ encoding.writeAny(encoder, /** @type {any} */ (this.value))
639
663
  }
640
664
  })))
641
665
  }
@@ -651,25 +675,25 @@ export class AttrInsertOp {
651
675
  }
652
676
 
653
677
  /**
654
- * @param {AttrInsertOp<V>} other
678
+ * @param {SetAttrOp<V>} other
655
679
  */
656
680
  [equalityTrait.EqualityTraitSymbol] (other) {
657
681
  return this.key === other.key && fun.equalityDeep(this.value, other.value) && fun.equalityDeep(this.attribution, other.attribution)
658
682
  }
659
683
 
660
684
  /**
661
- * @return {AttrInsertOp<V,K>}
685
+ * @return {SetAttrOp<V,K>}
662
686
  */
663
687
  clone () {
664
- return new AttrInsertOp(this.key, _markMaybeDeltaAsDone(this.value), _markMaybeDeltaAsDone(this.prevValue), _cloneAttrs(this.attribution))
688
+ return new SetAttrOp(this.key, _markMaybeDeltaAsDone(this.value), _markMaybeDeltaAsDone(this.prevValue), _cloneAttrs(this.attribution))
665
689
  }
666
690
  }
667
691
 
668
692
  /**
669
- * @template V
670
- * @template {string|number} [K=string]
693
+ * @template [V=any]
694
+ * @template {string|number} [K=string|number]
671
695
  */
672
- export class AttrDeleteOp {
696
+ export class DeleteAttrOp {
673
697
  /**
674
698
  * @param {K} key
675
699
  * @param {V|undefined} prevValue
@@ -691,13 +715,17 @@ export class AttrDeleteOp {
691
715
  this._fingerprint = null
692
716
  }
693
717
 
694
- get value () { return undefined }
718
+ get $type () {
719
+ return $deleteAttrOp
720
+ }
695
721
 
696
722
  /**
697
723
  * @type {'delete'}
698
724
  */
699
725
  get type () { return 'delete' }
700
726
 
727
+ get value () { return undefined }
728
+
701
729
  get fingerprint () {
702
730
  return this._fingerprint || (this._fingerprint = buffer.toBase64(encoding.encode(encoder => {
703
731
  encoding.writeVarUint(encoder, 6) // map delete type: 6
@@ -716,14 +744,14 @@ export class AttrDeleteOp {
716
744
  }
717
745
 
718
746
  /**
719
- * @param {AttrDeleteOp<V>} other
747
+ * @param {DeleteAttrOp<V>} other
720
748
  */
721
749
  [equalityTrait.EqualityTraitSymbol] (other) {
722
750
  return this.key === other.key && fun.equalityDeep(this.attribution, other.attribution)
723
751
  }
724
752
 
725
753
  clone () {
726
- return new AttrDeleteOp(this.key, _markMaybeDeltaAsDone(this.prevValue), _cloneAttrs(this.attribution))
754
+ return new DeleteAttrOp(this.key, _markMaybeDeltaAsDone(this.prevValue), _cloneAttrs(this.attribution))
727
755
  }
728
756
  }
729
757
 
@@ -731,7 +759,7 @@ export class AttrDeleteOp {
731
759
  * @template {DeltaAny} [Modifier=DeltaAny]
732
760
  * @template {string|number} [K=string]
733
761
  */
734
- export class AttrModifyOp {
762
+ export class ModifyAttrOp {
735
763
  /**
736
764
  * @param {K} key
737
765
  * @param {Modifier} delta
@@ -753,6 +781,10 @@ export class AttrModifyOp {
753
781
  this._fingerprint = null
754
782
  }
755
783
 
784
+ get $type () {
785
+ return $modifyAttrOp
786
+ }
787
+
756
788
  /**
757
789
  * @type {'modify'}
758
790
  */
@@ -790,78 +822,59 @@ export class AttrModifyOp {
790
822
  }
791
823
 
792
824
  /**
793
- * @param {AttrModifyOp<Modifier>} other
825
+ * @param {ModifyAttrOp<Modifier>} other
794
826
  */
795
827
  [equalityTrait.EqualityTraitSymbol] (other) {
796
828
  return this.key === other.key && this.value[equalityTrait.EqualityTraitSymbol](other.value)
797
829
  }
798
830
 
799
831
  /**
800
- * @return {AttrModifyOp<Modifier,K>}
832
+ * @return {ModifyAttrOp<Modifier,K>}
801
833
  */
802
834
  clone () {
803
- return new AttrModifyOp(this.key, /** @type {Modifier} */ (this.value.done()))
835
+ return new ModifyAttrOp(this.key, /** @type {Modifier} */ (this.value.done()))
804
836
  }
805
837
  }
806
838
 
807
- /**
808
- * @type {s.Schema<AttrDeleteOp<any> | DeleteOp>}
809
- */
810
- export const $deleteOp = s.$custom(o => o != null && (o.constructor === DeleteOp || o.constructor === AttrDeleteOp))
839
+ export const $insertOp = /** @type {s.Schema<InsertOp<any>>} */ (s.$type('insertOp'))
840
+ export const $modifyOp = /** @type {s.Schema<ModifyOp>} */ (s.$type('modifyOp'))
841
+ export const $textOp = /** @type {s.Schema<TextOp>} */ (s.$type('textOp'))
842
+ export const $deleteOp = /** @type {s.Schema<DeleteOp<any>>} */ (s.$type('deleteOp'))
843
+ export const $retainOp = /** @type {s.Schema<RetainOp>} */ (s.$type('retainOp'))
844
+ export const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)
811
845
 
812
- /**
813
- * @type {s.Schema<AttrInsertOp<any> | InsertOp<any>>}
814
- */
815
- export const $insertOp = s.$custom(o => o != null && (o.constructor === AttrInsertOp || o.constructor === InsertOp))
846
+ export const $setAttrOp = /** @type {s.Schema<SetAttrOp<any>>} */ (s.$type('setAttrOp'))
847
+ export const $modifyAttrOp = /** @type {s.Schema<ModifyAttrOp<any,string|number>>} */ (s.$type('modifyAttrOp'))
848
+ export const $deleteAttrOp = /** @type {s.Schema<DeleteAttrOp<any,string|number>>} */ (s.$type('deleteAttrOp'))
849
+ export const $anyAttrOp = s.$union($setAttrOp, $deleteAttrOp, $modifyAttrOp)
816
850
 
817
851
  /**
818
852
  * @template {fingerprintTrait.Fingerprintable} Content
819
853
  * @param {s.Schema<Content>} $content
820
- * @return {s.Schema<AttrInsertOp<Content> | InsertOp<Content>>}
821
- */
822
- export const $insertOpWith = $content => s.$custom(o =>
823
- o != null && (
824
- (o.constructor === AttrInsertOp && $content.check(/** @type {AttrInsertOp<Content>} */ (o).value)) ||
825
- (o.constructor === InsertOp && /** @type {InsertOp<Content>} */ (o).insert.every(ins => $content.check(ins)))
826
- )
827
- )
828
-
829
- /**
830
- * @type {s.Schema<TextOp>}
854
+ * @return {s.Schema<SetAttrOp<Content>>}
831
855
  */
832
- export const $textOp = s.$constructedBy(TextOp)
856
+ export const $setAttrOpWith = $content => s.$custom(o => $setAttrOp.check(o) && $content.check(o.value))
833
857
 
834
858
  /**
835
- * @type {s.Schema<RetainOp>}
836
- */
837
- export const $retainOp = s.$constructedBy(RetainOp)
838
-
839
- /**
840
- * @type {s.Schema<AttrModifyOp | ModifyOp>}
859
+ * @template {fingerprintTrait.Fingerprintable} Content
860
+ * @param {s.Schema<Content>} $content
861
+ * @return {s.Schema<InsertOp<Content>>}
841
862
  */
842
- export const $modifyOp = s.$custom(o => o != null && (o.constructor === AttrModifyOp || o.constructor === ModifyOp))
863
+ export const $insertOpWith = $content => s.$custom(o => $insertOp.check(o) && $content.check(o.insert.every(ins => $content.check(ins))))
843
864
 
844
865
  /**
845
866
  * @template {DeltaAny} Modify
846
867
  * @param {s.Schema<Modify>} $content
847
- * @return {s.Schema<AttrModifyOp<Modify> | ModifyOp<Modify>>}
868
+ * @return {s.Schema<ModifyOp<Modify>>}
848
869
  */
849
- export const $modifyOpWith = $content => s.$custom(o =>
850
- o != null && (
851
- (o.constructor === AttrModifyOp && $content.check(/** @type {AttrModifyOp<Modify>} */ (o).value)) ||
852
- (o.constructor === ModifyOp && $content.check(/** @type {ModifyOp<Modify>} */ (o).value))
853
- )
854
- )
855
-
856
- export const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)
870
+ export const $modifyOpWith = $content => s.$custom(o => $modifyOp.check(o) && $content.check(o.value))
857
871
 
858
872
  /**
859
- * @template {Array<any>|string} C1
860
- * @template {Array<any>|string} C2
861
- * @typedef {Extract<C1 | C2, Array<any>> extends never
862
- * ? never
863
- * : (Array<(Extract<C1 | C2,Array<any>> extends Array<infer AC1> ? (unknown extends AC1 ? never : AC1) : never)>)} MergeListArrays
873
+ * @template {DeltaAny} Modify
874
+ * @param {s.Schema<Modify>} $content
875
+ * @return {s.Schema<ModifyAttrOp<Modify>>}
864
876
  */
877
+ export const $modifyAttrOpWith = $content => s.$custom(o => $modifyAttrOp.check(o) && $content.check(/** @type {ModifyAttrOp<Modify>} */ (o).value))
865
878
 
866
879
  /**
867
880
  * @template {{[Key in string|number]: any}} Attrs
@@ -877,40 +890,104 @@ export const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)
877
890
  */
878
891
 
879
892
  /**
880
- * @template X
881
- * @typedef {0 extends (1 & X) ? null : X} _AnyToNull
893
+ * @typedef {Delta<any>} DeltaAny
882
894
  */
883
895
 
884
896
  /**
885
- * @template {s.Schema<Delta<any,any,any,any,any>>|null} Schema
886
- * @typedef {_AnyToNull<Schema> extends null ? Delta<any,{[key:string|number]:any},any,string> : (Schema extends s.Schema<infer D> ? D : never)} AllowedDeltaFromSchema
897
+ * @typedef {DeltaBuilder<any>} DeltaBuilderAny
887
898
  */
888
899
 
889
900
  /**
890
- * @typedef {Delta<any,{ [k:string|number]: any },any,any,any>} DeltaAny
901
+ * @typedef {object} DeltaConf
902
+ * @property {string} [DeltaConf.name]
903
+ * @property {fingerprintTrait.Fingerprintable} [DeltaConf.children=never]
904
+ * @property {boolean} [DeltaConf.text=never]
905
+ * @property {{[K:string|number]:fingerprintTrait.Fingerprintable}} [DeltaConf.attrs={}]
906
+ * @property {boolean} [DeltaConf.fixed=never]
907
+ * @property {boolean} [DeltaConf.recursiveChildren=false]
908
+ * @property {boolean} [DeltaConf.recursiveAttrs=false]
891
909
  */
910
+
911
+ /**
912
+ * @template {DeltaConf} DConf
913
+ * @typedef {DConf extends {name:infer Name} ? (unknown extends Name ? any : (Exclude<Name,undefined>)) : any} DeltaConfGetName
914
+ */
915
+
916
+ /**
917
+ * @template {DeltaConf} DConf
918
+ * @typedef {(DConf extends {children:infer Children} ? (unknown extends Children ? any : Children) : never) | (DConf extends {recursiveChildren:true} ? Delta<DConf> : never)} DeltaConfGetChildren
919
+ */
920
+
892
921
  /**
893
- * @typedef {DeltaBuilder<any,{ [k:string|number]: any },any,any,any>} DeltaBuilderAny
922
+ * @template {DeltaConf} DConf
923
+ * @typedef {DConf extends {fixed:true} ? DeltaConfGetChildren<DConf> : any } DeltaConfGetAllowedChildren
894
924
  */
895
925
 
896
926
  /**
897
- * @template {string} [NodeName=any]
898
- * @template {{[k:string|number]:any}} [Attrs={}]
899
- * @template {fingerprintTrait.Fingerprintable} [Children=never]
900
- * @template {string} [Text=never]
901
- * @template {s.Schema<Delta<any,any,any,any,any>>|null} [Schema=any]
927
+ * @template {DeltaConf} DConf
928
+ * @typedef {0 extends (1 & DConf) ? string : (DConf extends {text:true} ? string : never)} DeltaConfGetText
902
929
  */
903
- export class Delta {
930
+
931
+ /**
932
+ * @template {DeltaConf} DConf
933
+ * @typedef {import('../ts.js').TypeIsAny<DConf, {[K:string|number]:any}, (DConf extends {attrs:infer Attrs} ? (Attrs extends undefined ? {} : Attrs) : {})>} DeltaConfGetAttrs
934
+ */
935
+
936
+ /**
937
+ * @template {DeltaConf} DConf
938
+ * @typedef {DConf extends {fixed:true} ? DeltaConfGetAttrs<DConf> : {[K:string|number]:any}} DeltaConfGetAllowedAttrs
939
+ */
940
+
941
+ /**
942
+ * @template {DeltaConf} DConf
943
+ * @typedef {0 extends (1 & DConf) ? true : (DConf extends { fixed: true } ? true : false)} DeltaConfGetFixed
944
+ */
945
+
946
+ /**
947
+ * @template {DeltaConf} DConf
948
+ * @typedef {DConf extends {recursiveChildren:true} ? true : false} DeltaConfGetRecursiveChildren
949
+ */
950
+
951
+ /**
952
+ * @template {DeltaConf} DConf
953
+ * @typedef {DConf extends {recursiveAttrs:true} ? true : false} DeltaConfigGetRecursiveAttrs
954
+ */
955
+
956
+ /**
957
+ * Transform Delta(Builder) to a normal delta.
958
+ *
959
+ * @template V
960
+ * @typedef {V extends never ? never : (import('../ts.js').TypeIsAny<V,any,V extends Delta<infer DConf> ? Delta<DConf> : V>)} _SanifyDelta
961
+ */
962
+
963
+ /**
964
+ * @template {DeltaConf} DConf
965
+ * @typedef {import('../ts.js').Prettify<{[K in keyof DConf]: K extends 'attrs' ? import('../ts.js').Prettify<{ [KA in keyof DConf[K]]: _SanifyDelta<DConf[K][KA]> },1> : (K extends 'children' ? _SanifyDelta<DConf[K]> : DConf[K]) }, 1>} PrettifyDeltaConf
966
+ */
967
+
968
+ /**
969
+ * @template {DeltaConf} D1
970
+ * @template {DeltaConf} D2
971
+ * @typedef {import('../ts.js').TypeIsAny<D1, any, PrettifyDeltaConf<{[K in (keyof D1|keyof D2)]: K extends keyof D2 ? D2[K] : (K extends keyof D1 ? D1[K] : never)}>>} DeltaConfOverwrite
972
+ */
973
+
974
+ /**
975
+ * @template {string} Name
976
+ * @template {{[K in string|number]:any}} Attrs
977
+ * @template Children
978
+ * @template {boolean} Text
979
+ */
980
+ class DeltaData {
904
981
  /**
905
- * @param {NodeName} [name]
906
- * @param {Schema} [$schema]
982
+ * @param {string?} name
983
+ * @param {s.Schema<Delta<any>>?} $schema
907
984
  */
908
985
  constructor (name, $schema) {
909
- this.name = name || null
910
- this.$schema = $schema || null
986
+ this.name = /** @type {Name} */ (name)
987
+ this.$schema = $schema
911
988
  /**
912
- * @type {{ [K in keyof Attrs]?: K extends string|number ? (AttrInsertOp<Attrs[K],K>|AttrDeleteOp<Attrs[K],K>|(Delta extends Attrs[K] ? AttrModifyOp<Extract<Attrs[K],DeltaAny>,K> : never)) : never }
913
- * & { [Symbol.iterator]: () => Iterator<{ [K in keyof Attrs]: K extends string|number ? (AttrInsertOp<Attrs[K],K>|AttrDeleteOp<Attrs[K],K>|(Delta extends Attrs[K] ? AttrModifyOp<Extract<Attrs[K],DeltaAny>,K> : never)) : never }[keyof Attrs]> }
989
+ * @type {{ [K in keyof Attrs]?: K extends string|number ? (SetAttrOp<Attrs[K],K>|DeleteAttrOp<Attrs[K],K>|(Attrs[K] extends never ? never : (Attrs[K] extends Delta ? ModifyAttrOp<Extract<Attrs[K],Delta>,K> : never))) : never }
990
+ * & { [Symbol.iterator]: () => Iterator<{ [K in keyof Attrs]: K extends string|number ? (SetAttrOp<Attrs[K],K>|DeleteAttrOp<Attrs[K],K>|(Attrs[K] extends never ? never : (Delta extends Attrs[K] ? ModifyAttrOp<Extract<Attrs[K],Delta>,K> : never))) : never }[keyof Attrs]> }
914
991
  * }
915
992
  */
916
993
  this.attrs = /** @type {any} */ ({
@@ -923,11 +1000,8 @@ export class Delta {
923
1000
 
924
1001
  /**
925
1002
  * @type {list.List<
926
- * RetainOp
927
- * | DeleteOp
928
- * | (Text extends never ? never : TextOp)
929
- * | (Children extends never ? never : InsertOp<Children>)
930
- * | (Delta extends Children ? ModifyOp<Extract<Children,Delta<any,any,any,any,any>>> : never)
1003
+ * | (Text extends true ? (RetainOp|TextOp|DeleteOp<any>) : never)
1004
+ * | (RetainOp|InsertOp<Children>|DeleteOp<any>|(Delta extends Children ? ModifyOp<Extract<Children,Delta>> : never))
931
1005
  * >}
932
1006
  */
933
1007
  this.children = /** @type {any} */ (list.create())
@@ -942,7 +1016,19 @@ export class Delta {
942
1016
  this._fingerprint = null
943
1017
  this.isDone = false
944
1018
  }
1019
+ }
945
1020
 
1021
+ /**
1022
+ * @template {DeltaConf} [DConf={}]
1023
+ * @extends {DeltaData<
1024
+ * DeltaConfGetName<DConf>,
1025
+ * DeltaConfGetAttrs<DConf>,
1026
+ * DeltaConfGetChildren<DConf>,
1027
+ * DConf extends {text:true} ? true : false
1028
+ * >}
1029
+ */
1030
+ export class Delta extends DeltaData {
1031
+ get $type () { return $deltaAny }
946
1032
  /**
947
1033
  * @type {string}
948
1034
  */
@@ -1014,7 +1100,7 @@ export class Delta {
1014
1100
  }
1015
1101
 
1016
1102
  /**
1017
- * @param {Delta<any,any,any,any,any>} other
1103
+ * @param {Delta<any>} other
1018
1104
  * @return {boolean}
1019
1105
  */
1020
1106
  equals (other) {
@@ -1031,68 +1117,27 @@ export class Delta {
1031
1117
  return this.name === other.name && fun.equalityDeep(this.attrs, other.attrs) && fun.equalityDeep(this.children, other.children) && this.childCnt === other.childCnt
1032
1118
  }
1033
1119
 
1034
- /**
1035
- * @return {DeltaBuilder<NodeName,Attrs,Children,Text,Schema>}
1036
- */
1037
- clone () {
1038
- return this.slice(0, this.childCnt)
1039
- }
1040
-
1041
- /**
1042
- * @param {number} start
1043
- * @param {number} end
1044
- * @return {DeltaBuilder<NodeName,Attrs,Children,Text,Schema>}
1045
- */
1046
- slice (start = 0, end = this.childCnt) {
1047
- const cpy = /** @type {DeltaAny} */ (new DeltaBuilder(/** @type {any} */ (this.name), this.$schema))
1048
- cpy.origin = this.origin
1049
- // copy attrs
1050
- for (const op of this.attrs) {
1051
- cpy.attrs[op.key] = /** @type {any} */ (op.clone())
1052
- }
1053
- // copy children
1054
- const slicedLen = end - start
1055
- let remainingLen = slicedLen
1056
- /**
1057
- * @type {ChildrenOpAny?}
1058
- */
1059
- let currNode = this.children.start
1060
- let currNodeOffset = 0
1061
- while (start > 0 && currNode != null) {
1062
- if (currNode.length <= start) {
1063
- start -= currNode.length
1064
- currNode = currNode.next
1065
- } else {
1066
- currNodeOffset = start
1067
- start = 0
1068
- }
1069
- }
1070
- if (currNodeOffset > 0 && currNode) {
1071
- const ncpy = currNode.clone(currNodeOffset, currNodeOffset + math.min(remainingLen, currNode.length - currNodeOffset))
1072
- list.pushEnd(cpy.children, ncpy)
1073
- remainingLen -= ncpy.length
1074
- currNode = currNode.next
1075
- }
1076
- while (currNode != null && currNode.length <= remainingLen) {
1077
- list.pushEnd(cpy.children, currNode.clone())
1078
- remainingLen -= currNode.length
1079
- currNode = currNode.next
1080
- }
1081
- if (currNode != null && remainingLen > 0) {
1082
- list.pushEnd(cpy.children, currNode.clone(0, remainingLen))
1083
- remainingLen -= math.min(currNode.length, remainingLen)
1084
- }
1085
- cpy.childCnt = slicedLen - remainingLen
1086
- // @ts-ignore
1087
- return cpy
1088
- }
1089
-
1120
+ // toString () {
1121
+ // /**
1122
+ // * @type {Array<[string|number,string]>}
1123
+ // */
1124
+ // const attrs = []
1125
+ // for (const attr of this.attrs) {
1126
+ // attrs.push([attr.key, $deleteAttrOp.check(attr) ? 'delete' : attr.type + ' ' + (attr.value?.toString() ?? attr.value)])
1127
+ // }
1128
+ // attrs.sort((a, b) => a[0].toString() < b[0].toString() ? -1 : 1)
1129
+ // const attrsString = attrs.map(attr => `${attr[0]} = ${attr[1]}`).join(', ')
1130
+ // if (this.childCnt === 0) return `<${this.name ?? ''} ${attrsString}/>`
1131
+ // this.children.toArray() drnt
1132
+ // return '<>'
1133
+ // }
1134
+ //
1090
1135
  /**
1091
1136
  * Mark this delta as done and perform some cleanup (e.g. remove appended retains without
1092
1137
  * formats&attributions). In the future, there might be additional merge operations that can be
1093
1138
  * performed to result in smaller deltas. Set `markAsDone=false` to only perform the cleanup.
1094
1139
  *
1095
- * @return {Delta<NodeName,Attrs,Children,Text,Schema>}
1140
+ * @return {Delta<DConf>}
1096
1141
  */
1097
1142
  done (markAsDone = true) {
1098
1143
  if (!this.isDone) {
@@ -1107,17 +1152,66 @@ export class Delta {
1107
1152
  }
1108
1153
  }
1109
1154
 
1155
+ /**
1156
+ * @template {DeltaConf} DConf
1157
+ * @param {Delta<DConf>} d
1158
+ * @param {number} start
1159
+ * @param {number} end
1160
+ * @param {ChildrenOpAny?} currNode - start slicing at this node (instead of d.children.start)
1161
+ * @return {DeltaBuilder<DConf>}
1162
+ */
1163
+ export const slice = (d, start = 0, end = d.childCnt, currNode = d.children.start) => {
1164
+ const cpy = /** @type {DeltaAny} */ (new DeltaBuilder(d.name, d.$schema))
1165
+ cpy.origin = d.origin
1166
+ // copy attrs
1167
+ for (const op of d.attrs) {
1168
+ // @ts-ignore
1169
+ cpy.attrs[op.key] = /** @type {any} */ (op.clone())
1170
+ }
1171
+ // copy children
1172
+ const slicedLen = end - start
1173
+ let remainingLen = slicedLen
1174
+ let currNodeOffset = 0
1175
+ while (start > 0 && currNode != null) {
1176
+ if (currNode.length <= start) {
1177
+ start -= currNode.length
1178
+ currNode = currNode.next
1179
+ } else {
1180
+ currNodeOffset = start
1181
+ start = 0
1182
+ }
1183
+ }
1184
+ if (currNodeOffset > 0 && currNode) {
1185
+ const ncpy = currNode.clone(currNodeOffset, currNodeOffset + math.min(remainingLen, currNode.length - currNodeOffset))
1186
+ list.pushEnd(cpy.children, ncpy)
1187
+ remainingLen -= ncpy.length
1188
+ currNode = currNode.next
1189
+ }
1190
+ while (currNode != null && currNode.length <= remainingLen) {
1191
+ list.pushEnd(cpy.children, currNode.clone())
1192
+ remainingLen -= currNode.length
1193
+ currNode = currNode.next
1194
+ }
1195
+ if (currNode != null && remainingLen > 0) {
1196
+ list.pushEnd(cpy.children, currNode.clone(0, remainingLen))
1197
+ remainingLen -= math.min(currNode.length, remainingLen)
1198
+ }
1199
+ cpy.childCnt = slicedLen - remainingLen
1200
+ // @ts-ignore
1201
+ return cpy
1202
+ }
1203
+
1110
1204
  /**
1111
1205
  * @template {DeltaAny} D
1112
1206
  * @param {D} d
1113
- * @return {D extends DeltaBuilder<infer NodeName,infer Attrs,infer Children,infer Text,infer Schema> ? DeltaBuilder<NodeName,Attrs,Children,Text,Schema> : never}
1207
+ * @return {D extends Delta<infer DConf> ? DeltaBuilder<DConf> : never}
1114
1208
  */
1115
- export const clone = d => /** @type {any} */ (d.slice(0, d.childCnt))
1209
+ export const clone = d => /** @type {any} */ (slice(d, 0, d.childCnt))
1116
1210
 
1117
1211
  /**
1118
1212
  * Try merging this op with the previous op
1119
1213
  * @param {list.List<any>} parent
1120
- * @param {InsertOp<any>|RetainOp|DeleteOp|TextOp|ModifyOp<any>} op
1214
+ * @param {InsertOp<any>|RetainOp|DeleteOp<any>|TextOp|ModifyOp<any>} op
1121
1215
  */
1122
1216
  const tryMergeWithPrev = (parent, op) => {
1123
1217
  const prevOp = op.prev
@@ -1137,7 +1231,7 @@ const tryMergeWithPrev = (parent, op) => {
1137
1231
  // @ts-ignore
1138
1232
  /** @type {RetainOp} */ (prevOp).retain += op.retain
1139
1233
  } else if ($deleteOp.check(op)) {
1140
- /** @type {DeleteOp} */ (prevOp).delete += op.delete
1234
+ /** @type {DeleteOp<any>} */ (prevOp).delete += op.delete
1141
1235
  } else if ($textOp.check(op)) {
1142
1236
  /** @type {TextOp} */ (prevOp)._updateInsert(/** @type {TextOp} */ (prevOp).insert + op.insert)
1143
1237
  } else {
@@ -1162,17 +1256,13 @@ const modDeltaCheck = d => {
1162
1256
  }
1163
1257
 
1164
1258
  /**
1165
- * @template {string} [NodeName=any]
1166
- * @template {{[key:string|number]:any}} [Attrs={}]
1167
- * @template {fingerprintTrait.Fingerprintable} [Children=never]
1168
- * @template {string} [Text=never]
1169
- * @template {s.Schema<Delta<any,any,any,any,any>>|null} [Schema=any]
1170
- * @extends {Delta<NodeName,Attrs,Children,Text,Schema>}
1259
+ * @template {DeltaConf} [DConf={}]
1260
+ * @extends {Delta<DConf>}
1171
1261
  */
1172
1262
  export class DeltaBuilder extends Delta {
1173
1263
  /**
1174
- * @param {NodeName} [name]
1175
- * @param {Schema} [$schema]
1264
+ * @param {string?} name
1265
+ * @param {s.Schema<Delta<DConf>>?} $schema
1176
1266
  */
1177
1267
  constructor (name, $schema) {
1178
1268
  super(name, $schema)
@@ -1245,17 +1335,14 @@ export class DeltaBuilder extends Delta {
1245
1335
  }
1246
1336
 
1247
1337
  /**
1248
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,any,infer Children,infer Text,infer Schema> ? ((Children extends never ? never : Array<Children>) | Text) : never} NewContent
1338
+ * @template {(DConf extends {fixed:true} ? never : (Array<any>|string)) | (DeltaConfGetChildren<DConf> extends infer Children ? (Children extends never ? never : Array<Children>) : never) | DeltaConfGetText<DConf>} NewContent
1249
1339
  * @param {NewContent} insert
1250
1340
  * @param {FormattingAttributes?} [formatting]
1251
1341
  * @param {Attribution?} [attribution]
1252
- * @return {DeltaBuilder<
1253
- * NodeName,
1254
- * Attrs,
1255
- * Exclude<NewContent,string>[number]|Children,
1256
- * (Extract<NewContent,string>|Text) extends never ? never : string,
1257
- * Schema
1258
- * >}
1342
+ * @return {DeltaBuilder<DConf extends {fixed: true} ? DConf : DeltaConfOverwrite<DConf,
1343
+ * (Exclude<NewContent,string> extends never ? {} : {
1344
+ * children: Exclude<NewContent,string>[number]|DeltaConfGetChildren<DConf>
1345
+ * }) & (Extract<NewContent,string> extends never ? {} : { text: true })>>}
1259
1346
  */
1260
1347
  insert (insert, formatting = null, attribution = null) {
1261
1348
  modDeltaCheck(this)
@@ -1279,7 +1366,7 @@ export class DeltaBuilder extends Delta {
1279
1366
  end.insert.push(...insert)
1280
1367
  end._fingerprint = null
1281
1368
  } else if (insert.length > 0) {
1282
- list.pushEnd(this.children, new InsertOp(insert, object.isEmpty(mergedAttributes) ? null : mergedAttributes, object.isEmpty(mergedAttribution) ? null : mergedAttribution))
1369
+ list.pushEnd(this.children, new InsertOp(insert.slice() /* ensures that we don't reuse an existing array */, object.isEmpty(mergedAttributes) ? null : mergedAttributes, object.isEmpty(mergedAttribution) ? null : mergedAttribution))
1283
1370
  }
1284
1371
  this.childCnt += insert.length
1285
1372
  }
@@ -1287,17 +1374,11 @@ export class DeltaBuilder extends Delta {
1287
1374
  }
1288
1375
 
1289
1376
  /**
1290
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,any,infer Children,any,any> ? Extract<Children,Delta<any,any,any,any,any>> : never} NewContent
1377
+ * @template {Extract<DeltaConfGetAllowedChildren<DConf>,Delta>} NewContent
1291
1378
  * @param {NewContent} modify
1292
1379
  * @param {FormattingAttributes?} formatting
1293
1380
  * @param {Attribution?} attribution
1294
- * @return {DeltaBuilder<
1295
- * NodeName,
1296
- * Attrs,
1297
- * Exclude<NewContent,string>[number]|Children,
1298
- * (Extract<NewContent,string>|Text) extends string ? string : never,
1299
- * Schema
1300
- * >}
1381
+ * @return {DeltaBuilder<DeltaConfOverwrite<DConf, {children: DeltaConfGetChildren<DConf>|NewContent}>>}
1301
1382
  */
1302
1383
  modify (modify, formatting = null, attribution = null) {
1303
1384
  modDeltaCheck(this)
@@ -1318,7 +1399,7 @@ export class DeltaBuilder extends Delta {
1318
1399
  const mergedFormats = mergeAttrs(this.usedAttributes, format)
1319
1400
  const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)
1320
1401
  const lastOp = /** @type {RetainOp|InsertOp<any>} */ (this.children.end)
1321
- if (lastOp instanceof RetainOp && fun.equalityDeep(mergedFormats, lastOp.format) && fun.equalityDeep(mergedAttribution, lastOp.attribution)) {
1402
+ if ($retainOp.check(lastOp) && fun.equalityDeep(mergedFormats, lastOp.format) && fun.equalityDeep(mergedAttribution, lastOp.attribution)) {
1322
1403
  // @ts-ignore
1323
1404
  lastOp.retain += len
1324
1405
  } else if (len > 0) {
@@ -1333,8 +1414,8 @@ export class DeltaBuilder extends Delta {
1333
1414
  */
1334
1415
  delete (len) {
1335
1416
  modDeltaCheck(this)
1336
- const lastOp = /** @type {DeleteOp|InsertOp<any>} */ (this.children.end)
1337
- if (lastOp instanceof DeleteOp) {
1417
+ const lastOp = /** @type {DeleteOp<any>|InsertOp<any>} */ (this.children.end)
1418
+ if ($deleteOp.check(lastOp)) {
1338
1419
  lastOp.delete += len
1339
1420
  } else if (len > 0) {
1340
1421
  list.pushEnd(this.children, new DeleteOp(len))
@@ -1344,94 +1425,81 @@ export class DeltaBuilder extends Delta {
1344
1425
  }
1345
1426
 
1346
1427
  /**
1347
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? (keyof Attrs) : never} Key
1348
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? (Attrs[Key]) : never} Val
1428
+ * @template {keyof DeltaConfGetAllowedAttrs<DConf>} Key
1429
+ * @template {DeltaConfGetAllowedAttrs<DConf>[Key]} Val
1349
1430
  * @param {Key} key
1350
1431
  * @param {Val} val
1351
1432
  * @param {Attribution?} attribution
1352
1433
  * @param {Val|undefined} [prevValue]
1353
- * @return {DeltaBuilder<
1354
- * NodeName,
1355
- * { [K in keyof AddToAttrs<Attrs,Key,Val>]: AddToAttrs<Attrs,Key,Val>[K] },
1356
- * Children,
1357
- * Text,
1358
- * Schema
1359
- * >}
1360
- */
1361
- set (key, val, attribution = null, prevValue) {
1434
+ * @return {DeltaBuilder<DeltaConfOverwrite<DConf,{attrs:AddToAttrs<DeltaConfGetAttrs<DConf>,Key,Val>}>>}
1435
+ */
1436
+ setAttr (key, val, attribution = null, prevValue) {
1362
1437
  modDeltaCheck(this)
1363
- this.attrs[key] = /** @type {any} */ (new AttrInsertOp(key, val, prevValue, mergeAttrs(this.usedAttribution, attribution)))
1438
+ // @ts-ignore
1439
+ this.attrs[key] /** @type {any} */ =
1440
+ (new SetAttrOp(/** @type {any} */ (key), val, prevValue, mergeAttrs(this.usedAttribution, attribution)))
1364
1441
  return /** @type {any} */ (this)
1365
1442
  }
1366
1443
 
1367
1444
  /**
1368
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? Attrs : never} NewAttrs
1445
+ * @template {DeltaConfGetAllowedAttrs<DConf>} NewAttrs
1369
1446
  * @param {NewAttrs} attrs
1370
1447
  * @param {Attribution?} attribution
1371
- * @return {DeltaBuilder<
1372
- * NodeName,
1373
- * { [K in keyof MergeAttrs<Attrs,NewAttrs>]: MergeAttrs<Attrs,NewAttrs>[K] },
1374
- * Children,
1375
- * Text,
1376
- * Schema
1377
- * >}
1378
- */
1379
- setMany (attrs, attribution = null) {
1448
+ * @return {DeltaBuilder<DeltaConfOverwrite<
1449
+ * DConf,
1450
+ * { attrs: MergeAttrs<DeltaConfGetAttrs<DConf>,NewAttrs> }
1451
+ * >>
1452
+ * }
1453
+ */
1454
+ setAttrs (attrs, attribution = null) {
1380
1455
  modDeltaCheck(this)
1381
1456
  for (const k in attrs) {
1382
- this.set(/** @type {any} */ (k), attrs[k], attribution)
1457
+ this.setAttr(/** @type {any} */ (k), /** @type {any} */ (attrs)[/** @type {any} */ (k)], attribution)
1383
1458
  }
1384
1459
  return /** @type {any} */ (this)
1385
1460
  }
1386
1461
 
1387
1462
  /**
1388
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer As,any,any,any> ? keyof As : never} Key
1463
+ * @template {keyof DeltaConfGetAllowedAttrs<DConf>} Key
1389
1464
  * @param {Key} key
1390
1465
  * @param {Attribution?} attribution
1391
1466
  * @param {any} [prevValue]
1392
- * @return {DeltaBuilder<
1393
- * NodeName,
1394
- * { [K in keyof AddToAttrs<Attrs,Key,never>]: AddToAttrs<Attrs,Key,never>[K] },
1395
- * Children,
1396
- * Text,
1397
- * Schema
1398
- * >}
1399
- */
1400
- unset (key, attribution = null, prevValue) {
1467
+ * @return {DeltaBuilder<DeltaConfOverwrite<DConf, {
1468
+ * attrs: AddToAttrs<DeltaConfGetAttrs<DConf>,Key,never>
1469
+ * }>>}
1470
+ */
1471
+ deleteAttr (key, attribution = null, prevValue) {
1401
1472
  modDeltaCheck(this)
1402
- this.attrs[key] = /** @type {any} */ (new AttrDeleteOp(key, prevValue, mergeAttrs(this.usedAttribution, attribution)))
1473
+ // @ts-ignore
1474
+ this.attrs[key] /** @type {any} */ =
1475
+ (new DeleteAttrOp(/** @type {any} */ (key), prevValue, mergeAttrs(this.usedAttribution, attribution)))
1403
1476
  return /** @type {any} */ (this)
1404
1477
  }
1405
1478
 
1406
1479
  /**
1407
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer As,any,any,any> ? { [K in keyof As]: Extract<As[K],Delta<any,any,any,any,any>> extends never ? never : K }[keyof As] : never} Key
1408
- * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer As,any,any,any> ? Extract<As[Key],Delta<any,any,any,any,any>> : never} D
1480
+ * @template {DeltaConfGetAllowedAttrs<DConf> extends infer As ? { [K in keyof As]: Extract<As[K],DeltaAny> extends never ? never : K }[keyof As] : never} Key
1481
+ * @template {Extract<DeltaConfGetAllowedAttrs<DConf>[Key],DeltaAny>} D
1409
1482
  * @param {Key} key
1410
1483
  * @param {D} modify
1411
- * @return {DeltaBuilder<
1412
- * NodeName,
1413
- * { [K in keyof AddToAttrs<Attrs,Key,D>]: AddToAttrs<Attrs,Key,D>[K] },
1414
- * Children,
1415
- * Text,
1416
- * Schema
1417
- * >}
1418
- */
1419
- update (key, modify) {
1484
+ * @return {DeltaBuilder<DeltaConfOverwrite<DConf,{attrs:AddToAttrs<DeltaConfGetAttrs<DConf>,Key,D>}>>}
1485
+ */
1486
+ modifyAttr (key, modify) {
1420
1487
  modDeltaCheck(this)
1421
- this.attrs[key] = /** @type {any} */ (new AttrModifyOp(key, modify))
1488
+ this.attrs[key] = /** @type {any} */ (new ModifyAttrOp(key, modify))
1422
1489
  return /** @type {any} */ (this)
1423
1490
  }
1424
1491
 
1425
1492
  /**
1426
- * @param {Delta<NodeName,Attrs,Children,Text,any>} other
1493
+ * @param {Delta<DConf>} other
1427
1494
  */
1428
1495
  apply (other) {
1429
1496
  modDeltaCheck(this)
1430
1497
  this.$schema?.expect(other)
1431
1498
  // apply attrs
1432
1499
  for (const op of other.attrs) {
1433
- const c = /** @type {AttrInsertOp<any,any>|AttrDeleteOp<any>|AttrModifyOp<any,any>} */ (this.attrs[op.key])
1434
- if ($modifyOp.check(op)) {
1500
+ // @ts-ignore
1501
+ const c = /** @type {SetAttrOp<any,any>|DeleteAttrOp<any>|ModifyAttrOp<any,any>} */ (this.attrs[op.key])
1502
+ if ($modifyAttrOp.check(op)) {
1435
1503
  if ($deltaAny.check(c?.value)) {
1436
1504
  c._modValue.apply(op.value)
1437
1505
  } else {
@@ -1439,13 +1507,14 @@ export class DeltaBuilder extends Delta {
1439
1507
  // @ts-ignore
1440
1508
  this.attrs[op.key] = op.clone()
1441
1509
  }
1442
- } else if ($insertOp.check(op)) {
1510
+ } else if ($setAttrOp.check(op)) {
1443
1511
  // @ts-ignore
1444
1512
  op.prevValue = c?.value
1445
1513
  // @ts-ignore
1446
1514
  this.attrs[op.key] = op.clone()
1447
- } else if ($deleteOp.check(op)) {
1515
+ } else if ($deleteAttrOp.check(op)) {
1448
1516
  op.prevValue = c?.value
1517
+ // @ts-ignore
1449
1518
  delete this.attrs[op.key]
1450
1519
  }
1451
1520
  }
@@ -1461,7 +1530,7 @@ export class DeltaBuilder extends Delta {
1461
1530
  * Hence, anytime an op is cloned, deleted, or inserted (anytime list.* api is used) we must add
1462
1531
  * an op to maybeMergeable.
1463
1532
  *
1464
- * @type {Array<InsertOp<any>|RetainOp|DeleteOp|TextOp|ModifyOp<any>>}
1533
+ * @type {Array<InsertOp<any>|RetainOp|DeleteOp<any>|TextOp|ModifyOp<any>>}
1465
1534
  */
1466
1535
  const maybeMergeable = []
1467
1536
  /**
@@ -1530,7 +1599,7 @@ export class DeltaBuilder extends Delta {
1530
1599
  list.pushEnd(this.children, scheduleForMerge(new DeleteOp(remainingLen)))
1531
1600
  this.childCnt += remainingLen
1532
1601
  break
1533
- } else if (opsI instanceof DeleteOp) {
1602
+ } else if ($deleteOp.check(opsI)) {
1534
1603
  const delLen = opsI.length - offset
1535
1604
  // the same content can't be deleted twice, remove duplicated deletes
1536
1605
  if (delLen >= remainingLen) {
@@ -1575,8 +1644,8 @@ export class DeltaBuilder extends Delta {
1575
1644
  this.childCnt += 1
1576
1645
  return
1577
1646
  }
1578
- if ($modifyOp.check(opsI)) {
1579
- opsI._modValue.apply(op.value)
1647
+ if ($modifyAttrOp.check(opsI)) {
1648
+ opsI._modValue.apply(/** @type {any} */ (op.value))
1580
1649
  } else if ($insertOp.check(opsI)) {
1581
1650
  opsI._modValue(offset).apply(op.value)
1582
1651
  } else if ($retainOp.check(opsI)) {
@@ -1629,24 +1698,30 @@ export class DeltaBuilder extends Delta {
1629
1698
  * - modify vs modify ⇒ rebase using priority
1630
1699
  */
1631
1700
  for (const op of this.attrs) {
1632
- if ($insertOp.check(op)) {
1633
- if ($insertOp.check(other.attrs[op.key]) && !priority) {
1701
+ if ($setAttrOp.check(op)) {
1702
+ if ($setAttrOp.check(other.attrs[op.key]) && !priority) {
1703
+ // @ts-ignore
1634
1704
  delete this.attrs[op.key]
1635
1705
  }
1636
- } else if ($deleteOp.check(op)) {
1706
+ } else if ($deleteAttrOp.check(op)) {
1707
+ // @ts-ignore
1637
1708
  const otherOp = other.attrs[/** @type {any} */ (op.key)]
1638
- if ($insertOp.check(otherOp)) {
1709
+ if ($setAttrOp.check(otherOp)) {
1710
+ // @ts-ignore
1639
1711
  delete this.attrs[otherOp.key]
1640
1712
  }
1641
- } else if ($modifyOp.check(op)) {
1713
+ } else if ($modifyAttrOp.check(op)) {
1642
1714
  const otherOp = other.attrs[/** @type {any} */ (op.key)]
1643
1715
  if (otherOp == null) {
1644
1716
  // nop
1645
- } else if ($modifyOp.check(otherOp)) {
1717
+ } else if ($modifyAttrOp.check(otherOp)) {
1646
1718
  op._modValue.rebase(otherOp.value, priority)
1647
1719
  } else {
1720
+ // @ts-ignore
1648
1721
  delete this.attrs[otherOp.key]
1649
1722
  }
1723
+ } else {
1724
+ error.unexpectedCase()
1650
1725
  }
1651
1726
  }
1652
1727
  /**
@@ -1773,9 +1848,15 @@ export class DeltaBuilder extends Delta {
1773
1848
  *
1774
1849
  * delta.create().insert('a').append(delta.create().insert('b')) // => insert "ab"
1775
1850
  *
1776
- * @template {DeltaAny} OtherDelta
1777
- * @param {OtherDelta} other
1778
- * @return {CastToDelta<OtherDelta> extends Delta<any,any,infer OtherChildren,infer OtherText,any> ? DeltaBuilder<NodeName,Attrs,Children|OtherChildren,Text|OtherText,Schema> : never}
1851
+ * @todo on fixed deltas this should not extend
1852
+ *
1853
+ * @template {DeltaConf} OtherDeltaConf
1854
+ * @param {Delta<OtherDeltaConf>} other
1855
+ * @return {DeltaBuilder<DeltaConfOverwrite<
1856
+ * DConf,
1857
+ * (DeltaConfGetChildren<OtherDeltaConf> extends never ? {} : { children: DeltaConfGetChildren<DConf> | DeltaConfGetChildren<OtherDeltaConf> })
1858
+ * & (DeltaConfGetText<OtherDeltaConf> extends string ? { text: true } : never)
1859
+ * >>}
1779
1860
  */
1780
1861
  append (other) {
1781
1862
  const children = this.children
@@ -1813,70 +1894,52 @@ const updateOpFormat = (op, formatUpdate) => {
1813
1894
  }
1814
1895
 
1815
1896
  /**
1816
- * @template {DeltaAny} D
1817
- * @typedef {D extends DeltaBuilder<infer N,infer Attrs,infer Children,infer Text,infer Schema> ? Delta<N,Attrs,Children,Text,Schema> : D} CastToDelta
1818
- */
1819
-
1820
- /**
1821
- * @template {string} NodeName
1822
- * @template {{ [key: string|number]: any }} [Attrs={}]
1823
- * @template {fingerprintTrait.Fingerprintable|never} [Children=never]
1824
- * @template {string|never} [Text=never]
1825
- * @typedef {Delta<NodeName,Attrs,Children|Delta<NodeName,Attrs,Children,Text>|RecursiveDelta<NodeName,Attrs,Children,Text>,Text>} RecursiveDelta
1826
- */
1827
-
1828
- /**
1829
- * @template {string} Name
1830
- * @template {{[k:string|number]:any}} Attrs
1831
- * @template {fingerprintTrait.Fingerprintable} Children
1832
- * @template {boolean} HasText
1833
- * @template {{ [k:string]:any }} Formats
1834
- * @template {boolean} Recursive
1835
- * @extends {s.Schema<Delta<
1836
- * Name,
1837
- * Attrs,
1838
- * Children|(Recursive extends true ? RecursiveDelta<Name,Attrs,Children,HasText extends true ? string : never> : never),
1839
- * HasText extends true ? string : never,
1840
- * any>>}
1897
+ * @template {DeltaConf} DConf
1898
+ * @extends {s.Schema<Delta<DConf>>}
1841
1899
  */
1842
1900
  export class $Delta extends s.Schema {
1843
1901
  /**
1844
- * @param {s.Schema<Name>} $name
1845
- * @param {s.Schema<Attrs>} $attrs
1846
- * @param {s.Schema<Children>} $children
1847
- * @param {HasText} hasText
1848
- * @param {s.Schema<Formats>} $formats
1849
- * @param {Recursive} recursive
1902
+ * @param {s.Schema<any>} $name
1903
+ * @param {s.Schema<any>} $attrs
1904
+ * @param {s.Schema<any>} $children
1905
+ * @param {any} hasText
1906
+ * @param {any} recursiveChildren
1907
+ * @param {s.Schema<{[K:string]:any}>} $formats
1850
1908
  */
1851
- constructor ($name, $attrs, $children, hasText, $formats, recursive) {
1909
+ constructor ($name, $attrs, $children, hasText, recursiveChildren, $formats) {
1852
1910
  super()
1853
1911
  const $attrsPartial = s.$$object.check($attrs) ? $attrs.partial : $attrs
1854
- if (recursive) {
1912
+ if (recursiveChildren) {
1855
1913
  // @ts-ignore
1856
1914
  $children = s.$union($children, this)
1857
1915
  }
1858
- this.shape = { $name, $attrs: $attrsPartial, $children, hasText, $formats }
1916
+ /**
1917
+ * @type {{
1918
+ * $name: s.Schema<DeltaConfGetName<DConf>>,
1919
+ * $attrs: s.Schema<DeltaConfGetAttrs<DConf>>,
1920
+ * $children: s.Schema<DeltaConfGetChildren<DConf>>,
1921
+ * hasText: DeltaConfGetText<DConf>
1922
+ * recursiveChildren: DeltaConfGetRecursiveChildren<DConf>,
1923
+ * $formats: s.Schema<{[K:string]:any}>
1924
+ * }}
1925
+ */
1926
+ this.shape = { $name, $attrs: $attrsPartial, $children, hasText, $formats, recursiveChildren }
1859
1927
  }
1860
1928
 
1861
1929
  /**
1862
1930
  * @param {any} o
1863
1931
  * @param {s.ValidationError} [err]
1864
- * @return {o is Delta<
1865
- * Name,
1866
- * Attrs,
1867
- * Children|(Recursive extends true ? RecursiveDelta<Name,Attrs,Children,HasText extends true ? string : never> : never),
1868
- * HasText extends true ? string : never,
1869
- * any>}
1932
+ * @return {o is Delta<DConf>}
1870
1933
  */
1871
1934
  check (o, err = undefined) {
1872
1935
  const { $name, $attrs, $children, hasText, $formats } = this.shape
1873
- if (!(o instanceof Delta)) {
1936
+ if (!$deltaAny.check(o, err)) {
1874
1937
  err?.extend(null, 'Delta', o?.constructor.name, 'Constructor match failed')
1875
1938
  } else if (o.name != null && !$name.check(o.name, err)) {
1876
1939
  err?.extend('Delta.name', $name.toString(), o.name, 'Unexpected node name')
1877
1940
  } else if (list.toArray(o.children).some(c => (!hasText && $textOp.check(c)) || (hasText && $textOp.check(c) && c.format != null && !$formats.check(c.format)) || ($insertOp.check(c) && !c.insert.every(ins => $children.check(ins))))) {
1878
1941
  err?.extend('Delta.children', '', '', 'Children don\'t match the schema')
1879
- } else if (object.some(o.attrs, (op, k) => $insertOp.check(op) && !$attrs.check({ [k]: op.value }, err))) {
1942
+ } else if (object.some(o.attrs, (op, k) => $setAttrOp.check(op) && !$attrs.check({ [k]: op.value }, err))) {
1880
1943
  err?.extend('Delta.attrs', '', '', 'Attrs don\'t match the schema')
1881
1944
  } else {
1882
1945
  return true
@@ -1890,7 +1953,7 @@ export class $Delta extends s.Schema {
1890
1953
  * @template {s.Schema<{ [key: string|number]: any }>|{ [key:string|number]:any }} [AttrsSchema=s.Schema<{}>]
1891
1954
  * @template {any} [ChildrenSchema=s.Schema<never>]
1892
1955
  * @template {boolean} [HasText=false]
1893
- * @template {boolean} [Recursive=false]
1956
+ * @template {boolean} [RecursiveChildren=false]
1894
1957
  * @template {{ [k:string]:any }} [Formats={[k:string]:any}]
1895
1958
  * @param {object} opts
1896
1959
  * @param {NodeNameSchema?} [opts.name]
@@ -1898,24 +1961,25 @@ export class $Delta extends s.Schema {
1898
1961
  * @param {ChildrenSchema?} [opts.children] The type of content in `insertOp`
1899
1962
  * @param {HasText} [opts.text] Whether this delta contains text using `textOp`
1900
1963
  * @param {Formats} [opts.formats]
1901
- * @param {Recursive} [opts.recursive]
1902
- * @return {[s.Unwrap<s.ReadSchema<NodeNameSchema>>,s.Unwrap<s.ReadSchema<AttrsSchema>>,s.Unwrap<s.ReadSchema<ChildrenSchema>>] extends [infer NodeName, infer Attrs, infer Children] ? s.Schema<Delta<
1903
- * NodeName,
1904
- * Attrs,
1905
- * Children|(Recursive extends true ? RecursiveDelta<NodeName,Attrs,Children,HasText extends true ? string : never> : never),
1906
- * HasText extends true ? string : never
1907
- * >> : never}
1908
- */
1909
- export const $delta = ({ name, attrs, children, text, formats, recursive }) => /** @type {any} */ (new $Delta(
1910
- name == null ? s.$any : s.$(name),
1964
+ * @param {RecursiveChildren} [opts.recursiveChildren]
1965
+ * @return {[s.Unwrap<s.ReadSchema<NodeNameSchema>>,s.Unwrap<s.ReadSchema<AttrsSchema>>,s.Unwrap<s.ReadSchema<ChildrenSchema>>] extends [infer NodeName, infer Attrs, infer Children] ? s.Schema<Delta<{
1966
+ * name: NodeName,
1967
+ * attrs: Attrs,
1968
+ * children: Children,
1969
+ * text: HasText,
1970
+ * recursiveChildren: RecursiveChildren
1971
+ * }>> : never}
1972
+ */
1973
+ export const $delta = ({ name, attrs, children, text, formats, recursiveChildren: recursive }) => /** @type {any} */ (new $Delta(
1974
+ /** @type {any} */ (name == null ? s.$any : s.$(name)),
1911
1975
  /** @type {any} */ (attrs == null ? s.$object({}) : s.$(attrs)),
1912
1976
  /** @type {any} */ (children == null ? s.$never : s.$(children)),
1913
1977
  text ?? false,
1914
- formats == null ? s.$any : s.$(formats),
1915
- recursive ?? false
1978
+ recursive ?? false,
1979
+ formats == null ? s.$any : s.$(formats)
1916
1980
  ))
1917
1981
 
1918
- export const $$delta = s.$constructedBy($Delta)
1982
+ export const $$delta = /* @__PURE__ */s.$constructedBy($Delta)
1919
1983
 
1920
1984
  /**
1921
1985
  * @todo remove this
@@ -1945,11 +2009,12 @@ export const _$delta = ({ name, attrs, children, text, recursive }) => {
1945
2009
  let $arrContent = children == null ? s.$never : s.$array(s.$(children))
1946
2010
  const $name = name == null ? s.$any : s.$(name)
1947
2011
  const $attrsPartial = attrs == null ? s.$object({}) : (s.$$record.check(attrs) ? attrs : /** @type {any} */ (s.$(attrs)).partial)
1948
- const $d = s.$instanceOf(Delta, /** @param {Delta<any,any,any,any,any>} d */ d => {
2012
+ const $d = s.$custom(d => {
1949
2013
  if (
2014
+ !$deltaAny.check(d) ||
1950
2015
  !$name.check(d.name) ||
1951
2016
  object.some(d.attrs,
1952
- (op, k) => $insertOp.check(op) && !$attrsPartial.check({ [k]: op.value })
2017
+ (op, k) => $setAttrOp.check(op) && !$attrsPartial.check({ [k]: op.value })
1953
2018
  )
1954
2019
  ) return false
1955
2020
  for (const op of d.children) {
@@ -1965,15 +2030,8 @@ export const _$delta = ({ name, attrs, children, text, recursive }) => {
1965
2030
  return /** @type {any} */ ($d)
1966
2031
  }
1967
2032
 
1968
- /**
1969
- * @type {s.Schema<DeltaAny>}
1970
- */
1971
- export const $deltaAny = /** @type {any} */ (s.$instanceOf(Delta))
1972
-
1973
- /**
1974
- * @type {s.Schema<DeltaBuilderAny>}
1975
- */
1976
- export const $deltaBuilderAny = /** @type {any} */ (s.$instanceOf(DeltaBuilder))
2033
+ export const $deltaAny = /** @type {s.Schema<DeltaAny>} */ (/* @__PURE__ */s.$type('delta'))
2034
+ export const $deltaBuilderAny = /** @type {s.Schema<DeltaBuilderAny>} */ (/* @__PURE__ */s.$custom(o => $deltaAny.check(o) && !o.isDone))
1977
2035
 
1978
2036
  /**
1979
2037
  * Helper function to merge attribution and attributes. The latter input "wins".
@@ -2002,16 +2060,16 @@ export const mergeDeltas = (a, b) => {
2002
2060
  }
2003
2061
 
2004
2062
  /**
2005
- * @template {DeltaAny} D
2063
+ * @template {DeltaConf} DConf
2006
2064
  * @param {prng.PRNG} gen
2007
- * @param {s.Schema<D>} $d
2008
- * @return {D extends Delta<infer NodeName,infer Attrs,infer Children,infer Text,infer Schema> ? DeltaBuilder<NodeName,Attrs,Children,Text,Schema> : never}
2065
+ * @param {s.Schema<Delta<DConf>>} $d
2066
+ * @return {DeltaBuilder<DConf>}
2009
2067
  */
2010
2068
  export const random = (gen, $d) => {
2011
- const { $name, $attrs, $children, hasText, $formats: $formats_ } = /** @type {$Delta<any,any,any,boolean,any,any>} */ (/** @type {any} */ ($d)).shape
2069
+ const { $name, $attrs, $children, hasText, $formats: $formats_ } = /** @type {$Delta<any>} */ (/** @type {any} */ ($d)).shape
2012
2070
  const d = s.$$any.check($name) ? create($deltaAny) : create(s.random(gen, $name), $deltaAny)
2013
2071
  const $formats = s.$$any.check($formats_) ? s.$null : $formats_
2014
- prng.bool(gen) && d.setMany(s.random(gen, $attrs))
2072
+ prng.bool(gen) && d.setAttrs(s.random(gen, $attrs))
2015
2073
  for (let i = prng.uint32(gen, 0, 5); i > 0; i--) {
2016
2074
  if (hasText && prng.bool(gen)) {
2017
2075
  d.insert(prng.word(gen), s.random(gen, $formats))
@@ -2032,13 +2090,13 @@ export const random = (gen, $d) => {
2032
2090
 
2033
2091
  /**
2034
2092
  * @overload
2035
- * @return {DeltaBuilder<any,{},never,never,null>}
2093
+ * @return {DeltaBuilder<{}>}
2036
2094
  */
2037
2095
  /**
2038
- * @template {string} NodeName
2096
+ * @template {string|null} NodeName
2039
2097
  * @overload
2040
2098
  * @param {NodeName} nodeName
2041
- * @return {DeltaBuilder<NodeName,{},never,never,null>}
2099
+ * @return {DeltaBuilder<NodeName extends string ? { name: NodeName } : {}>}
2042
2100
  */
2043
2101
  /**
2044
2102
  * @template {string} NodeName
@@ -2046,13 +2104,13 @@ export const random = (gen, $d) => {
2046
2104
  * @overload
2047
2105
  * @param {NodeName} nodeName
2048
2106
  * @param {Schema} schema
2049
- * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? DeltaBuilder<NodeName,Attrs,Children,Text,Schema> : never}
2107
+ * @return {Schema extends s.Schema<Delta<infer DConf>> ? DeltaBuilder<DeltaConfOverwrite<DConf, {fixed:true}>> : never}
2050
2108
  */
2051
2109
  /**
2052
2110
  * @template {s.Schema<DeltaAny>} Schema
2053
2111
  * @overload
2054
2112
  * @param {Schema} schema
2055
- * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? DeltaBuilder<N,Attrs,Children,Text,Schema> : never}
2113
+ * @return {Schema extends s.Schema<Delta<infer DConf>> ? DeltaBuilder<DeltaConfOverwrite<DConf, {fixed:true}>> : never}
2056
2114
  */
2057
2115
  /**
2058
2116
  * @template {string|null} NodeName
@@ -2062,111 +2120,100 @@ export const random = (gen, $d) => {
2062
2120
  * @param {NodeName} nodeName
2063
2121
  * @param {Attrs} attrs
2064
2122
  * @param {Children} [children]
2065
- * @return {DeltaBuilder<
2066
- * NodeName extends null ? any : NodeName,
2067
- * Attrs extends null ? {} : Attrs,
2068
- * Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2069
- * Extract<Children,string>,
2070
- * null
2071
- * >}
2123
+ * @return {DeltaBuilder<{
2124
+ * name: NodeName,
2125
+ * attrs: Attrs extends null ? {} : Attrs,
2126
+ * children: Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2127
+ * text: Extract<Children,string> extends never ? false : true
2128
+ * }>}
2072
2129
  */
2073
2130
  /**
2074
- * @param {string|s.Schema<DeltaAny>} [nodeNameOrSchema]
2131
+ * @param {string|s.Schema<DeltaAny>|null} [nodeNameOrSchema]
2075
2132
  * @param {{[K:string|number]:any}|s.Schema<DeltaAny>} [attrsOrSchema]
2076
2133
  * @param {(Array<any>|string)} [children]
2077
- * @return {DeltaBuilder<any,any,any,any,any>}
2134
+ * @return {DeltaBuilder<{}>}
2078
2135
  */
2079
2136
  export const create = (nodeNameOrSchema, attrsOrSchema, children) => {
2080
2137
  const nodeName = /** @type {any} */ (s.$string.check(nodeNameOrSchema) ? nodeNameOrSchema : null)
2081
2138
  const schema = /** @type {any} */ (s.$$schema.check(nodeNameOrSchema) ? nodeNameOrSchema : (s.$$schema.check(attrsOrSchema) ? attrsOrSchema : null))
2082
- const d = /** @type {DeltaBuilder<any,any,any,string,null>} */ (new DeltaBuilder(nodeName, schema))
2139
+ const d = /** @type {DeltaBuilder<any>} */ (new DeltaBuilder(nodeName, schema))
2083
2140
  if (s.$objectAny.check(attrsOrSchema)) {
2084
- d.setMany(attrsOrSchema)
2141
+ d.setAttrs(attrsOrSchema)
2085
2142
  }
2086
2143
  children && d.insert(children)
2087
2144
  return d
2088
2145
  }
2089
2146
 
2090
- // DELTA TEXT
2091
-
2092
- /**
2093
- * @template {fingerprintTrait.Fingerprintable} [Embeds=never]
2094
- * @typedef {Delta<any,{},Embeds,string>} TextDelta
2095
- */
2096
-
2097
2147
  /**
2098
- * @template {fingerprintTrait.Fingerprintable} [Embeds=never]
2099
- * @typedef {DeltaBuilder<any,{},Embeds,string>} TextDeltaBuilder
2100
- */
2101
-
2102
- /**
2103
- * @template {Array<s.Schema<any>>} [$Embeds=any]
2104
- * @param {$Embeds} $embeds
2105
- * @return {s.Schema<TextDelta<_AnyToNull<$Embeds> extends null ? never : ($Embeds extends Array<s.Schema<infer $C>> ? $C : never)>>}
2106
- */
2107
- export const $text = (...$embeds) => /** @type {any} */ ($delta({ children: s.$union(...$embeds), text: true }))
2108
- export const $textOnly = $text()
2109
-
2110
- /**
2111
- * @template {s.Schema<Delta<any,{},any,any,null>>} [Schema=s.Schema<Delta<any,{},never,string,null>>]
2112
- * @param {Schema} [$schema]
2113
- * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? DeltaBuilder<N,Attrs,Children,Text,Schema> : never}
2114
- */
2115
- export const text = $schema => /** @type {any} */ (create($schema || $textOnly))
2116
-
2117
- /**
2118
- * @template {fingerprintTrait.Fingerprintable} Children
2119
- * @typedef {Delta<any,{},Children,never>} ArrayDelta
2120
- */
2121
-
2122
- /**
2123
- * @template {fingerprintTrait.Fingerprintable} Children
2124
- * @typedef {DeltaBuilder<any,{},Children,never>} ArrayDeltaBuilder
2125
- */
2126
-
2127
- /**
2128
- * @template {any|s.Schema<any>} $Children
2129
- * @param {$Children} [$children]
2130
- * @return {s.Schema<ArrayDelta<s.Unwrap<s.ReadSchema<$Children>>>>}
2131
- */
2132
- export const $array = $children => /** @type {any} */ ($delta({ children: $children }))
2133
-
2134
- /**
2135
- * @template {s.Schema<ArrayDelta<any>>} [$Schema=never]
2136
- * @param {$Schema} $schema
2137
- * @return {$Schema extends never ? ArrayDeltaBuilder<never> : DeltaBuilder<any,{},never,never,$Schema>}
2148
+ * @template {string|null} NodeName
2149
+ * @template {Array<any>|string} [Children=never]
2150
+ * @overload
2151
+ * @param {NodeName} nodeName
2152
+ * @param {...Array<Children>} [children]
2153
+ * @return {DeltaBuilder<{
2154
+ * name: NodeName,
2155
+ * children: Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2156
+ * text: Extract<Children,string> extends never ? false : true
2157
+ * }>}
2138
2158
  */
2139
- export const array = $schema => /** @type {any} */ ($schema ? create($schema) : create())
2140
-
2141
2159
  /**
2142
- * @template {{ [K: string|number]: any }} Attrs
2143
- * @typedef {Delta<any,Attrs,never,never>} MapDelta
2160
+ * @template {Array<any>|string} [Children=never]
2161
+ * @overload
2162
+ * @param {...Array<Children>} [children]
2163
+ * @return {DeltaBuilder<{
2164
+ * children: Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2165
+ * text: Extract<Children,string> extends never ? false : true
2166
+ * }>}
2144
2167
  */
2145
-
2146
2168
  /**
2147
- * @template {{ [K: string|number]: any }} Attrs
2148
- * @typedef {DeltaBuilder<any,Attrs,never,never>} MapDeltaBuilder
2169
+ * @template {{[k:string|number]:any}|null} Attrs
2170
+ * @template {Array<any>|string} [Children=never]
2171
+ * @overload
2172
+ * @param {Attrs} attrs
2173
+ * @param {...Array<Children>} [children]
2174
+ * @return {DeltaBuilder<{
2175
+ * attrs: Attrs extends null ? {} : Attrs,
2176
+ * children: Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2177
+ * text: Extract<Children,string> extends never ? false : true
2178
+ * }>}
2149
2179
  */
2150
-
2151
2180
  /**
2152
- * @template {{ [K: string|number]: any }} $Attrs
2153
- * @param {s.Schema<$Attrs>} $attrs
2154
- * @return {s.Schema<MapDelta<$Attrs>>}
2181
+ * @template {string|null} NodeName
2182
+ * @template {{[k:string|number]:any}|null} Attrs
2183
+ * @template {Array<any>|string} [Children=never]
2184
+ * @overload
2185
+ * @param {NodeName} nodeName
2186
+ * @param {Attrs} attrs
2187
+ * @param {...Array<Children>} [children]
2188
+ * @return {DeltaBuilder<{
2189
+ * name: NodeName,
2190
+ * attrs: Attrs extends null ? {} : Attrs,
2191
+ * children: Extract<Children,Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,
2192
+ * text: Extract<Children,string> extends never ? false : true
2193
+ * }>}
2155
2194
  */
2156
- export const $map = $attrs => /** @type {any} */ ($delta({ attrs: $attrs }))
2157
-
2158
2195
  /**
2159
- * @template {s.Schema<MapDelta<any>>|undefined} [$Schema=undefined]
2160
- * @param {$Schema} [$schema]
2161
- * @return {$Schema extends s.Schema<MapDelta<infer Attrs>> ? DeltaBuilder<any,Attrs,never,never,$Schema> : MapDeltaBuilder<{}>}
2196
+ * @param {Array<string|null|{[K:string|number]:any}|Array<any>>} args
2197
+ * @return {DeltaBuilder<{}>}
2162
2198
  */
2163
- export const map = $schema => /** @type {any} */ (create(/** @type {any} */ ($schema)))
2199
+ export const from = (...args) => {
2200
+ const hasName = s.$string.check(args[0])
2201
+ let i = hasName ? 1 : 0
2202
+ const d = create(hasName ? /** @type {string} */ (args[0]) : null)
2203
+ if (s.$objectAny.check(args[i])) {
2204
+ d.setAttrs(/** @type {any} */ (args[i++]))
2205
+ }
2206
+ for (; i < args.length; i++) {
2207
+ d.insert(/** @type {any} */ (args[i]))
2208
+ }
2209
+ return d
2210
+ }
2164
2211
 
2165
2212
  /**
2166
- * @template {DeltaAny} D
2167
- * @param {D} d1
2168
- * @param {NoInfer<D>} d2
2169
- * @return {D extends Delta<infer N,infer Attrs,infer Children,infer Text,any> ? DeltaBuilder<N,Attrs,Children,Text,null> : never}
2213
+ * @template {DeltaConf} DConf
2214
+ * @param {Delta<DConf>} d1
2215
+ * @param {NoInfer<Delta<DConf>>} d2
2216
+ * @return {DeltaBuilder<DConf>}
2170
2217
  */
2171
2218
  export const diff = (d1, d2) => {
2172
2219
  /**
@@ -2174,9 +2221,21 @@ export const diff = (d1, d2) => {
2174
2221
  */
2175
2222
  const d = create()
2176
2223
  if (d1.fingerprint !== d2.fingerprint) {
2224
+ /**
2225
+ * @type {ChildrenOpAny?}
2226
+ */
2177
2227
  let left1 = d1.children.start
2228
+ /**
2229
+ * @type {ChildrenOpAny?}
2230
+ */
2178
2231
  let left2 = d2.children.start
2232
+ /**
2233
+ * @type {ChildrenOpAny?}
2234
+ */
2179
2235
  let right1 = d1.children.end
2236
+ /**
2237
+ * @type {ChildrenOpAny?}
2238
+ */
2180
2239
  let right2 = d2.children.end
2181
2240
  let commonPrefixOffset = 0
2182
2241
  // perform a patience sort
@@ -2224,7 +2283,7 @@ export const diff = (d1, d2) => {
2224
2283
  * @param {ChildrenOpAny[]} opsShould
2225
2284
  */
2226
2285
  const diffAndApply = (opsIs, opsShould) => {
2227
- const d = create()
2286
+ const d = create($deltaAny)
2228
2287
  // @todo unoptimized implementation. Convert content to array and diff that based on
2229
2288
  // generated fingerprints. We probably could do better and cache more information.
2230
2289
  // - benchmark
@@ -2283,7 +2342,7 @@ export const diff = (d1, d2) => {
2283
2342
  if (hasFormatting) {
2284
2343
  const formattingDiff = create()
2285
2344
  // update opsIs with content diff. then we can figure out the formatting diff.
2286
- const isUpdated = create()
2345
+ const isUpdated = create($deltaAny)
2287
2346
  // copy opsIs to fresh delta
2288
2347
  opsIs.forEach(op => {
2289
2348
  isUpdated.childCnt += op.length
@@ -2341,11 +2400,12 @@ export const diff = (d1, d2) => {
2341
2400
  currIndexOffset2 += change.insert.length - change.remove.length
2342
2401
  }
2343
2402
  for (const attr2 of d2.attrs) {
2403
+ // @ts-ignore
2344
2404
  const attr1 = d1.attrs[attr2.key]
2345
2405
  if (attr1 == null || (attr1.fingerprint !== attr2.fingerprint)) {
2346
2406
  /* c8 ignore else */
2347
- if ($insertOp.check(attr2)) {
2348
- d.set(attr2.key, attr2.value)
2407
+ if ($setAttrOp.check(attr2)) {
2408
+ d.setAttr(attr2.key, attr2.value)
2349
2409
  } else {
2350
2410
  /* c8 ignore next 2 */
2351
2411
  error.unexpectedCase()
@@ -2353,8 +2413,9 @@ export const diff = (d1, d2) => {
2353
2413
  }
2354
2414
  }
2355
2415
  for (const attr1 of d1.attrs) {
2416
+ // @ts-ignore
2356
2417
  if (d2.attrs[attr1.key] == null) {
2357
- d.unset(attr1.key)
2418
+ d.deleteAttr(attr1.key)
2358
2419
  }
2359
2420
  }
2360
2421
  }