lib0 0.2.112 → 0.2.115-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/README.md +1 -1
  2. package/broadcastchannel.js +1 -1
  3. package/buffer.d.ts +3 -3
  4. package/buffer.d.ts.map +1 -1
  5. package/buffer.js +1 -1
  6. package/coverage/tmp/coverage-27667-1761218530660-0.json +1 -0
  7. package/coverage/tmp/{coverage-20055-1752683207886-0.json → coverage-27668-1761218485882-0.json} +1 -1
  8. package/crypto/aes-gcm.d.ts +4 -4
  9. package/crypto/aes-gcm.d.ts.map +1 -1
  10. package/crypto/aes-gcm.js +6 -6
  11. package/crypto/common.d.ts +1 -1
  12. package/crypto/common.d.ts.map +1 -1
  13. package/crypto/common.js +1 -1
  14. package/crypto/ecdsa.d.ts +2 -2
  15. package/crypto/ecdsa.d.ts.map +1 -1
  16. package/crypto/ecdsa.js +4 -4
  17. package/crypto/rsa-oaep.d.ts +2 -2
  18. package/crypto/rsa-oaep.d.ts.map +1 -1
  19. package/crypto/rsa-oaep.js +3 -3
  20. package/decoding.d.ts +27 -14
  21. package/decoding.d.ts.map +1 -1
  22. package/decoding.js +12 -8
  23. package/delta/abstract-array.d.ts +166 -0
  24. package/delta/abstract-array.d.ts.map +1 -0
  25. package/delta/abstract-array.js +421 -0
  26. package/delta/abstract.d.ts +69 -0
  27. package/delta/abstract.d.ts.map +1 -0
  28. package/delta/abstract.js +102 -0
  29. package/delta/array.d.ts +23 -0
  30. package/delta/array.d.ts.map +1 -0
  31. package/delta/array.js +45 -0
  32. package/delta/array.test.d.ts +2 -0
  33. package/delta/array.test.d.ts.map +1 -0
  34. package/delta/binding.d.ts +105 -0
  35. package/delta/binding.d.ts.map +1 -0
  36. package/delta/binding.js +369 -0
  37. package/delta/binding.test.d.ts +5 -0
  38. package/delta/binding.test.d.ts.map +1 -0
  39. package/delta/d2.d.ts +705 -0
  40. package/delta/d2.d.ts.map +1 -0
  41. package/delta/d2.js +1309 -0
  42. package/delta/d2.test.d.ts +15 -0
  43. package/delta/d2.test.d.ts.map +1 -0
  44. package/delta/index.d.ts +14 -0
  45. package/delta/index.d.ts.map +1 -0
  46. package/delta/index.js +79 -0
  47. package/delta/map.d.ts +230 -0
  48. package/delta/map.d.ts.map +1 -0
  49. package/delta/map.js +304 -0
  50. package/delta/node.d.ts +119 -0
  51. package/delta/node.d.ts.map +1 -0
  52. package/delta/node.js +183 -0
  53. package/delta/node.test.d.ts +4 -0
  54. package/delta/node.test.d.ts.map +1 -0
  55. package/delta/ops.d.ts +466 -0
  56. package/delta/ops.d.ts.map +1 -0
  57. package/delta/ops.js +544 -0
  58. package/delta/readme.md +129 -0
  59. package/delta/text.d.ts +43 -0
  60. package/delta/text.d.ts.map +1 -0
  61. package/delta/text.js +54 -0
  62. package/delta/text.test.d.ts +6 -0
  63. package/delta/text.test.d.ts.map +1 -0
  64. package/delta/transformer.d.ts +164 -0
  65. package/delta/transformer.d.ts.map +1 -0
  66. package/delta/transformer.js +888 -0
  67. package/delta/transformer.test.d.ts +13 -0
  68. package/delta/transformer.test.d.ts.map +1 -0
  69. package/delta/value.d.ts +84 -0
  70. package/delta/value.d.ts.map +1 -0
  71. package/delta/value.js +168 -0
  72. package/dist/abstract-array.cjs +433 -0
  73. package/dist/abstract-array.cjs.map +1 -0
  74. package/dist/abstract.cjs +122 -0
  75. package/dist/abstract.cjs.map +1 -0
  76. package/dist/aes-gcm.cjs +12 -12
  77. package/dist/aes-gcm.cjs.map +1 -1
  78. package/dist/array.cjs +60 -17
  79. package/dist/array.cjs.map +1 -1
  80. package/dist/array2.cjs +26 -0
  81. package/dist/array2.cjs.map +1 -0
  82. package/dist/binding.cjs +398 -0
  83. package/dist/binding.cjs.map +1 -0
  84. package/dist/{broadcastchannel-2c4b0a1c.cjs → broadcastchannel-b4eaea6e.cjs} +4 -4
  85. package/dist/broadcastchannel-b4eaea6e.cjs.map +1 -0
  86. package/dist/broadcastchannel.cjs +12 -12
  87. package/dist/{buffer-a74f7330.cjs → buffer-adc4e6ea.cjs} +7 -7
  88. package/dist/buffer-adc4e6ea.cjs.map +1 -0
  89. package/dist/buffer.cjs +11 -11
  90. package/dist/buffer.d.ts +3 -3
  91. package/dist/buffer.d.ts.map +1 -1
  92. package/dist/cache.cjs +6 -6
  93. package/dist/common.cjs +1 -1
  94. package/dist/common.cjs.map +1 -1
  95. package/dist/component.cjs +14 -9
  96. package/dist/component.cjs.map +1 -1
  97. package/dist/crypto/aes-gcm.d.ts +4 -4
  98. package/dist/crypto/aes-gcm.d.ts.map +1 -1
  99. package/dist/crypto/common.d.ts +1 -1
  100. package/dist/crypto/common.d.ts.map +1 -1
  101. package/dist/crypto/ecdsa.d.ts +2 -2
  102. package/dist/crypto/ecdsa.d.ts.map +1 -1
  103. package/dist/crypto/rsa-oaep.d.ts +2 -2
  104. package/dist/crypto/rsa-oaep.d.ts.map +1 -1
  105. package/dist/d2.cjs +1347 -0
  106. package/dist/d2.cjs.map +1 -0
  107. package/dist/{decoding-2b136346.cjs → decoding-50b9ce38.cjs} +18 -14
  108. package/dist/decoding-50b9ce38.cjs.map +1 -0
  109. package/dist/decoding.cjs +6 -6
  110. package/dist/decoding.d.ts +27 -14
  111. package/dist/decoding.d.ts.map +1 -1
  112. package/dist/delta/abstract-array.d.ts +166 -0
  113. package/dist/delta/abstract-array.d.ts.map +1 -0
  114. package/dist/delta/abstract.d.ts +69 -0
  115. package/dist/delta/abstract.d.ts.map +1 -0
  116. package/dist/delta/array.d.ts +23 -0
  117. package/dist/delta/array.d.ts.map +1 -0
  118. package/dist/delta/array.test.d.ts +2 -0
  119. package/dist/delta/array.test.d.ts.map +1 -0
  120. package/dist/delta/binding.d.ts +105 -0
  121. package/dist/delta/binding.d.ts.map +1 -0
  122. package/dist/delta/binding.test.d.ts +5 -0
  123. package/dist/delta/binding.test.d.ts.map +1 -0
  124. package/dist/delta/d2.d.ts +705 -0
  125. package/dist/delta/d2.d.ts.map +1 -0
  126. package/dist/delta/d2.test.d.ts +15 -0
  127. package/dist/delta/d2.test.d.ts.map +1 -0
  128. package/dist/delta/index.d.ts +14 -0
  129. package/dist/delta/index.d.ts.map +1 -0
  130. package/dist/delta/map.d.ts +230 -0
  131. package/dist/delta/map.d.ts.map +1 -0
  132. package/dist/delta/node.d.ts +119 -0
  133. package/dist/delta/node.d.ts.map +1 -0
  134. package/dist/delta/node.test.d.ts +4 -0
  135. package/dist/delta/node.test.d.ts.map +1 -0
  136. package/dist/delta/ops.d.ts +466 -0
  137. package/dist/delta/ops.d.ts.map +1 -0
  138. package/dist/delta/text.d.ts +43 -0
  139. package/dist/delta/text.d.ts.map +1 -0
  140. package/dist/delta/text.test.d.ts +6 -0
  141. package/dist/delta/text.test.d.ts.map +1 -0
  142. package/dist/delta/transformer.d.ts +164 -0
  143. package/dist/delta/transformer.d.ts.map +1 -0
  144. package/dist/delta/transformer.test.d.ts +13 -0
  145. package/dist/delta/transformer.test.d.ts.map +1 -0
  146. package/dist/delta/value.d.ts +84 -0
  147. package/dist/delta/value.d.ts.map +1 -0
  148. package/dist/{diff-77c4cf8e.cjs → diff-f0776c15.cjs} +2 -2
  149. package/dist/{diff-77c4cf8e.cjs.map → diff-f0776c15.cjs.map} +1 -1
  150. package/dist/diff.cjs +3 -3
  151. package/dist/{dom-16daf1a0.cjs → dom-2b123630.cjs} +31 -2
  152. package/dist/dom-2b123630.cjs.map +1 -0
  153. package/dist/dom.cjs +17 -2
  154. package/dist/dom.cjs.map +1 -1
  155. package/dist/dom.d.ts +17 -0
  156. package/dist/dom.d.ts.map +1 -1
  157. package/dist/ecdsa.cjs +4 -4
  158. package/dist/ecdsa.cjs.map +1 -1
  159. package/dist/{encoding-1acb59c4.cjs → encoding-7f85922c.cjs} +5 -5
  160. package/dist/encoding-7f85922c.cjs.map +1 -0
  161. package/dist/encoding.cjs +4 -4
  162. package/dist/encoding.d.ts +6 -6
  163. package/dist/encoding.d.ts.map +1 -1
  164. package/dist/{environment-2de08e0e.cjs → environment-90227ead.cjs} +4 -4
  165. package/dist/{environment-2de08e0e.cjs.map → environment-90227ead.cjs.map} +1 -1
  166. package/dist/environment.cjs +5 -5
  167. package/dist/{error-8582d695.cjs → error-0c1f634f.cjs} +10 -2
  168. package/dist/error-0c1f634f.cjs.map +1 -0
  169. package/dist/error.cjs +2 -1
  170. package/dist/error.cjs.map +1 -1
  171. package/dist/error.d.ts +1 -0
  172. package/dist/error.d.ts.map +1 -1
  173. package/dist/{eventloop-b299a889.cjs → eventloop-a0168106.cjs} +2 -2
  174. package/dist/{eventloop-b299a889.cjs.map → eventloop-a0168106.cjs.map} +1 -1
  175. package/dist/eventloop.cjs +3 -3
  176. package/dist/{function-09b8292c.cjs → function-e7d18feb.cjs} +2 -2
  177. package/dist/{function-09b8292c.cjs.map → function-e7d18feb.cjs.map} +1 -1
  178. package/dist/function.cjs +2 -2
  179. package/dist/index.cjs +23 -22
  180. package/dist/index.cjs.map +1 -1
  181. package/dist/index2.cjs +71 -0
  182. package/dist/index2.cjs.map +1 -0
  183. package/dist/{indexeddb-0cbb4d6f.cjs → indexeddb-46d1e737.cjs} +3 -3
  184. package/dist/{indexeddb-0cbb4d6f.cjs.map → indexeddb-46d1e737.cjs.map} +1 -1
  185. package/dist/indexeddb.cjs +5 -5
  186. package/dist/indexeddbV2.cjs +2 -1
  187. package/dist/indexeddbV2.cjs.map +1 -1
  188. package/dist/jwt.cjs +12 -12
  189. package/dist/list.cjs +39 -12
  190. package/dist/list.cjs.map +1 -1
  191. package/dist/list.d.ts +13 -3
  192. package/dist/list.d.ts.map +1 -1
  193. package/dist/logging.cjs +11 -9
  194. package/dist/logging.cjs.map +1 -1
  195. package/dist/logging.common.cjs +7 -7
  196. package/dist/logging.node.cjs +7 -7
  197. package/dist/{map-0dabcc55.cjs → map-24d263c0.cjs} +7 -1
  198. package/dist/map-24d263c0.cjs.map +1 -0
  199. package/dist/map.cjs +314 -7
  200. package/dist/map.cjs.map +1 -1
  201. package/dist/map.d.ts +1 -0
  202. package/dist/map.d.ts.map +1 -1
  203. package/dist/map2.cjs +15 -0
  204. package/dist/map2.cjs.map +1 -0
  205. package/dist/{math-08e068f9.cjs → math-96d5e8c4.cjs} +4 -2
  206. package/dist/math-96d5e8c4.cjs.map +1 -0
  207. package/dist/math.cjs +1 -1
  208. package/dist/math.d.ts.map +1 -1
  209. package/dist/metric.cjs +1 -1
  210. package/dist/node.cjs +206 -0
  211. package/dist/node.cjs.map +1 -0
  212. package/dist/{number-466d8922.cjs → number-1fb57bba.cjs} +2 -2
  213. package/dist/{number-466d8922.cjs.map → number-1fb57bba.cjs.map} +1 -1
  214. package/dist/number.cjs +2 -2
  215. package/dist/{object-491858d1.cjs → object-18980796.cjs} +12 -2
  216. package/dist/object-18980796.cjs.map +1 -0
  217. package/dist/object.cjs +3 -1
  218. package/dist/object.cjs.map +1 -1
  219. package/dist/object.d.ts +3 -0
  220. package/dist/object.d.ts.map +1 -1
  221. package/dist/observable.cjs +1 -1
  222. package/dist/ops.cjs +575 -0
  223. package/dist/ops.cjs.map +1 -0
  224. package/dist/patience.cjs +2 -2
  225. package/dist/performance.node.cjs +4 -4
  226. package/dist/pledge.cjs +2 -1
  227. package/dist/pledge.cjs.map +1 -1
  228. package/dist/{prng-24dfe0bf.cjs → prng-004c76e8.cjs} +5 -5
  229. package/dist/{prng-24dfe0bf.cjs.map → prng-004c76e8.cjs.map} +1 -1
  230. package/dist/prng.cjs +12 -12
  231. package/dist/prng.d.ts +1 -1
  232. package/dist/prng.d.ts.map +1 -1
  233. package/dist/{promise-7d13a97c.cjs → promise-cda7b9bb.cjs} +2 -2
  234. package/dist/{promise-7d13a97c.cjs.map → promise-cda7b9bb.cjs.map} +1 -1
  235. package/dist/promise.cjs +3 -3
  236. package/dist/rabin-gf2-polynomial.cjs +11 -11
  237. package/dist/rabin-uncached.cjs +11 -11
  238. package/dist/rabin.cjs +11 -11
  239. package/dist/random.cjs +1 -1
  240. package/dist/rsa-oaep.cjs +3 -3
  241. package/dist/rsa-oaep.cjs.map +1 -1
  242. package/dist/schema.cjs +572 -167
  243. package/dist/schema.cjs.map +1 -1
  244. package/dist/schema.d.ts +326 -122
  245. package/dist/schema.d.ts.map +1 -1
  246. package/dist/schema.test.d.ts +5 -0
  247. package/dist/schema.test.d.ts.map +1 -1
  248. package/dist/{sort-b8702761.cjs → sort-812cc211.cjs} +2 -2
  249. package/dist/{sort-b8702761.cjs.map → sort-812cc211.cjs.map} +1 -1
  250. package/dist/sort.cjs +2 -2
  251. package/dist/{statistics-c2316dca.cjs → statistics-65f6114b.cjs} +2 -2
  252. package/dist/{statistics-c2316dca.cjs.map → statistics-65f6114b.cjs.map} +1 -1
  253. package/dist/statistics.cjs +2 -2
  254. package/dist/{string-b2827a90.cjs → string-fddc5f8b.cjs} +3 -3
  255. package/dist/string-fddc5f8b.cjs.map +1 -0
  256. package/dist/string.cjs +1 -1
  257. package/dist/string.d.ts +3 -3
  258. package/dist/string.d.ts.map +1 -1
  259. package/dist/testing.cjs +16 -16
  260. package/dist/text.cjs +79 -0
  261. package/dist/text.cjs.map +1 -0
  262. package/dist/{time-bc2081b9.cjs → time-d8438852.cjs} +2 -2
  263. package/dist/{time-bc2081b9.cjs.map → time-d8438852.cjs.map} +1 -1
  264. package/dist/time.cjs +2 -2
  265. package/dist/traits.cjs +22 -0
  266. package/dist/traits.cjs.map +1 -1
  267. package/dist/traits.d.ts +1 -0
  268. package/dist/traits.d.ts.map +1 -1
  269. package/dist/traits.test.d.ts.map +1 -1
  270. package/dist/transformer.cjs +930 -0
  271. package/dist/transformer.cjs.map +1 -0
  272. package/dist/url.cjs +2 -1
  273. package/dist/url.cjs.map +1 -1
  274. package/dist/value.cjs +187 -0
  275. package/dist/value.cjs.map +1 -0
  276. package/dist/webcrypto.d.ts +1 -1
  277. package/dist/webcrypto.d.ts.map +1 -1
  278. package/dist/{websocket-40a601d4.cjs → websocket-b073d0fc.cjs} +3 -3
  279. package/dist/{websocket-40a601d4.cjs.map → websocket-b073d0fc.cjs.map} +1 -1
  280. package/dist/websocket.cjs +4 -4
  281. package/dom.d.ts +17 -0
  282. package/dom.d.ts.map +1 -1
  283. package/dom.js +21 -0
  284. package/encoding.d.ts +6 -6
  285. package/encoding.d.ts.map +1 -1
  286. package/encoding.js +1 -1
  287. package/error.d.ts +1 -0
  288. package/error.d.ts.map +1 -1
  289. package/error.js +6 -0
  290. package/list.d.ts +13 -3
  291. package/list.d.ts.map +1 -1
  292. package/list.js +36 -8
  293. package/map.d.ts +1 -0
  294. package/map.d.ts.map +1 -1
  295. package/map.js +6 -0
  296. package/math.d.ts.map +1 -1
  297. package/math.js +3 -1
  298. package/object.d.ts +3 -0
  299. package/object.d.ts.map +1 -1
  300. package/object.js +9 -1
  301. package/package.json +9 -3
  302. package/prng.d.ts +1 -1
  303. package/prng.d.ts.map +1 -1
  304. package/prng.js +1 -1
  305. package/schema.d.ts +326 -122
  306. package/schema.d.ts.map +1 -1
  307. package/schema.js +513 -141
  308. package/schema.test.d.ts +5 -0
  309. package/schema.test.d.ts.map +1 -1
  310. package/string.d.ts +3 -3
  311. package/string.d.ts.map +1 -1
  312. package/string.js +2 -2
  313. package/test.html +1 -0
  314. package/test.js +13 -1
  315. package/traits.d.ts +1 -0
  316. package/traits.d.ts.map +1 -1
  317. package/traits.js +21 -0
  318. package/traits.test.d.ts.map +1 -1
  319. package/webcrypto.d.ts +1 -1
  320. package/webcrypto.d.ts.map +1 -1
  321. package/coverage/tmp/coverage-20054-1752683240888-0.json +0 -1
  322. package/dist/broadcastchannel-2c4b0a1c.cjs.map +0 -1
  323. package/dist/buffer-a74f7330.cjs.map +0 -1
  324. package/dist/decoding-2b136346.cjs.map +0 -1
  325. package/dist/dom-16daf1a0.cjs.map +0 -1
  326. package/dist/encoding-1acb59c4.cjs.map +0 -1
  327. package/dist/error-8582d695.cjs.map +0 -1
  328. package/dist/map-0dabcc55.cjs.map +0 -1
  329. package/dist/math-08e068f9.cjs.map +0 -1
  330. package/dist/object-491858d1.cjs.map +0 -1
  331. package/dist/string-b2827a90.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d2.cjs","sources":["../delta/d2.js"],"sourcesContent":["/**\n * @beta this API is about to change\n */\n\nimport * as list from '../list.js'\nimport * as map_ from '../map.js'\nimport * as object from '../object.js'\nimport * as traits from '../traits.js'\nimport * as arr from '../array.js'\nimport * as fun from '../function.js'\nimport * as s from '../schema.js'\nimport * as error from '../error.js'\nimport * as math from '../math.js'\n\n/**\n * @typedef {{\n * insert?: string[]\n * insertAt?: number\n * delete?: string[]\n * deleteAt?: number\n * format?: Record<string,string[]>\n * formatAt?: number\n * }} Attribution\n */\n\n/**\n * @type {s.Schema<Attribution>}\n */\nexport const $attribution = s.$object({\n insert: s.$array(s.$string).optional,\n insertAt: s.$number.optional,\n delete: s.$array(s.$string).optional,\n deleteAt: s.$number.optional,\n format: s.$record(s.$string, s.$array(s.$string)).optional,\n formatAt: s.$number.optional\n})\n\n/**\n * @typedef {s.Unwrap<$anyOp>} DeltaOps\n */\n\n/**\n * @typedef {{ [key: string]: any }} FormattingAttributes\n */\n\n/**\n * @typedef {{\n * name?: string\n * attrs?: { [Key in string|number|symbol]: DeltaAttrOpJSON },\n * children?: Array<DeltaListOpJSON>\n * }} DeltaJSON\n */\n\n/**\n * @typedef {{ insert: string|Array<any>, format?: { [key: string]: any }, attribution?: Attribution } | { delete: number } | { retain: number, format?: { [key:string]: any }, attribution?: Attribution } | { modify: object }} DeltaListOpJSON\n */\n\n/**\n * @typedef {{ type: 'insert', value: any, prevValue?: any, attribution?: Attribution } | { type: 'delete', prevValue?: any, attribution?: Attribution } | { type: 'modify', modify: DeltaJSON }} DeltaAttrOpJSON\n */\n\n/**\n * @type {s.Schema<DeltaAttrOpJSON>}\n */\nexport const $deltaMapChangeJson = s.$union(\n s.$object({ type: s.$literal('insert'), value: s.$any, prevValue: s.$any.optional, attribution: $attribution.optional }),\n s.$object({ type: s.$literal('modify'), modify: s.$any }),\n s.$object({ type: s.$literal('delete'), prevValue: s.$any.optional, attribution: $attribution.optional })\n)\n\n/**\n * @template {{[key:string]: any} | null} Attrs\n * @param {Attrs} attrs\n * @return {Attrs}\n */\nconst _cloneAttrs = attrs => attrs == null ? attrs : { ...attrs }\n/**\n * @template {any} MaybeDelta\n * @param {MaybeDelta} maybeDelta\n * @return {MaybeDelta}\n */\nconst _cloneMaybeDelta = maybeDelta => $deltaAny.check(maybeDelta) ? maybeDelta.clone() : maybeDelta\n\nexport class TextOp extends list.ListNode {\n /**\n * @param {string} insert\n * @param {FormattingAttributes|null} format\n * @param {Attribution?} attribution\n */\n constructor (insert, format, attribution) {\n super()\n this.insert = insert\n this.format = format\n this.attribution = attribution\n }\n\n /**\n * @return {'insert'}\n */\n get type () {\n return 'insert'\n }\n\n get length () {\n return this.insert.length\n }\n\n /**\n * Remove a part of the operation (similar to Array.splice)\n *\n * @param {number} offset\n * @param {number} len\n */\n _splice (offset, len) {\n this.insert = this.insert.slice(0, offset) + this.insert.slice(offset + len)\n }\n\n /**\n * @return {DeltaListOpJSON}\n */\n toJSON () {\n const { insert, format, attribution } = this\n return object.assign({ insert }, format != null ? { format } : ({}), attribution != null ? { attribution } : ({}))\n }\n\n /**\n * @param {TextOp} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n /**\n * @return {TextOp}\n */\n clone () {\n return new TextOp(this.insert, _cloneAttrs(this.format), _cloneAttrs(this.attribution))\n }\n}\n\n/**\n * @template ArrayContent\n */\nexport class InsertOp extends list.ListNode {\n /**\n * @param {Array<ArrayContent>} insert\n * @param {FormattingAttributes|null} format\n * @param {Attribution?} attribution\n */\n constructor (insert, format, attribution) {\n super()\n this.insert = insert\n this.format = format\n this.attribution = attribution\n }\n\n /**\n * @return {'insert'}\n */\n get type () {\n return 'insert'\n }\n\n get length () {\n return this.insert.length\n }\n\n /**\n * Remove a part of the operation (similar to Array.splice)\n *\n * @param {number} offset\n * @param {number} len\n */\n _splice (offset, len) {\n this.insert.splice(offset, len)\n }\n\n /**\n * @return {DeltaListOpJSON}\n */\n toJSON () {\n const { insert, format, attribution } = this\n return object.assign({ insert: insert.map(ins => $deltaAny.check(ins) ? ins.toJSON() : ins) }, format ? { format } : ({}), attribution != null ? { attribution } : ({}))\n }\n\n /**\n * @param {InsertOp<ArrayContent>} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return fun.equalityDeep(this.insert, other.insert) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n /**\n * @return {InsertOp<ArrayContent>}\n */\n clone () {\n return new InsertOp(this.insert.slice(), _cloneAttrs(this.format), _cloneAttrs(this.attribution))\n }\n}\n\nexport class DeleteOp extends list.ListNode {\n /**\n * @param {number} len\n */\n constructor (len) {\n super()\n this.delete = len\n }\n\n /**\n * @return {'delete'}\n */\n get type () {\n return 'delete'\n }\n\n get length () {\n return 0\n }\n\n /**\n * Remove a part of the operation (similar to Array.splice)\n *\n * @param {number} _offset\n * @param {number} len\n */\n _splice (_offset, len) {\n this.delete -= len\n }\n\n /**\n * @return {DeltaListOpJSON}\n */\n toJSON () {\n return { delete: this.delete }\n }\n\n /**\n * @param {DeleteOp} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.delete === other.delete\n }\n\n clone () {\n return new DeleteOp(this.delete)\n }\n}\n\nexport class RetainOp extends list.ListNode {\n /**\n * @param {number} retain\n * @param {FormattingAttributes|null} format\n * @param {Attribution?} attribution\n */\n constructor (retain, format, attribution) {\n super()\n this.retain = retain\n this.format = format\n this.attribution = attribution\n }\n\n /**\n * @return {'retain'}\n */\n get type () {\n return 'retain'\n }\n\n get length () {\n return this.retain\n }\n\n /**\n * Remove a part of the operation (similar to Array.splice)\n *\n * @param {number} _offset\n * @param {number} len\n */\n _splice (_offset, len) {\n this.retain -= len\n }\n\n /**\n * @return {DeltaListOpJSON}\n */\n toJSON () {\n const { retain, format, attribution } = this\n return object.assign({ retain }, format ? { format } : {}, attribution != null ? { attribution } : {})\n }\n\n /**\n * @param {RetainOp} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.retain === other.retain && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n clone () {\n return new RetainOp(this.retain, _cloneAttrs(this.format), _cloneAttrs(this.attribution))\n }\n}\n\n/**\n * Delta that can be applied on a YType Embed\n *\n * @template {Delta<any,any,any,any,any>} DTypes\n */\nexport class ModifyOp extends list.ListNode {\n /**\n * @param {DTypes} delta\n * @param {FormattingAttributes|null} format\n * @param {Attribution?} attribution\n */\n constructor (delta, format, attribution) {\n super()\n this.modify = delta\n this.format = format\n this.attribution = attribution\n }\n\n /**\n * @return {'modify'}\n */\n get type () {\n return 'modify'\n }\n\n get length () {\n return 1\n }\n\n /**\n * Remove a part of the operation (similar to Array.splice)\n *\n * @param {number} _offset\n * @param {number} _len\n */\n _splice (_offset, _len) {\n }\n\n /**\n * @return {DeltaListOpJSON}\n */\n toJSON () {\n const { modify, attribution, format } = this\n return object.assign({ modify: modify.toJSON() }, format ? { format } : {}, attribution != null ? { attribution } : {})\n }\n\n /**\n * @param {ModifyOp<any>} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.modify[traits.EqualityTraitSymbol](other.modify) && fun.equalityDeep(this.format, other.format) && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n /**\n * @return {ModifyOp<DTypes>}\n */\n clone () {\n return new ModifyOp(this.modify.clone(), _cloneAttrs(this.format), _cloneAttrs(this.attribution))\n }\n}\n\n/**\n * @template V\n * @template [K=string]\n */\nexport class MapInsertOp {\n /**\n * @param {K} key\n * @param {V} value\n * @param {V|undefined} prevValue\n * @param {Attribution?} attribution\n */\n constructor (key, value, prevValue, attribution) {\n /**\n * @type {K}\n */\n this.key = key\n /**\n * @type {V}\n */\n this.value = value\n /**\n * @type {V|undefined}\n */\n this.prevValue = prevValue\n this.attribution = attribution\n }\n\n /**\n * @return {'insert'}\n */\n get type () { return 'insert' }\n\n toJSON () {\n const v = this.value\n const prevValue = this.prevValue\n const attribution = this.attribution\n return object.assign({\n type: this.type,\n value: $deltaAny.check(v) ? v.toJSON() : v\n }, attribution != null ? { attribution } : {}, prevValue !== undefined ? { prevValue } : {})\n }\n\n /**\n * @param {MapInsertOp<V>} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.key === other.key && fun.equalityDeep(this.value, other.value) && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n /**\n * @return {MapInsertOp<V,K>}\n */\n clone () {\n return new MapInsertOp(this.key, _cloneMaybeDelta(this.value), _cloneMaybeDelta(this.prevValue), _cloneAttrs(this.attribution))\n }\n}\n\n/**\n * @template V\n * @template [K=string]\n */\nexport class MapDeleteOp {\n /**\n * @param {K} key\n * @param {V|undefined} prevValue\n * @param {Attribution?} attribution\n */\n constructor (key, prevValue, attribution) {\n /**\n * @type {K}\n */\n this.key = key\n /**\n * @type {V|undefined}\n */\n this.prevValue = prevValue\n this.attribution = attribution\n }\n\n get value () { return undefined }\n\n /**\n * @type {'delete'}\n */\n get type () { return 'delete' }\n\n /**\n * @return {DeltaAttrOpJSON}\n */\n toJSON () {\n const {\n type, attribution, prevValue\n } = this\n return object.assign({ type }, attribution != null ? { attribution } : {}, prevValue !== undefined ? { prevValue } : {})\n }\n\n /**\n * @param {MapDeleteOp<V>} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.key === other.key && fun.equalityDeep(this.attribution, other.attribution)\n }\n\n clone () {\n return new MapDeleteOp(this.key, _cloneMaybeDelta(this.prevValue), _cloneAttrs(this.attribution))\n }\n}\n\n/**\n * @template {Delta} Modifier\n * @template [K=string]\n */\nexport class MapModifyOp {\n /**\n * @param {K} key\n * @param {Modifier} delta\n */\n constructor (key, delta) {\n /**\n * @type {K}\n */\n this.key = key\n /**\n * @type {Modifier}\n */\n this.value = delta\n }\n\n /**\n * @type {'modify'}\n */\n get type () { return 'modify' }\n\n /**\n * @return {DeltaAttrOpJSON}\n */\n toJSON () {\n return {\n type: this.type,\n modify: this.value.toJSON()\n }\n }\n\n /**\n * @param {MapModifyOp<Modifier>} other\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.key === other.key && this.value[traits.EqualityTraitSymbol](other.value)\n }\n\n /**\n * @return {MapModifyOp<Modifier,K>}\n */\n clone () {\n return new MapModifyOp(this.key, this.value.clone())\n }\n}\n\n/**\n * @type {s.Schema<MapDeleteOp<any> | DeleteOp>}\n */\nexport const $deleteOp = s.$custom(o => o != null && (o.constructor === DeleteOp || o.constructor === MapDeleteOp))\n\n/**\n * @type {s.Schema<MapInsertOp<any> | InsertOp<any>>}\n */\nexport const $insertOp = s.$custom(o => o != null && (o.constructor === MapInsertOp || o.constructor === InsertOp))\n\n/**\n * @template Content\n * @param {s.Schema<Content>} $content\n * @return {s.Schema<MapInsertOp<Content> | InsertOp<Content>>}\n */\nexport const $insertOpWith = $content => s.$custom(o =>\n o != null && (\n (o.constructor === MapInsertOp && $content.check(/** @type {MapInsertOp<Content>} */ (o).value)) ||\n (o.constructor === InsertOp && /** @type {InsertOp<Content>} */ (o).insert.every(ins => $content.check(ins)))\n )\n)\n\n/**\n * @type {s.Schema<TextOp>}\n */\nexport const $textOp = s.$constructedBy(TextOp)\n\n/**\n * @type {s.Schema<RetainOp>}\n */\nexport const $retainOp = s.$constructedBy(RetainOp)\n\n/**\n * @type {s.Schema<MapModifyOp<any> | ModifyOp<any>>}\n */\nexport const $modifyOp = s.$custom(o => o != null && (o.constructor === MapModifyOp || o.constructor === ModifyOp))\n\n/**\n * @template {Delta} Modify\n * @param {s.Schema<Modify>} $content\n * @return {s.Schema<MapModifyOp<Modify> | ModifyOp<Modify>>}\n */\nexport const $modifyOpWith = $content => s.$custom(o =>\n o != null && (\n (o.constructor === MapModifyOp && $content.check(/** @type {MapModifyOp<Modify>} */ (o).value)) ||\n (o.constructor === ModifyOp && $content.check(/** @type {ModifyOp<Modify>} */ (o).modify))\n )\n)\n\nexport const $anyOp = s.$union($insertOp, $deleteOp, $textOp, $modifyOp)\n\n/**\n * @template {Array<any>|string} C1\n * @template {Array<any>|string} C2\n * @typedef {Extract<C1 | C2, Array<any>> extends never\n * ? never\n * : (Array<(Extract<C1 | C2,Array<any>> extends Array<infer AC1> ? (unknown extends AC1 ? never : AC1) : never)>)} MergeListArrays\n */\n\n/**\n * @template {{[Key in string|number|symbol]: any}} Attrs\n * @template {string|number|symbol} Key\n * @template {any} Val\n * @typedef {{ [K in (Key | keyof Attrs)]: (unknown extends Attrs[K] ? never : Attrs[K]) | (Key extends K ? Val : never) }} AddToAttrs\n */\n\n/**\n * @template {{[Key in string|number|symbol]: any}} Attrs\n * @template {{[Key in string|number|symbol]: any}} NewAttrs\n * @typedef {{ [K in (keyof NewAttrs | keyof Attrs)]: (unknown extends Attrs[K] ? never : Attrs[K]) | (unknown extends NewAttrs[K] ? never : NewAttrs[K]) }} MergeAttrs\n */\n\n/**\n * @template X\n * @typedef {0 extends (1 & X) ? null : X} _AnyToNull\n */\n\n/**\n * @template {s.Schema<Delta<any,any,any,any,any>>|null} Schema\n * @typedef {_AnyToNull<Schema> extends null ? Delta<any,{[key:string|number|symbol]:any},any,string> : (Schema extends s.Schema<infer D> ? D : never)} AllowedDeltaFromSchema\n */\n\n/**\n * @template {string} [NodeName=any]\n * @template {{[key:string|number|symbol]:any}} [out Attrs={}]\n * @template {any} [out Children=never]\n * @template {string|never} [out Text=never]\n * @template {s.Schema<Delta<any,any,any,any,any>>|null} [Schema=any]\n */\nexport class Delta {\n /**\n * @param {NodeName} [name]\n * @param {Schema} [$schema]\n */\n constructor (name, $schema) {\n this.name = name || null\n this.$schema = $schema || null\n /**\n * @type {Map<keyof Attrs, { [K in keyof Attrs]: MapInsertOp<Attrs[K],K>|MapDeleteOp<Attrs[K],K>|(Delta extends Attrs[K] ? MapModifyOp<Extract<Attrs[K],Delta>,K> : never) }[keyof Attrs]>}\n */\n this.attrs = map_.create()\n /**\n * @type {list.List<\n * RetainOp\n * | DeleteOp\n * | (Text extends never ? never : TextOp)\n * | (Children extends never ? never : InsertOp<Children>)\n * | (Delta extends Children ? ModifyOp<Extract<Children,Delta>> : never)\n * >}\n */\n this.children = /** @type {any} */ (list.create())\n /**\n * @type {FormattingAttributes?}\n */\n this.usedAttributes = null\n /**\n * @type {Attribution?}\n */\n this.usedAttribution = null\n /**\n * @type {any}\n */\n this.origin = null\n }\n\n isEmpty () {\n return this.attrs.size === 0 && list.isEmpty(this.children)\n }\n\n /**\n * @return {DeltaJSON}\n */\n toJSON () {\n /**\n * @type {any}\n */\n const attrs = {}\n /**\n * @type {any}\n */\n const children = []\n this.attrs.forEach(attr => {\n attrs[attr.key] = attr.toJSON()\n })\n this.children.forEach(val => {\n children.push(val.toJSON())\n })\n return object.assign(\n (this.name != null ? { name: this.name } : {}),\n (object.isEmpty(attrs) ? {} : { attrs }),\n (children.length > 0 ? { children } : {})\n )\n }\n\n /**\n * @param {Delta<any,any,any,any,any>} other\n * @return {boolean}\n */\n equals (other) {\n return this[traits.EqualityTraitSymbol](other)\n }\n\n /**\n * @return {this}\n */\n clone () {\n /**\n * @type {Delta<any,{[k:string|number|symbol]:any},any,any>}\n */\n const d = new Delta(/** @type {any} */ (this.name), this.$schema)\n d.origin = this.origin\n this.attrs.forEach(op => {\n d.attrs.set(op.key, /** @type {any} */ (op))\n })\n this.children.forEach(op => {\n list.pushEnd(d.children, op.clone())\n })\n return /** @type {any} */ (d)\n }\n\n /**\n * @param {any} other\n * @return {boolean}\n */\n [traits.EqualityTraitSymbol] (other) {\n return this.name === other.name && fun.equalityDeep(this.attrs, other.attrs) && fun.equalityDeep(this.children, other.children)\n }\n\n /**\n * @param {Attribution?} attribution\n */\n useAttribution (attribution) {\n this.usedAttribution = attribution\n return this\n }\n\n /**\n * @param {FormattingAttributes?} attributes\n * @return {this}\n */\n useAttributes (attributes) {\n this.usedAttributes = attributes\n return this\n }\n\n /**\n * @param {string} name\n * @param {any} value\n */\n updateUsedAttributes (name, value) {\n if (value == null) {\n this.usedAttributes = object.assign({}, this.usedAttributes)\n delete this.usedAttributes?.[name]\n if (object.isEmpty(this.usedAttributes)) {\n this.usedAttributes = null\n }\n } else if (!fun.equalityDeep(this.usedAttributes?.[name], value)) {\n this.usedAttributes = object.assign({}, this.usedAttributes)\n this.usedAttributes[name] = value\n }\n return this\n }\n\n /**\n * @template {keyof Attribution} NAME\n * @param {NAME} name\n * @param {Attribution[NAME]?} value\n */\n updateUsedAttribution (name, value) {\n if (value == null) {\n this.usedAttribution = object.assign({}, this.usedAttribution)\n delete this.usedAttribution?.[name]\n if (object.isEmpty(this.usedAttribution)) {\n this.usedAttribution = null\n }\n } else if (!fun.equalityDeep(this.usedAttribution?.[name], value)) {\n this.usedAttribution = object.assign({}, this.usedAttribution)\n this.usedAttribution[name] = value\n }\n return this\n }\n\n /**\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,any,infer Children,infer Text,infer Schema> ? ((Children extends never ? never : Array<Children>) | Text) : never} NewContent\n * @param {NewContent} insert\n * @param {FormattingAttributes?} [formatting]\n * @param {Attribution?} [attribution]\n * @return {Delta<\n * NodeName,\n * Attrs,\n * Exclude<NewContent,string>[number]|Children,\n * (Extract<NewContent,string>|Text) extends string ? string : never,\n * Schema\n * >}\n */\n insert (insert, formatting = null, attribution = null) {\n const mergedAttributes = mergeAttrs(this.usedAttributes, formatting)\n const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)\n /**\n * @param {TextOp | InsertOp<any>} lastOp\n */\n const checkMergedEquals = lastOp => (mergedAttributes === lastOp.format || fun.equalityDeep(mergedAttributes, lastOp.format)) && (mergedAttribution === lastOp.attribution || fun.equalityDeep(mergedAttribution, lastOp.attribution))\n const end = this.children.end\n if (s.$string.check(insert)) {\n if ($textOp.check(end) && checkMergedEquals(end)) {\n end.insert += insert\n } else if (insert.length > 0) {\n list.pushEnd(this.children, new TextOp(insert, object.isEmpty(mergedAttributes) ? null : mergedAttributes, object.isEmpty(mergedAttribution) ? null : mergedAttribution))\n }\n } else if (arr.isArray(insert)) {\n if ($insertOp.check(end) && checkMergedEquals(end)) {\n end.insert.push(...insert)\n } else if (insert.length > 0) {\n list.pushEnd(this.children, new InsertOp(insert, object.isEmpty(mergedAttributes) ? null : mergedAttributes, object.isEmpty(mergedAttribution) ? null : mergedAttribution))\n }\n }\n return /** @type {any} */ (this)\n }\n\n /**\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,any,infer Children,any,any> ? Extract<Children,Delta<any,any,any,any,any>> : never} NewContent\n * @param {NewContent} modify\n * @param {FormattingAttributes?} formatting\n * @param {Attribution?} attribution\n * @return {Delta<\n * NodeName,\n * Attrs,\n * Exclude<NewContent,string>[number]|Children,\n * (Extract<NewContent,string>|Text) extends string ? string : never,\n * Schema\n * >}\n */\n modify (modify, formatting = null, attribution = null) {\n const mergedAttributes = mergeAttrs(this.usedAttributes, formatting)\n const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)\n list.pushEnd(this.children, new ModifyOp(modify, object.isEmpty(mergedAttributes) ? null : mergedAttributes, object.isEmpty(mergedAttribution) ? null : mergedAttribution))\n return /** @type {any} */ (this)\n }\n\n /**\n * @param {number} len\n * @param {FormattingAttributes?} [format]\n * @param {Attribution?} [attribution]\n */\n retain (len, format = null, attribution = null) {\n const mergedFormats = mergeAttrs(this.usedAttributes, format)\n const mergedAttribution = mergeAttrs(this.usedAttribution, attribution)\n const lastOp = /** @type {RetainOp|InsertOp<any>} */ (this.children.end)\n if (lastOp instanceof RetainOp && fun.equalityDeep(mergedFormats, lastOp.format) && fun.equalityDeep(mergedAttribution, lastOp.attribution)) {\n lastOp.retain += len\n } else if (len > 0) {\n list.pushEnd(this.children, new RetainOp(len, mergedFormats, mergedAttribution))\n }\n return this\n }\n\n /**\n * @param {number} len\n * @return {this}\n */\n delete (len) {\n const lastOp = /** @type {DeleteOp|InsertOp<any>} */ (this.children.end)\n if (lastOp instanceof DeleteOp) {\n lastOp.delete += len\n } else if (len > 0) {\n list.pushEnd(this.children, new DeleteOp(len))\n }\n return this\n }\n\n /**\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? (keyof Attrs) : never} Key\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? (Attrs[Key]) : never} Val\n * @param {Key} key\n * @param {Val} val\n * @param {Attribution?} attribution\n * @param {Val|undefined} [prevValue]\n * @return {Delta<\n * NodeName,\n * { [K in keyof AddToAttrs<Attrs,Key,Val>]: AddToAttrs<Attrs,Key,Val>[K] },\n * Children,\n * Text,\n * Schema\n * >}\n */\n set (key, val, attribution = null, prevValue) {\n this.attrs.set(key, /** @type {any} */ (new MapInsertOp(key, val, prevValue, mergeAttrs(this.usedAttribution, attribution))))\n return /** @type {any} */ (this)\n }\n\n /**\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer Attrs,any,any,any> ? Attrs : never} NewAttrs\n * @param {NewAttrs} attrs\n * @param {Attribution?} attribution\n * @return {Delta<\n * NodeName,\n * { [K in keyof MergeAttrs<Attrs,NewAttrs>]: MergeAttrs<Attrs,NewAttrs>[K] },\n * Children,\n * Text,\n * Schema\n * >}\n */\n setMany (attrs, attribution = null) {\n for (const k in attrs) {\n this.set(/** @type {any} */ (k), attrs[k], attribution)\n }\n return /** @type {any} */ (this)\n }\n\n /**\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer As,any,any,any> ? keyof As : never} Key\n * @param {Key} key\n * @param {Attribution?} attribution\n * @param {any} [prevValue]\n * @return {Delta<\n * NodeName,\n * { [K in keyof AddToAttrs<Attrs,Key,never>]: AddToAttrs<Attrs,Key,never>[K] },\n * Children,\n * Text,\n * Schema\n * >}\n */\n unset (key, attribution = null, prevValue) {\n this.attrs.set(key, /** @type {any} */ (new MapDeleteOp(key, prevValue, mergeAttrs(this.usedAttribution, attribution))))\n return this\n }\n\n /**\n * @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\n * @template {AllowedDeltaFromSchema<Schema> extends Delta<any,infer As,any,any,any> ? Extract<As[Key],Delta<any,any,any,any,any>> : never} D\n * @param {Key} key\n * @param {D} modify\n * @return {Delta<\n * NodeName,\n * { [K in keyof AddToAttrs<Attrs,Key,D>]: AddToAttrs<Attrs,Key,D>[K] },\n * Children,\n * Text,\n * Schema\n * >}\n */\n update (key, modify) {\n this.attrs.set(key, /** @type {any} */ (new MapModifyOp(key, modify)))\n return /** @type {any} */ (this)\n }\n\n /**\n * @param {Delta<NodeName,Partial<Attrs>,Children,Text,any>} other\n * @return {this}\n */\n apply (other) {\n this.$schema?.expect(other)\n // apply attrs\n ;/** @type {Delta<NodeName,Attrs,Children,Text,any>} */ (/** @type {any} */ (other)).attrs.forEach(op => {\n const c = this.attrs.get(op.key)\n if ($modifyOp.check(op)) {\n if ($deltaAny.check(c?.value)) {\n /** @type {Delta} */ (c.value).apply(op.value)\n } else {\n // then this is a simple modify\n this.attrs.set(op.key, /** @type {any} */ (op))\n }\n } else {\n /** @type {MapInsertOp<any>} */ (op).prevValue = c?.value\n this.attrs.set(op.key, /** @type {any} */ (op))\n }\n })\n // apply children\n let opsI = this.children.start\n let offset = 0\n other.children.forEach(op => {\n if ($textOp.check(op) || $insertOp.check(op)) {\n if (offset === 0) {\n list.insertBetween(this.children, opsI == null ? this.children.end : opsI.prev, opsI, op.clone())\n } else {\n if (opsI == null) error.unexpectedCase()\n const cpy = opsI.clone()\n cpy._splice(0, offset)\n opsI._splice(offset, opsI.length - offset)\n list.insertBetween(this.children, opsI, opsI.next || null, cpy)\n list.insertBetween(this.children, opsI, cpy || null, op)\n offset = 0\n }\n } else if ($retainOp.check(op)) {\n let skipLen = op.length\n while (opsI != null && opsI.length - offset <= skipLen) {\n skipLen -= opsI.length - offset\n opsI = opsI?.next || null\n offset = 0\n }\n if (opsI != null) {\n offset += skipLen\n } else {\n list.pushEnd(this.children, new RetainOp(skipLen, op.format, op.attribution))\n }\n } else if ($deleteOp.check(op)) {\n let remainingLen = op.delete\n while (remainingLen > 0) {\n if (opsI == null) {\n list.pushEnd(this.children, new DeleteOp(remainingLen))\n break\n } else if (opsI instanceof DeleteOp) {\n const delLen = opsI.length - offset\n // the same content can't be deleted twice, remove duplicated deletes\n if (delLen >= remainingLen) {\n offset = 0\n opsI = opsI.next\n } else {\n offset += remainingLen\n }\n remainingLen -= delLen\n } else { // insert / embed / retain / modify ⇒ replace\n // case1: delete o fully\n // case2: delete some part of beginning\n // case3: delete some part of end\n // case4: delete some part of center\n const delLen = math.min(opsI.length - offset, remainingLen)\n if (opsI.length === delLen) {\n // case 1\n offset = 0\n list.remove(this.children, opsI)\n } else if (offset === 0) {\n // case 2\n offset = 0\n opsI._splice(0, delLen)\n } else if (offset + delLen === opsI.length) {\n // case 3\n opsI._splice(offset, delLen)\n offset = 0\n opsI = opsI.next\n } else {\n // case 4\n opsI._splice(offset, delLen)\n }\n remainingLen -= delLen\n }\n }\n } else if ($modifyOp.check(op)) {\n if (opsI == null) {\n list.pushEnd(this.children, op.clone())\n return\n }\n if ($modifyOp.check(opsI)) {\n opsI.modify.apply(op.modify)\n } else if ($textOp.check(opsI) || $insertOp.check(opsI)) {\n const d = opsI.insert[offset]\n if (!$deltaAny.check(d)) {\n // probably incompatible delta. can only modify deltas\n error.unexpectedCase()\n }\n d.apply(op.modify)\n } else if ($retainOp.check(opsI)) {\n if (offset > 0) {\n const cpy = opsI.clone()\n cpy._splice(offset, opsI.length - offset) // skipped len\n opsI._splice(0, offset) // new remainder\n list.insertBetween(this.children, opsI.prev, opsI, cpy) // insert skipped len\n offset = 0\n }\n // not deleting opsI, because current idea is that modify should not\n // advance content\n list.insertBetween(this.children, opsI.prev, opsI, op.clone()) // insert skipped len\n if (opsI.length === 1) {\n list.remove(this.children, opsI)\n } else {\n opsI._splice(0, 1)\n }\n } else if ($deleteOp.check(opsI)) {\n // nop\n } else {\n error.unexpectedCase()\n }\n } else {\n error.unexpectedCase()\n }\n })\n return this\n }\n\n /**\n * @param {Delta<any,any,any,any,any>} other\n * @param {boolean} priority\n */\n rebase (other, priority) {\n // @todo rebase children\n /**\n * Rebase attributes\n *\n * - insert vs delete ⇒ insert takes precedence\n * - insert vs modify ⇒ insert takes precedence\n * - insert vs insert ⇒ priority decides\n * - delete vs modify ⇒ delete takes precedence\n * - delete vs delete ⇒ current delete op is removed because item has already been deleted\n * - modify vs modify ⇒ rebase using priority\n */\n this.attrs.forEach(op => {\n if ($insertOp.check(op)) {\n if ($insertOp.check(other.attrs.get(op.key)) && !priority) {\n this.attrs.delete(op.key)\n }\n } else if ($deleteOp.check(op)) {\n const otherOp = other.attrs.get(op.key)\n if ($insertOp.check(otherOp)) {\n this.attrs.delete(otherOp.key)\n }\n } else if ($modifyOp.check(op)) {\n const otherOp = other.attrs.get(op.key)\n if (otherOp == null) {\n // nop\n } else if ($modifyOp.check(otherOp)) {\n op.value.rebase(otherOp.value, priority)\n } else {\n this.attrs.delete(otherOp.key)\n }\n }\n })\n return this\n }\n\n done () {\n const cs = this.children\n for (let end = cs.end; end !== null && $retainOp.check(end) && end.format == null; end = cs.end) {\n list.popEnd(cs)\n }\n return this\n }\n}\n\n/**\n * @template {string} NodeName\n * @template {{ [key: string|number|symbol]: any }} [Attrs={}]\n * @template {any} [Children=never]\n * @template {string|never} [Text=never]\n * @typedef {Delta<NodeName,Attrs,Children|RecursiveDelta<NodeName,Attrs,Children>,Text>} RecursiveDelta\n */\n\n/**\n * @template {string} [NodeName=any]\n * @template {{ [key: string|number|symbol]: any }} [Attrs={}]\n * @template {any} [Children=never]\n * @template {boolean} [HasText=false]\n * @template {boolean} [Recursive=false]\n * @param {object} opts\n * @param {s.Schema<NodeName>?} [opts.name]\n * @param {s.Schema<Attrs>?} [opts.attrs]\n * @param {s.Schema<Children>?} [opts.children]\n * @param {HasText} [opts.hasText]\n * @param {Recursive} [opts.recursive]\n * @return {s.Schema<Delta<\n * NodeName,\n * Attrs,\n * Children|(Recursive extends true ? RecursiveDelta<NodeName,Attrs,Children,HasText extends true ? string : never> : never),\n * HasText extends true ? string : never\n * >>}\n */\nexport const $delta = ({ name, attrs, children, hasText, recursive }) => {\n name = name == null ? s.$any : name\n /**\n * @type {s.Schema<Array<any>>}\n */\n let $arrContent = children == null ? s.$never : s.$array(children)\n const $attrsPartial = attrs == null ? s.$object({}) : (s.$$object.check(attrs) ? attrs.partial : attrs)\n const $d = s.$instanceOf(Delta, /** @param {Delta<any,any,any,any,any>} d */ d => {\n if (\n !name.check(d.name) ||\n Array.from(d.attrs.entries()).some(\n ([k, op]) => $insertOp.check(op) && !$attrsPartial.check({ [k]: op.value })\n )\n ) return false\n for (const op of d.children) {\n if ((!hasText && $textOp.check(op)) || ($insertOp.check(op) && !$arrContent.check(op.insert))) {\n return false\n }\n }\n return true\n })\n if (recursive) {\n $arrContent = children == null ? s.$array($d) : s.$array(children, $d)\n }\n return /** @type {any} */ ($d)\n}\n\nexport const $deltaAny = s.$instanceOf(Delta)\n\n/**\n * Helper function to merge attribution and attributes. The latter input \"wins\".\n *\n * @template {{ [key: string]: any }} T\n * @param {T | null} a\n * @param {T | null} b\n */\nexport const mergeAttrs = (a, b) => object.isEmpty(a) ? b : (object.isEmpty(b) ? a : object.assign({}, a, b))\n\n/**\n * @template {Delta?} D\n * @param {D} a\n * @param {D} b\n * @return {D}\n */\nexport const mergeDeltas = (a, b) => {\n if (a != null && b != null) {\n const c = /** @type {Exclude<D,null>} */ (a.clone())\n c.apply(b)\n return c\n }\n return a == null ? b : (a || null)\n}\n\n/**\n * @overload\n * @return {Delta<any,{},never,never,null>}\n */\n/**\n * @template {string} NodeName\n * @overload\n * @param {NodeName} nodeName\n * @return {Delta<NodeName,{},never,never,null>}\n */\n/**\n * @template {string} NodeName\n * @template {s.Schema<Delta<any,any,any,any,any>>} Schema\n * @overload\n * @param {NodeName} nodeName\n * @param {Schema} schema\n * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? Delta<NodeName,Attrs,Children,Text,Schema> : never}\n */\n/**\n * @template {s.Schema<Delta<any,any,any,any,any>>} Schema\n * @overload\n * @param {Schema} schema\n * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? Delta<N,Attrs,Children,Text,Schema> : never}\n */\n/**\n * @template {string|null} NodeName\n * @template {{[k:string|number|symbol]:any}|null} Attrs\n * @template {Array<Array<any>|string>} Children\n * @overload\n * @param {NodeName} nodeName\n * @param {Attrs} attrs\n * @param {...Children} children\n * @return {Delta<\n * NodeName extends null ? any : NodeName,\n * Attrs extends null ? {} : Attrs,\n * Extract<Children[number],Array<any>> extends Array<infer Ac> ? (unknown extends Ac ? never : Ac) : never,\n * Extract<Children[number],string>,\n * null\n * >}\n */\n/**\n * @param {string|s.Schema<Delta<any,any,any,any,any>>} [nodeNameOrSchema]\n * @param {{[K:string|number|symbol]:any}|s.Schema<Delta<any,any,any,any,any>>} [attrsOrSchema]\n * @param {Array<Array<any>|string>} children\n * @return {Delta<any,any,any,any,any>}\n */\nexport const create = (nodeNameOrSchema, attrsOrSchema, ...children) => {\n const nodeName = /** @type {any} */ (s.$string.check(nodeNameOrSchema) ? nodeNameOrSchema : null)\n const schema = /** @type {any} */ (s.$$schema.check(nodeNameOrSchema) ? nodeNameOrSchema : (s.$$schema.check(attrsOrSchema) ? attrsOrSchema : null))\n const d = /** @type {Delta<any,any,any,string,null>} */ (new Delta(nodeName, schema))\n if (s.$objectAny.check(attrsOrSchema)) {\n d.setMany(attrsOrSchema)\n }\n if (s.$arrayAny.check(children)) {\n children.forEach(v => {\n d.insert(v)\n })\n }\n return d\n}\n\n// DELTA TEXT\n\n/**\n * @template [Embeds=never]\n * @typedef {Delta<any,{},Embeds,string>} TextDelta\n */\n\n/**\n * @template {Array<s.Schema<any>>} [$Embeds=any]\n * @param {$Embeds} $embeds\n * @return {s.Schema<TextDelta<_AnyToNull<$Embeds> extends null ? never : ($Embeds extends Array<s.Schema<infer $C>> ? $C : never)>>}\n */\nexport const $text = (...$embeds) => /** @type {any} */ ($delta({ children: s.$union(...$embeds), hasText: true }))\nexport const $textOnly = $text()\n\n/**\n * @template {s.Schema<Delta<any,{},any,any,null>>} [Schema=s.Schema<Delta<any,{},never,string,null>>]\n * @param {Schema} [$schema]\n * @return {Schema extends s.Schema<Delta<infer N,infer Attrs,infer Children,infer Text,any>> ? Delta<N,Attrs,Children,Text,Schema> : never}\n */\nexport const text = $schema => /** @type {any} */ (create($schema || $textOnly))\n\n/**\n * @template {any} Children\n * @typedef {Delta<any,{},Children,never>} ArrayDelta\n */\n\n/**\n * @template {s.Schema<any>} $Children\n * @param {$Children} [$children]\n * @return {s.Schema<ArrayDelta<$Children>>}\n */\nexport const $array = $children => $delta({ children: $children })\n\n/**\n * @template {s.Schema<ArrayDelta<any>>} [$Schema=never]\n * @param {$Schema} $schema\n * @return {$Schema extends never ? ArrayDelta<never> : Delta<any,{},never,never,$Schema>}\n */\nexport const array = $schema => /** @type {any} */ ($schema ? create($schema) : create())\n\n/**\n * @template {{ [K: string|number|symbol]: any }} Attrs\n * @typedef {Delta<any,Attrs,never,never>} MapDelta\n */\n\n/**\n * @template {{ [K: string|number|symbol]: any }} $Attrs\n * @param {s.Schema<$Attrs>} $attrs\n * @return {s.Schema<MapDelta<$Attrs>>}\n */\nexport const $map = $attrs => /** @type {any} */ ($delta({ attrs: $attrs }))\n\n/**\n * @template {s.Schema<MapDelta<any>>|undefined} [$Schema=undefined]\n * @param {$Schema} [$schema]\n * @return {$Schema extends s.Schema<MapDelta<infer Attrs>> ? Delta<any,Attrs,never,never,$Schema> : MapDelta<{}>}\n */\nexport const map = $schema => /** @type {any} */ (create(/** @type {any} */ ($schema)))\n"],"names":["s.$object","s.$array","s.$string","s.$number","s.$record","s.$union","s.$literal","s.$any","list.ListNode","object.assign","traits.EqualityTraitSymbol","fun.equalityDeep","s.$custom","s.$constructedBy","map_.create","list.create","list.isEmpty","object.isEmpty","list.pushEnd","arr.isArray","list.insertBetween","error.unexpectedCase","math.min","list.remove","list.popEnd","s.$never","s.$$object","s.$instanceOf","schema","s.$$schema","s.$objectAny","s.$arrayAny"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var binary = require('./binary-ac8e39e2.cjs');
4
- var math = require('./math-08e068f9.cjs');
5
- var number = require('./number-466d8922.cjs');
6
- var string = require('./string-b2827a90.cjs');
7
- var error = require('./error-8582d695.cjs');
8
- var encoding = require('./encoding-1acb59c4.cjs');
4
+ var math = require('./math-96d5e8c4.cjs');
5
+ var number = require('./number-1fb57bba.cjs');
6
+ var string = require('./string-fddc5f8b.cjs');
7
+ var error = require('./error-0c1f634f.cjs');
8
+ var encoding = require('./encoding-7f85922c.cjs');
9
9
 
10
10
  /**
11
11
  * Efficient schema-less binary decoding with support for variable length encoding.
@@ -40,16 +40,17 @@ const errorIntegerOutOfRange = error.create('Integer out of Range');
40
40
 
41
41
  /**
42
42
  * A Decoder handles the decoding of an Uint8Array.
43
+ * @template {ArrayBufferLike} [Buf=ArrayBufferLike]
43
44
  */
44
45
  class Decoder {
45
46
  /**
46
- * @param {Uint8Array} uint8Array Binary data to decode
47
+ * @param {Uint8Array<Buf>} uint8Array Binary data to decode
47
48
  */
48
49
  constructor (uint8Array) {
49
50
  /**
50
51
  * Decoding target.
51
52
  *
52
- * @type {Uint8Array}
53
+ * @type {Uint8Array<Buf>}
53
54
  */
54
55
  this.arr = uint8Array;
55
56
  /**
@@ -63,8 +64,9 @@ class Decoder {
63
64
 
64
65
  /**
65
66
  * @function
66
- * @param {Uint8Array} uint8Array
67
- * @return {Decoder}
67
+ * @template {ArrayBufferLike} Buf
68
+ * @param {Uint8Array<Buf>} uint8Array
69
+ * @return {Decoder<Buf>}
68
70
  */
69
71
  const createDecoder = uint8Array => new Decoder(uint8Array);
70
72
 
@@ -97,9 +99,10 @@ const clone = (decoder, newPos = decoder.pos) => {
97
99
  * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.
98
100
  *
99
101
  * @function
100
- * @param {Decoder} decoder The decoder instance
102
+ * @template {ArrayBufferLike} Buf
103
+ * @param {Decoder<Buf>} decoder The decoder instance
101
104
  * @param {number} len The length of bytes to read
102
- * @return {Uint8Array}
105
+ * @return {Uint8Array<Buf>}
103
106
  */
104
107
  const readUint8Array = (decoder, len) => {
105
108
  const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len);
@@ -114,8 +117,9 @@ const readUint8Array = (decoder, len) => {
114
117
  * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.
115
118
  *
116
119
  * @function
117
- * @param {Decoder} decoder
118
- * @return {Uint8Array}
120
+ * @template {ArrayBufferLike} Buf
121
+ * @param {Decoder<Buf>} decoder
122
+ * @return {Uint8Array<Buf>}
119
123
  */
120
124
  const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder));
121
125
 
@@ -788,4 +792,4 @@ exports.readVarString = readVarString;
788
792
  exports.readVarUint = readVarUint;
789
793
  exports.readVarUint8Array = readVarUint8Array;
790
794
  exports.skip8 = skip8;
791
- //# sourceMappingURL=decoding-2b136346.cjs.map
795
+ //# sourceMappingURL=decoding-50b9ce38.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoding-50b9ce38.cjs","sources":["../decoding.js"],"sourcesContent":["/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as string from './string.js'\nimport * as error from './error.js'\nimport * as encoding from './encoding.js'\n\nconst errorUnexpectedEndOfArray = error.create('Unexpected end of array')\nconst errorIntegerOutOfRange = error.create('Integer out of Range')\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n * @template {ArrayBufferLike} [Buf=ArrayBufferLike]\n */\nexport class Decoder {\n /**\n * @param {Uint8Array<Buf>} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array<Buf>}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @template {ArrayBufferLike} Buf\n * @param {Uint8Array<Buf>} uint8Array\n * @return {Decoder<Buf>}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @template {ArrayBufferLike} Buf\n * @param {Decoder<Buf>} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array<Buf>}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @template {ArrayBufferLike} Buf\n * @param {Decoder<Buf>} decoder\n * @return {Uint8Array<Buf>}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let mult = 1\n const len = decoder.arr.length\n while (decoder.pos < len) {\n const r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult // shift $r << (7*#iterations) and add it to num\n mult *= 128 // next iteration, shift 7 \"more\" to the left\n if (r < binary.BIT8) {\n return num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let mult = 64\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n const len = decoder.arr.length\n while (decoder.pos < len) {\n r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult\n mult *= 128\n if (r < binary.BIT8) {\n return sign * num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nexport const _readVarStringPolyfill = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nexport const _readVarStringNative = decoder =>\n /** @type any */ (string.utf8TextDecoder).decode(readVarUint8Array(decoder))\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nexport const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill\n\n/**\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTerminatedUint8Array = decoder => {\n const encoder = encoding.createEncoder()\n let b\n while (true) {\n b = readUint8(decoder)\n if (b === 0) {\n return encoding.toUint8Array(encoder)\n }\n if (b === 1) {\n b = readUint8(decoder)\n }\n encoding.write(encoder, b)\n }\n}\n\n/**\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder))\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0, false)\n\n/**\n * @type {Array<function(Decoder):any>}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object<string,any>\n const len = readVarUint(decoder)\n /**\n * @type {Object<string,any>}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array<any>\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = math.floor(diff / 2) // shift >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n"],"names":["error.create","binary.BITS7","binary.BIT8","number.MAX_SAFE_INTEGER","binary.BITS6","binary.BIT7","string.utf8TextDecoder","encoding.createEncoder","encoding.toUint8Array","encoding.write","string.decodeUtf8","math.isNegativeZero","math.floor"],"mappings":"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"}
package/dist/decoding.cjs CHANGED
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('./binary-ac8e39e2.cjs');
6
- require('./math-08e068f9.cjs');
7
- require('./number-466d8922.cjs');
8
- require('./string-b2827a90.cjs');
9
- require('./error-8582d695.cjs');
10
- require('./encoding-1acb59c4.cjs');
11
- var decoding = require('./decoding-2b136346.cjs');
6
+ require('./math-96d5e8c4.cjs');
7
+ require('./number-1fb57bba.cjs');
8
+ require('./string-fddc5f8b.cjs');
9
+ require('./error-0c1f634f.cjs');
10
+ require('./encoding-7f85922c.cjs');
11
+ var decoding = require('./decoding-50b9ce38.cjs');
12
12
  require('./array-78849c95.cjs');
13
13
  require('./set-5b47859e.cjs');
14
14
 
@@ -1,17 +1,18 @@
1
1
  /**
2
2
  * A Decoder handles the decoding of an Uint8Array.
3
+ * @template {ArrayBufferLike} [Buf=ArrayBufferLike]
3
4
  */
4
- export class Decoder {
5
+ export class Decoder<Buf extends ArrayBufferLike = ArrayBufferLike> {
5
6
  /**
6
- * @param {Uint8Array} uint8Array Binary data to decode
7
+ * @param {Uint8Array<Buf>} uint8Array Binary data to decode
7
8
  */
8
- constructor(uint8Array: Uint8Array);
9
+ constructor(uint8Array: Uint8Array<Buf>);
9
10
  /**
10
11
  * Decoding target.
11
12
  *
12
- * @type {Uint8Array}
13
+ * @type {Uint8Array<Buf>}
13
14
  */
14
- arr: Uint8Array;
15
+ arr: Uint8Array<Buf>;
15
16
  /**
16
17
  * Current decoding position.
17
18
  *
@@ -19,11 +20,11 @@ export class Decoder {
19
20
  */
20
21
  pos: number;
21
22
  }
22
- export function createDecoder(uint8Array: Uint8Array): Decoder;
23
+ export function createDecoder<Buf extends ArrayBufferLike>(uint8Array: Uint8Array<Buf>): Decoder<Buf>;
23
24
  export function hasContent(decoder: Decoder): boolean;
24
25
  export function clone(decoder: Decoder, newPos?: number): Decoder;
25
- export function readUint8Array(decoder: Decoder, len: number): Uint8Array;
26
- export function readVarUint8Array(decoder: Decoder): Uint8Array;
26
+ export function readUint8Array<Buf extends ArrayBufferLike>(decoder: Decoder<Buf>, len: number): Uint8Array<Buf>;
27
+ export function readVarUint8Array<Buf extends ArrayBufferLike>(decoder: Decoder<Buf>): Uint8Array<Buf>;
27
28
  export function readTailAsUint8Array(decoder: Decoder): Uint8Array;
28
29
  export function skip8(decoder: Decoder): number;
29
30
  export function readUint8(decoder: Decoder): number;
@@ -54,7 +55,7 @@ export function readAny(decoder: Decoder): any;
54
55
  *
55
56
  * @template T
56
57
  */
57
- export class RleDecoder<T> extends Decoder {
58
+ export class RleDecoder<T> extends Decoder<ArrayBufferLike> {
58
59
  /**
59
60
  * @param {Uint8Array} uint8Array
60
61
  * @param {function(Decoder):T} reader
@@ -72,7 +73,7 @@ export class RleDecoder<T> extends Decoder {
72
73
  count: number;
73
74
  read(): T;
74
75
  }
75
- export class IntDiffDecoder extends Decoder {
76
+ export class IntDiffDecoder extends Decoder<ArrayBufferLike> {
76
77
  /**
77
78
  * @param {Uint8Array} uint8Array
78
79
  * @param {number} start
@@ -88,7 +89,7 @@ export class IntDiffDecoder extends Decoder {
88
89
  */
89
90
  read(): number;
90
91
  }
91
- export class RleIntDiffDecoder extends Decoder {
92
+ export class RleIntDiffDecoder extends Decoder<ArrayBufferLike> {
92
93
  /**
93
94
  * @param {Uint8Array} uint8Array
94
95
  * @param {number} start
@@ -105,7 +106,11 @@ export class RleIntDiffDecoder extends Decoder {
105
106
  */
106
107
  read(): number;
107
108
  }
108
- export class UintOptRleDecoder extends Decoder {
109
+ export class UintOptRleDecoder extends Decoder<ArrayBufferLike> {
110
+ /**
111
+ * @param {Uint8Array} uint8Array
112
+ */
113
+ constructor(uint8Array: Uint8Array);
109
114
  /**
110
115
  * @type {number}
111
116
  */
@@ -113,7 +118,11 @@ export class UintOptRleDecoder extends Decoder {
113
118
  count: number;
114
119
  read(): number;
115
120
  }
116
- export class IncUintOptRleDecoder extends Decoder {
121
+ export class IncUintOptRleDecoder extends Decoder<ArrayBufferLike> {
122
+ /**
123
+ * @param {Uint8Array} uint8Array
124
+ */
125
+ constructor(uint8Array: Uint8Array);
117
126
  /**
118
127
  * @type {number}
119
128
  */
@@ -121,7 +130,11 @@ export class IncUintOptRleDecoder extends Decoder {
121
130
  count: number;
122
131
  read(): number;
123
132
  }
124
- export class IntDiffOptRleDecoder extends Decoder {
133
+ export class IntDiffOptRleDecoder extends Decoder<ArrayBufferLike> {
134
+ /**
135
+ * @param {Uint8Array} uint8Array
136
+ */
137
+ constructor(uint8Array: Uint8Array);
125
138
  /**
126
139
  * @type {number}
127
140
  */
@@ -1 +1 @@
1
- {"version":3,"file":"decoding.d.ts","sourceRoot":"","sources":["../decoding.js"],"names":[],"mappings":"AAsCA;;GAEG;AACH;IACE;;OAEG;IACH,wBAFW,UAAU,EAepB;IAZC;;;;OAIG;IACH,KAFU,UAAU,CAEC;IACrB;;;;OAIG;IACH,KAFU,MAAM,CAEJ;CAEf;AAOM,0CAHI,UAAU,GACT,OAAO,CAE+C;AAO3D,oCAHI,OAAO,GACN,OAAO,CAEoD;AAWhE,+BAJI,OAAO,WACP,MAAM,GACL,OAAO,CAMlB;AAaM,wCAJI,OAAO,OACP,MAAM,GACL,UAAU,CAMrB;AAYM,2CAHI,OAAO,GACN,UAAU,CAEmE;AAQlF,8CAHI,OAAO,GACN,UAAU,CAEkF;AAQjG,+BAHI,OAAO,GACN,MAAM,CAE2B;AAQtC,mCAHI,OAAO,GACN,MAAM,CAE4C;AASvD,oCAHI,OAAO,GACN,MAAM,CAQjB;AASM,oCAHI,OAAO,GACN,MAAM,CAUjB;AAUM,6CAHI,OAAO,GACN,MAAM,CAUjB;AAUM,mCAHI,OAAO,GACN,MAAM,CAE0C;AAUrD,oCAHI,OAAO,GACN,MAAM,CAImB;AAU9B,oCAHI,OAAO,GACN,MAAM,CAOX;AAYA,qCAHI,OAAO,GACN,MAAM,CAqBjB;AAaM,oCAHI,OAAO,GACN,MAAM,CA2BjB;AASM,qCAHI,OAAO,GACN,MAAM,CAOjB;AASM,oCAHI,OAAO,GACN,MAAM,CAOjB;AAgBM,gDAJI,OAAO,UA2BjB;AAQM,8CAHI,OAAO,UAI4D;AAhCvE,uCAJI,OAAO,UA2BjB;AA2BM,kDAHI,OAAO,GACN,UAAU,CAerB;AAMM,8CAHI,OAAO,GACN,MAAM,CAEiF;AAS5F,uCAHI,OAAO,GACN,MAAM,CAOjB;AAOM,0CAJI,OAAO,OACP,MAAM,GACL,QAAQ,CAMnB;AAKM,qCAFI,OAAO,UAEqE;AAKhF,qCAFI,OAAO,UAEqE;AAKhF,sCAFI,OAAO,OAE4F;AAKvG,uCAFI,OAAO,OAE8F;AAyCzG,iCAFI,OAAO,OAEqE;AAEvF;;;;GAIG;AACH,wBAFa,CAAC;IAGZ;;;OAGG;IACH,wBAHW,UAAU,UACV,CAAS,IAAO,EAAP,OAAO,KAAE,CAAC,EAc7B;IAVC;;OAEG;IACH,eAPkB,OAAO,KAAE,CAAC,CAOR;IACpB;;;OAGG;IACH,GAFU,CAAC,GAAC,IAAI,CAEH;IACb,cAAc;IAGhB,QAUoB,CAAC,CACpB;CACF;AAED;IACE;;;OAGG;IACH,wBAHW,UAAU,SACV,MAAM,EAShB;IALC;;;OAGG;IACH,GAFU,MAAM,CAEF;IAGhB;;OAEG;IACH,QAFY,MAAM,CAKjB;CACF;AAED;IACE;;;OAGG;IACH,wBAHW,UAAU,SACV,MAAM,EAUhB;IANC;;;OAGG;IACH,GAFU,MAAM,CAEF;IACd,cAAc;IAGhB;;OAEG;IACH,QAFY,MAAM,CAajB;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IAGhB,QAYoB,MAAM,CACzB;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IAGhB,QAYoB,MAAM,CACzB;CACF;AAED;IAMI;;OAEG;IACH,GAFU,MAAM,CAEN;IACV,cAAc;IACd,aAAa;IAGf;;OAEG;IACH,QAFY,MAAM,CAgBjB;CACF;AAED;IACE;;OAEG;IACH,wBAFW,UAAU,EASpB;IANC,2BAAgD;IAChD,YAAsC;IACtC;;OAEG;IACH,MAFU,MAAM,CAEH;IAGf;;OAEG;IACH,QAFY,MAAM,CAOjB;CACF"}
1
+ {"version":3,"file":"decoding.d.ts","sourceRoot":"","sources":["../decoding.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @typedef {Array<dops.DeltaJsonOp>} DeltaJson
3
+ */
4
+ /**
5
+ * @template {'array' | 'text' | 'custom'} Type
6
+ * @template {dops.AbstractDeltaArrayOps<any>} OPS
7
+ * @extends {d.AbstractDelta}
8
+ */
9
+ export class AbstractDeltaArray<Type extends "array" | "text" | "custom", OPS extends dops.AbstractDeltaArrayOps<any>> extends d.AbstractDelta {
10
+ /**
11
+ * @param {Type} type
12
+ */
13
+ constructor(type: Type);
14
+ type: Type;
15
+ /**
16
+ * @type {Array<OPS>}
17
+ */
18
+ ops: Array<OPS>;
19
+ /**
20
+ * @template M
21
+ * @param {(d:OPS) => dops.AbstractDeltaArrayOps<M>} f
22
+ * @return {AbstractDeltaArrayBuilder<Type,M>}
23
+ */
24
+ map<M>(f: (d: OPS) => dops.AbstractDeltaArrayOps<M>): AbstractDeltaArrayBuilder<Type, M>;
25
+ /**
26
+ *
27
+ * Iterate through the changes. There are two approches to iterate through the changes. The
28
+ * following examples achieve the same thing:
29
+ *
30
+ * @example
31
+ * d.forEach((op, index) => {
32
+ * if (op instanceof delta.InsertArrayOp) {
33
+ * op.insert
34
+ * } else if (op instanceof delta.RetainOp ) {
35
+ * op.retain
36
+ * } else if (op instanceof delta.DeleteOp) {
37
+ * op.delete
38
+ * }
39
+ * })
40
+ *
41
+ * The second approach doesn't require instanceof checks.
42
+ *
43
+ * @example
44
+ * d.forEach(null,
45
+ * (insertOp, index) => insertOp.insert,
46
+ * (retainOp, index) => insertOp.retain
47
+ * (deleteOp, index) => insertOp.delete
48
+ * )
49
+ *
50
+ * @param {null|((d:OPS,index:number)=>void)} f
51
+ * @param {null|((insertOp:Extract<OPS,InsertOp<any>|TextOp>,index:number)=>void)} insertHandler
52
+ * @param {null|((retainOp:RetainOp,index:number)=>void)} retainHandler
53
+ * @param {null|((deleteOp:DeleteOp,index:number)=>void)} deleteHandler
54
+ * @param {null|((modifyOp:OPS extends ModifyOp<infer M> ? ModifyOp<M> : never,index:number)=>void)} modifyHandler
55
+ */
56
+ forEach(f?: null | ((d: OPS, index: number) => void), insertHandler?: null | ((insertOp: Extract<OPS, InsertOp<any> | TextOp>, index: number) => void), retainHandler?: null | ((retainOp: RetainOp, index: number) => void), deleteHandler?: null | ((deleteOp: DeleteOp, index: number) => void), modifyHandler?: null | ((modifyOp: OPS extends ModifyOp<infer M> ? ModifyOp<M> : never, index: number) => void)): void;
57
+ /**
58
+ * @param {AbstractDeltaArray<Type, OPS>} other
59
+ * @return {boolean}
60
+ */
61
+ equals(other: AbstractDeltaArray<Type, OPS>): boolean;
62
+ /**
63
+ * @returns {DeltaJson}
64
+ */
65
+ toJSON(): DeltaJson;
66
+ get size(): number;
67
+ /**
68
+ * @param {AbstractDeltaArray<Type,OPS>} other
69
+ */
70
+ [traits.EqualityTraitSymbol](other: AbstractDeltaArray<Type, OPS>): boolean;
71
+ }
72
+ /**
73
+ * @template {'text' | 'array' | 'custom'} Type
74
+ * @template {dops.AbstractDeltaArrayOps<any>} OPS
75
+ * @extends {AbstractDeltaArray<Type,OPS>}
76
+ */
77
+ export class AbstractDeltaArrayBuilder<Type extends "text" | "array" | "custom", OPS extends dops.AbstractDeltaArrayOps<any>> extends AbstractDeltaArray<Type, OPS> {
78
+ /**
79
+ * @param {Type} type
80
+ * @param {s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V> ? V : never>} $insert
81
+ */
82
+ constructor(type: Type, $insert: s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V> ? V : never>);
83
+ $insert: s.Schema<OPS extends dops.AbstractDeltaArrayOps<infer V extends unknown> ? V : never>;
84
+ /**
85
+ * @type {dops.FormattingAttributes?}
86
+ */
87
+ usedAttributes: dops.FormattingAttributes | null;
88
+ /**
89
+ * @type {d.Attribution?}
90
+ */
91
+ usedAttribution: d.Attribution | null;
92
+ /**
93
+ * @type {dops.AbstractDeltaArrayOps<any>?}
94
+ */
95
+ lastOp: dops.AbstractDeltaArrayOps<any> | null;
96
+ /**
97
+ * @return {this}
98
+ */
99
+ clone(): this;
100
+ /**
101
+ * @param {dops.FormattingAttributes?} attributes
102
+ * @return {this}
103
+ */
104
+ useAttributes(attributes: dops.FormattingAttributes | null): this;
105
+ /**
106
+ * @param {string} name
107
+ * @param {any} value
108
+ */
109
+ updateUsedAttributes(name: string, value: any): this;
110
+ /**
111
+ * @template {keyof d.Attribution} NAME
112
+ * @param {NAME} name
113
+ * @param {d.Attribution[NAME]?} value
114
+ */
115
+ updateUsedAttribution<NAME extends keyof d.Attribution>(name: NAME, value: d.Attribution[NAME] | null): this;
116
+ /**
117
+ * @param {d.Attribution?} attribution
118
+ */
119
+ useAttribution(attribution: d.Attribution | null): this;
120
+ /**
121
+ * @param {(OPS extends TextOp ? string : never) | (OPS extends InsertOp<infer Content> ? Array<Content> : never) } insert
122
+ * @param {dops.FormattingAttributes?} attributes
123
+ * @param {d.Attribution?} attribution
124
+ * @return {this}
125
+ */
126
+ insert(insert: (OPS extends TextOp ? string : never) | (OPS extends InsertOp<infer Content> ? Array<Content> : never), attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
127
+ /**
128
+ * @param {OPS extends ModifyOp<infer Mod> ? Mod : never } modify
129
+ * @param {dops.FormattingAttributes?} attributes
130
+ * @param {d.Attribution?} attribution
131
+ * @return {this}
132
+ */
133
+ modify(modify: OPS extends ModifyOp<infer Mod> ? Mod : never, attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
134
+ /**
135
+ * @param {number} retain
136
+ * @param {dops.FormattingAttributes?} attributes
137
+ * @param {d.Attribution?} attribution
138
+ * @return {this}
139
+ */
140
+ retain(retain: number, attributes?: dops.FormattingAttributes | null, attribution?: d.Attribution | null): this;
141
+ /**
142
+ * @param {number} len
143
+ * @return {this}
144
+ */
145
+ delete(len: number): this;
146
+ /**
147
+ * @todo this is basically untested and is in dire need of randomized testing.
148
+ * @param {AbstractDeltaArray<Type, OPS>} other
149
+ */
150
+ apply(other: AbstractDeltaArray<Type, OPS>): void;
151
+ /**
152
+ * @return {Type extends 'array' ? (OPS extends dops.InsertOp<infer C> ? import('./array.js').DeltaArray<C> : never) : (Type extends 'text' ? (OPS extends dops.DeltaTextOps<infer Embeds> ? import('./text.js').DeltaText<Embeds> : never) : AbstractDeltaArray<Type,OPS>)}
153
+ */
154
+ done(): Type extends "array" ? (OPS extends dops.InsertOp<infer C> ? import("./array.js").DeltaArray<C> : never) : (Type extends "text" ? (OPS extends dops.DeltaTextOps<infer Embeds> ? import("./text.js").DeltaText<Embeds> : never) : AbstractDeltaArray<Type, OPS>);
155
+ }
156
+ export type DeltaJson = Array<dops.DeltaJsonOp>;
157
+ import * as dops from './ops.js';
158
+ import * as d from './abstract.js';
159
+ import { InsertOp } from './ops.js';
160
+ import { TextOp } from './ops.js';
161
+ import { RetainOp } from './ops.js';
162
+ import { DeleteOp } from './ops.js';
163
+ import { ModifyOp } from './ops.js';
164
+ import * as traits from '../traits.js';
165
+ import * as s from '../schema.js';
166
+ //# sourceMappingURL=abstract-array.d.ts.map