lib0 0.2.62 → 0.2.64

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 (247) hide show
  1. package/README.md +5 -5
  2. package/array.d.ts +5 -5
  3. package/array.d.ts.map +1 -1
  4. package/array.js +26 -10
  5. package/array.test.d.ts +6 -4
  6. package/array.test.d.ts.map +1 -1
  7. package/bin/gendocs.js +0 -1
  8. package/bin/gentesthtml.js +54 -0
  9. package/broadcastchannel.d.ts.map +1 -1
  10. package/broadcastchannel.js +4 -4
  11. package/buffer.d.ts.map +1 -1
  12. package/buffer.js +6 -4
  13. package/conditions.js +1 -1
  14. package/coverage/tmp/coverage-17397-1678220559587-0.json +1 -0
  15. package/crypto.d.ts.map +1 -1
  16. package/crypto.js +6 -5
  17. package/crypto.test.d.ts.map +1 -1
  18. package/decoding.d.ts.map +1 -1
  19. package/decoding.js +7 -4
  20. package/deno.json +7 -0
  21. package/deno.lock +122 -0
  22. package/dist/{array-42d0736b.cjs → array-a1682de6.cjs} +28 -12
  23. package/dist/array-a1682de6.cjs.map +1 -0
  24. package/dist/array.cjs +2 -2
  25. package/dist/array.d.ts +5 -5
  26. package/dist/array.d.ts.map +1 -1
  27. package/dist/array.test.d.ts +6 -4
  28. package/dist/array.test.d.ts.map +1 -1
  29. package/dist/{broadcastchannel-8d21c21c.cjs → broadcastchannel-4e5909e2.cjs} +8 -8
  30. package/dist/broadcastchannel-4e5909e2.cjs.map +1 -0
  31. package/dist/broadcastchannel.cjs +12 -12
  32. package/dist/broadcastchannel.d.ts.map +1 -1
  33. package/dist/{buffer-22bb9fae.cjs → buffer-9b566988.cjs} +20 -16
  34. package/dist/buffer-9b566988.cjs.map +1 -0
  35. package/dist/buffer.cjs +11 -11
  36. package/dist/buffer.d.ts.map +1 -1
  37. package/dist/cache.cjs +7 -7
  38. package/dist/component.cjs +9 -9
  39. package/dist/{conditions-fb475c70.cjs → conditions-f5c0c102.cjs} +2 -2
  40. package/dist/conditions-f5c0c102.cjs.map +1 -0
  41. package/dist/conditions.cjs +1 -1
  42. package/dist/crypto.cjs +17 -16
  43. package/dist/crypto.cjs.map +1 -1
  44. package/dist/crypto.d.ts.map +1 -1
  45. package/dist/crypto.test.d.ts.map +1 -1
  46. package/dist/decoding.cjs +11 -11
  47. package/dist/decoding.d.ts.map +1 -1
  48. package/dist/{diff-ee50c530.cjs → diff-55061848.cjs} +2 -2
  49. package/dist/{diff-ee50c530.cjs.map → diff-55061848.cjs.map} +1 -1
  50. package/dist/diff.cjs +5 -5
  51. package/dist/{dom-58958c04.cjs → dom-7ef10fba.cjs} +4 -32
  52. package/dist/dom-7ef10fba.cjs.map +1 -0
  53. package/dist/dom.cjs +2 -2
  54. package/dist/dom.d.ts.map +1 -1
  55. package/dist/encoding.cjs +11 -11
  56. package/dist/encoding.d.ts.map +1 -1
  57. package/dist/encoding.test.d.ts +2 -1
  58. package/dist/encoding.test.d.ts.map +1 -1
  59. package/dist/{environment-f6386808.cjs → environment-01c0e75b.cjs} +20 -19
  60. package/dist/environment-01c0e75b.cjs.map +1 -0
  61. package/dist/environment.cjs +8 -8
  62. package/dist/environment.d.ts.map +1 -1
  63. package/dist/{error-873c9cbf.cjs → error-8582d695.cjs} +4 -4
  64. package/dist/error-8582d695.cjs.map +1 -0
  65. package/dist/error.cjs +1 -1
  66. package/dist/error.d.ts.map +1 -1
  67. package/dist/{eventloop-c60b5658.cjs → eventloop-d0571621.cjs} +5 -5
  68. package/dist/eventloop-d0571621.cjs.map +1 -0
  69. package/dist/eventloop.cjs +1 -1
  70. package/dist/eventloop.d.ts.map +1 -1
  71. package/dist/eventloop.test.d.ts +6 -5
  72. package/dist/eventloop.test.d.ts.map +1 -1
  73. package/dist/{function-40d38a5b.cjs → function-35e8ddea.cjs} +6 -3
  74. package/dist/function-35e8ddea.cjs.map +1 -0
  75. package/dist/function.cjs +4 -4
  76. package/dist/function.d.ts.map +1 -1
  77. package/dist/function.test.d.ts +3 -1
  78. package/dist/function.test.d.ts.map +1 -1
  79. package/dist/index.cjs +22 -22
  80. package/dist/{indexeddb-7b2c0026.cjs → indexeddb-1f25af34.cjs} +7 -30
  81. package/dist/indexeddb-1f25af34.cjs.map +1 -0
  82. package/dist/indexeddb.cjs +4 -4
  83. package/dist/indexeddb.d.ts.map +1 -1
  84. package/dist/list.cjs +7 -6
  85. package/dist/list.cjs.map +1 -1
  86. package/dist/list.d.ts.map +1 -1
  87. package/dist/list.test.d.ts +2 -2
  88. package/dist/list.test.d.ts.map +1 -1
  89. package/dist/{logging-ba24d049.cjs → logging-641c32f4.cjs} +55 -50
  90. package/dist/logging-641c32f4.cjs.map +1 -0
  91. package/dist/logging.cjs +12 -12
  92. package/dist/logging.d.ts.map +1 -1
  93. package/dist/{map-28a001c9.cjs → map-9a5915e4.cjs} +6 -5
  94. package/dist/map-9a5915e4.cjs.map +1 -0
  95. package/dist/map.cjs +1 -1
  96. package/dist/map.d.ts +1 -1
  97. package/dist/map.d.ts.map +1 -1
  98. package/dist/map.test.d.ts +1 -1
  99. package/dist/map.test.d.ts.map +1 -1
  100. package/dist/{number-e62129bc.cjs → number-f97e141a.cjs} +2 -2
  101. package/dist/number-f97e141a.cjs.map +1 -0
  102. package/dist/number.cjs +1 -1
  103. package/dist/{object-fe9c0021.cjs → object-aad630ed.cjs} +6 -3
  104. package/dist/object-aad630ed.cjs.map +1 -0
  105. package/dist/object.cjs +1 -1
  106. package/dist/object.d.ts +3 -3
  107. package/dist/object.d.ts.map +1 -1
  108. package/dist/object.test.d.ts.map +1 -1
  109. package/dist/observable.cjs +3 -3
  110. package/dist/{prng-4493ba85.cjs → prng-cd2451c9.cjs} +5 -4
  111. package/dist/prng-cd2451c9.cjs.map +1 -0
  112. package/dist/prng.cjs +12 -12
  113. package/dist/prng.d.ts.map +1 -1
  114. package/dist/{promise-1a9fe712.cjs → promise-a4f32c85.cjs} +3 -3
  115. package/dist/promise-a4f32c85.cjs.map +1 -0
  116. package/dist/promise.cjs +2 -2
  117. package/dist/random.test.d.ts +1 -0
  118. package/dist/random.test.d.ts.map +1 -1
  119. package/dist/rollup.config.d.ts +2 -28
  120. package/dist/{set-b596ef38.cjs → set-0f209abb.cjs} +4 -7
  121. package/dist/set-0f209abb.cjs.map +1 -0
  122. package/dist/set.cjs +1 -1
  123. package/dist/set.d.ts.map +1 -1
  124. package/dist/set.test.d.ts +1 -1
  125. package/dist/set.test.d.ts.map +1 -1
  126. package/dist/sort.test.d.ts +2 -1
  127. package/dist/sort.test.d.ts.map +1 -1
  128. package/dist/storage.cjs +6 -5
  129. package/dist/storage.cjs.map +1 -1
  130. package/dist/storage.d.ts.map +1 -1
  131. package/dist/{string-ad04f734.cjs → string-b1bee84b.cjs} +8 -7
  132. package/dist/string-b1bee84b.cjs.map +1 -0
  133. package/dist/string.cjs +1 -1
  134. package/dist/string.d.ts.map +1 -1
  135. package/dist/symbol.test.d.ts +3 -0
  136. package/dist/symbol.test.d.ts.map +1 -0
  137. package/dist/testing.cjs +42 -40
  138. package/dist/testing.cjs.map +1 -1
  139. package/dist/testing.d.ts +1 -1
  140. package/dist/testing.d.ts.map +1 -1
  141. package/dist/testing.test.d.ts +1 -0
  142. package/dist/testing.test.d.ts.map +1 -1
  143. package/dist/{time-e00067da.cjs → time-bc2081b9.cjs} +2 -2
  144. package/dist/time-bc2081b9.cjs.map +1 -0
  145. package/dist/time.cjs +1 -1
  146. package/dist/{tree-b67c7947.cjs → tree-9f3c8837.cjs} +23 -22
  147. package/dist/tree-9f3c8837.cjs.map +1 -0
  148. package/dist/tree.cjs +1 -1
  149. package/dist/tree.d.ts.map +1 -1
  150. package/dist/url.cjs +2 -2
  151. package/dist/url.cjs.map +1 -1
  152. package/dist/webcrypto.deno.cjs +12 -0
  153. package/dist/webcrypto.deno.cjs.map +1 -0
  154. package/dist/webcrypto.deno.d.ts +3 -0
  155. package/dist/webcrypto.deno.d.ts.map +1 -0
  156. package/dist/{websocket-a48155c2.cjs → websocket-85f1d597.cjs} +2 -2
  157. package/dist/{websocket-a48155c2.cjs.map → websocket-85f1d597.cjs.map} +1 -1
  158. package/dist/websocket.cjs +5 -5
  159. package/dom.d.ts.map +1 -1
  160. package/dom.js +2 -30
  161. package/encoding.d.ts.map +1 -1
  162. package/encoding.js +2 -3
  163. package/encoding.test.d.ts +2 -1
  164. package/encoding.test.d.ts.map +1 -1
  165. package/environment.d.ts.map +1 -1
  166. package/environment.js +15 -14
  167. package/error.d.ts.map +1 -1
  168. package/error.js +3 -3
  169. package/eventloop.d.ts.map +1 -1
  170. package/eventloop.js +4 -4
  171. package/eventloop.test.d.ts +6 -5
  172. package/eventloop.test.d.ts.map +1 -1
  173. package/function.d.ts.map +1 -1
  174. package/function.js +3 -0
  175. package/function.test.d.ts +3 -1
  176. package/function.test.d.ts.map +1 -1
  177. package/indexeddb.d.ts.map +1 -1
  178. package/indexeddb.js +4 -27
  179. package/list.d.ts.map +1 -1
  180. package/list.js +2 -1
  181. package/list.test.d.ts +2 -2
  182. package/list.test.d.ts.map +1 -1
  183. package/logging.d.ts.map +1 -1
  184. package/logging.js +47 -42
  185. package/map.d.ts +1 -1
  186. package/map.d.ts.map +1 -1
  187. package/map.js +5 -4
  188. package/map.test.d.ts +1 -1
  189. package/map.test.d.ts.map +1 -1
  190. package/number.js +1 -1
  191. package/object.d.ts +3 -3
  192. package/object.d.ts.map +1 -1
  193. package/object.js +5 -2
  194. package/object.test.d.ts.map +1 -1
  195. package/package.json +16 -12
  196. package/prng.d.ts.map +1 -1
  197. package/prng.js +2 -1
  198. package/promise.js +1 -1
  199. package/random.test.d.ts +1 -0
  200. package/random.test.d.ts.map +1 -1
  201. package/rollup.config.d.ts +2 -28
  202. package/set.d.ts.map +1 -1
  203. package/set.js +3 -6
  204. package/set.test.d.ts +1 -1
  205. package/set.test.d.ts.map +1 -1
  206. package/sort.test.d.ts +2 -1
  207. package/sort.test.d.ts.map +1 -1
  208. package/storage.d.ts.map +1 -1
  209. package/storage.js +6 -5
  210. package/string.d.ts.map +1 -1
  211. package/string.js +7 -6
  212. package/symbol.test.d.ts +3 -0
  213. package/symbol.test.d.ts.map +1 -0
  214. package/test.html +148 -2
  215. package/test.js +5 -3
  216. package/testing.d.ts +1 -1
  217. package/testing.d.ts.map +1 -1
  218. package/testing.js +24 -22
  219. package/testing.test.d.ts +1 -0
  220. package/testing.test.d.ts.map +1 -1
  221. package/time.js +1 -1
  222. package/tree.d.ts.map +1 -1
  223. package/tree.js +22 -21
  224. package/url.js +1 -1
  225. package/webcrypto.deno.d.ts +3 -0
  226. package/webcrypto.deno.d.ts.map +1 -0
  227. package/webcrypto.deno.js +4 -0
  228. package/dist/array-42d0736b.cjs.map +0 -1
  229. package/dist/broadcastchannel-8d21c21c.cjs.map +0 -1
  230. package/dist/buffer-22bb9fae.cjs.map +0 -1
  231. package/dist/conditions-fb475c70.cjs.map +0 -1
  232. package/dist/dom-58958c04.cjs.map +0 -1
  233. package/dist/environment-f6386808.cjs.map +0 -1
  234. package/dist/error-873c9cbf.cjs.map +0 -1
  235. package/dist/eventloop-c60b5658.cjs.map +0 -1
  236. package/dist/function-40d38a5b.cjs.map +0 -1
  237. package/dist/indexeddb-7b2c0026.cjs.map +0 -1
  238. package/dist/logging-ba24d049.cjs.map +0 -1
  239. package/dist/map-28a001c9.cjs.map +0 -1
  240. package/dist/number-e62129bc.cjs.map +0 -1
  241. package/dist/object-fe9c0021.cjs.map +0 -1
  242. package/dist/prng-4493ba85.cjs.map +0 -1
  243. package/dist/promise-1a9fe712.cjs.map +0 -1
  244. package/dist/set-b596ef38.cjs.map +0 -1
  245. package/dist/string-ad04f734.cjs.map +0 -1
  246. package/dist/time-e00067da.cjs.map +0 -1
  247. package/dist/tree-b67c7947.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tree-b67c7947.cjs","sources":["../tree.js"],"sourcesContent":["/**\n * Red-black-tree implementation.\n *\n * @module tree\n */\n// @ts-nocheck TODO: remove or refactor this file\n\nconst rotate = (tree, parent, newParent, n) => {\n if (parent === null) {\n tree.root = newParent\n newParent._parent = null\n } else if (parent.left === n) {\n parent.left = newParent\n } else if (parent.right === n) {\n parent.right = newParent\n } else {\n throw new Error('The elements are wrongly connected!')\n }\n}\n\n/**\n * @template V\n */\nclass N {\n /**\n * A created node is always red!\n *\n * @param {V} val\n */\n constructor (val) {\n this.val = val\n this.color = true\n this._left = null\n this._right = null\n this._parent = null\n }\n\n isRed () { return this.color }\n isBlack () { return !this.color }\n redden () { this.color = true; return this }\n blacken () { this.color = false; return this }\n get grandparent () {\n return this.parent.parent\n }\n\n get parent () {\n return this._parent\n }\n\n get sibling () {\n return (this === this.parent.left)\n ? this.parent.right : this.parent.left\n }\n\n get left () {\n return this._left\n }\n\n get right () {\n return this._right\n }\n\n set left (n) {\n if (n !== null) {\n n._parent = this\n }\n this._left = n\n }\n\n set right (n) {\n if (n !== null) {\n n._parent = this\n }\n this._right = n\n }\n\n rotateLeft (tree) {\n const parent = this.parent\n const newParent = this.right\n const newRight = this.right.left\n newParent.left = this\n this.right = newRight\n rotate(tree, parent, newParent, this)\n }\n\n next () {\n if (this.right !== null) {\n // search the most left node in the right tree\n var o = this.right\n while (o.left !== null) {\n o = o.left\n }\n return o\n } else {\n var p = this\n while (p.parent !== null && p !== p.parent.left) {\n p = p.parent\n }\n return p.parent\n }\n }\n\n prev () {\n if (this.left !== null) {\n // search the most right node in the left tree\n var o = this.left\n while (o.right !== null) {\n o = o.right\n }\n return o\n } else {\n var p = this\n while (p.parent !== null && p !== p.parent.right) {\n p = p.parent\n }\n return p.parent\n }\n }\n\n rotateRight (tree) {\n const parent = this.parent\n const newParent = this.left\n const newLeft = this.left.right\n newParent.right = this\n this.left = newLeft\n rotate(tree, parent, newParent, this)\n }\n\n getUncle () {\n // we can assume that grandparent exists when this is called!\n if (this.parent === this.parent.parent.left) {\n return this.parent.parent.right\n } else {\n return this.parent.parent.left\n }\n }\n}\n\nconst isBlack = node =>\n node !== null ? node.isBlack() : true\n\nconst isRed = (node) =>\n node !== null ? node.isRed() : false\n\n/**\n * This is a Red Black Tree implementation\n *\n * @template K,V\n */\nexport class Tree {\n constructor () {\n this.root = null\n this.length = 0\n }\n\n /**\n * @param {K} id\n */\n findNext (id) {\n var nextID = id.clone()\n nextID.clock += 1\n return this.findWithLowerBound(nextID)\n }\n\n /**\n * @param {K} id\n */\n findPrev (id) {\n const prevID = id.clone()\n prevID.clock -= 1\n return this.findWithUpperBound(prevID)\n }\n\n /**\n * @param {K} from\n */\n findNodeWithLowerBound (from) {\n var o = this.root\n if (o === null) {\n return null\n } else {\n while (true) {\n if (from === null || (from.lessThan(o.val._id) && o.left !== null)) {\n // o is included in the bound\n // try to find an element that is closer to the bound\n o = o.left\n } else if (from !== null && o.val._id.lessThan(from)) {\n // o is not within the bound, maybe one of the right elements is..\n if (o.right !== null) {\n o = o.right\n } else {\n // there is no right element. Search for the next bigger element,\n // this should be within the bounds\n return o.next()\n }\n } else {\n return o\n }\n }\n }\n }\n\n /**\n * @param {K} to\n */\n findNodeWithUpperBound (to) {\n if (to === undefined) {\n throw new Error('You must define from!')\n }\n var o = this.root\n if (o === null) {\n return null\n } else {\n while (true) {\n if ((to === null || o.val._id.lessThan(to)) && o.right !== null) {\n // o is included in the bound\n // try to find an element that is closer to the bound\n o = o.right\n } else if (to !== null && to.lessThan(o.val._id)) {\n // o is not within the bound, maybe one of the left elements is..\n if (o.left !== null) {\n o = o.left\n } else {\n // there is no left element. Search for the prev smaller element,\n // this should be within the bounds\n return o.prev()\n }\n } else {\n return o\n }\n }\n }\n }\n\n /**\n * @return {V}\n */\n findSmallestNode () {\n var o = this.root\n while (o != null && o.left != null) {\n o = o.left\n }\n return o\n }\n\n /**\n * @param {K} from\n * @return {V}\n */\n findWithLowerBound (from) {\n var n = this.findNodeWithLowerBound(from)\n return n == null ? null : n.val\n }\n\n /**\n * @param {K} to\n * @return {V}\n */\n findWithUpperBound (to) {\n var n = this.findNodeWithUpperBound(to)\n return n == null ? null : n.val\n }\n\n /**\n * @param {K} from\n * @param {V} from\n * @param {function(V):void} f\n */\n iterate (from, to, f) {\n var o\n if (from === null) {\n o = this.findSmallestNode()\n } else {\n o = this.findNodeWithLowerBound(from)\n }\n while (\n o !== null &&\n (\n to === null || // eslint-disable-line no-unmodified-loop-condition\n o.val._id.lessThan(to) ||\n o.val._id.equals(to)\n )\n ) {\n f(o.val)\n o = o.next()\n }\n }\n\n /**\n * @param {K} id\n * @return {V|null}\n */\n find (id) {\n const n = this.findNode(id)\n if (n !== null) {\n return n.val\n } else {\n return null\n }\n }\n\n /**\n * @param {K} id\n * @return {N<V>|null}\n */\n findNode (id) {\n var o = this.root\n if (o === null) {\n return null\n } else {\n while (true) {\n if (o === null) {\n return null\n }\n if (id.lessThan(o.val._id)) {\n o = o.left\n } else if (o.val._id.lessThan(id)) {\n o = o.right\n } else {\n return o\n }\n }\n }\n }\n\n /**\n * @param {K} id\n */\n delete (id) {\n var d = this.findNode(id)\n if (d == null) {\n // throw new Error('Element does not exist!')\n return\n }\n this.length--\n if (d.left !== null && d.right !== null) {\n // switch d with the greates element in the left subtree.\n // o should have at most one child.\n var o = d.left\n // find\n while (o.right !== null) {\n o = o.right\n }\n // switch\n d.val = o.val\n d = o\n }\n // d has at most one child\n // let n be the node that replaces d\n var isFakeChild\n var child = d.left || d.right\n if (child === null) {\n isFakeChild = true\n child = new N(null)\n child.blacken()\n d.right = child\n } else {\n isFakeChild = false\n }\n\n if (d.parent === null) {\n if (!isFakeChild) {\n this.root = child\n child.blacken()\n child._parent = null\n } else {\n this.root = null\n }\n return\n } else if (d.parent.left === d) {\n d.parent.left = child\n } else if (d.parent.right === d) {\n d.parent.right = child\n } else {\n throw new Error('Impossible!')\n }\n if (d.isBlack()) {\n if (child.isRed()) {\n child.blacken()\n } else {\n this._fixDelete(child)\n }\n }\n this.root.blacken()\n if (isFakeChild) {\n if (child.parent.left === child) {\n child.parent.left = null\n } else if (child.parent.right === child) {\n child.parent.right = null\n } else {\n throw new Error('Impossible #3')\n }\n }\n }\n\n _fixDelete (n) {\n if (n.parent === null) {\n // this can only be called after the first iteration of fixDelete.\n return\n }\n // d was already replaced by the child\n // d is not the root\n // d and child are black\n var sibling = n.sibling\n if (isRed(sibling)) {\n // make sibling the grandfather\n n.parent.redden()\n sibling.blacken()\n if (n === n.parent.left) {\n n.parent.rotateLeft(this)\n } else if (n === n.parent.right) {\n n.parent.rotateRight(this)\n } else {\n throw new Error('Impossible #2')\n }\n sibling = n.sibling\n }\n // parent, sibling, and children of n are black\n if (n.parent.isBlack() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden()\n this._fixDelete(n.parent)\n } else if (n.parent.isRed() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden()\n n.parent.blacken()\n } else {\n if (n === n.parent.left &&\n sibling.isBlack() &&\n isRed(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden()\n sibling.left.blacken()\n sibling.rotateRight(this)\n sibling = n.sibling\n } else if (n === n.parent.right &&\n sibling.isBlack() &&\n isRed(sibling.right) &&\n isBlack(sibling.left)\n ) {\n sibling.redden()\n sibling.right.blacken()\n sibling.rotateLeft(this)\n sibling = n.sibling\n }\n sibling.color = n.parent.color\n n.parent.blacken()\n if (n === n.parent.left) {\n sibling.right.blacken()\n n.parent.rotateLeft(this)\n } else {\n sibling.left.blacken()\n n.parent.rotateRight(this)\n }\n }\n }\n\n put (v) {\n var node = new N(v)\n if (this.root !== null) {\n var p = this.root // p abbrev. parent\n while (true) {\n if (node.val._id.lessThan(p.val._id)) {\n if (p.left === null) {\n p.left = node\n break\n } else {\n p = p.left\n }\n } else if (p.val._id.lessThan(node.val._id)) {\n if (p.right === null) {\n p.right = node\n break\n } else {\n p = p.right\n }\n } else {\n p.val = node.val\n return p\n }\n }\n this._fixInsert(node)\n } else {\n this.root = node\n }\n this.length++\n this.root.blacken()\n return node\n }\n\n _fixInsert (n) {\n if (n.parent === null) {\n n.blacken()\n return\n } else if (n.parent.isBlack()) {\n return\n }\n var uncle = n.getUncle()\n if (uncle !== null && uncle.isRed()) {\n // Note: parent: red, uncle: red\n n.parent.blacken()\n uncle.blacken()\n n.grandparent.redden()\n this._fixInsert(n.grandparent)\n } else {\n // Note: parent: red, uncle: black or null\n // Now we transform the tree in such a way that\n // either of these holds:\n // 1) grandparent.left.isRed\n // and grandparent.left.left.isRed\n // 2) grandparent.right.isRed\n // and grandparent.right.right.isRed\n if (n === n.parent.right && n.parent === n.grandparent.left) {\n n.parent.rotateLeft(this)\n // Since we rotated and want to use the previous\n // cases, we need to set n in such a way that\n // n.parent.isRed again\n n = n.left\n } else if (n === n.parent.left && n.parent === n.grandparent.right) {\n n.parent.rotateRight(this)\n // see above\n n = n.right\n }\n // Case 1) or 2) hold from here on.\n // Now traverse grandparent, make parent a black node\n // on the highest level which holds two red nodes.\n n.parent.blacken()\n n.grandparent.redden()\n if (n === n.parent.left) {\n // Case 1\n n.grandparent.rotateRight(this)\n } else {\n // Case 2\n n.grandparent.rotateLeft(this)\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}