lib0 0.2.115-4 → 0.2.115-6

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 (236) hide show
  1. package/coverage/tmp/{coverage-32703-1763495370274-0.json → coverage-5242-1765032816888-0.json} +1 -1
  2. package/delta/binding.d.ts +11 -9
  3. package/delta/binding.d.ts.map +1 -1
  4. package/delta/binding.js +5 -2
  5. package/delta/binding.test.d.ts.map +1 -1
  6. package/delta/delta-pitch.test.d.ts +5 -0
  7. package/delta/delta-pitch.test.d.ts.map +1 -0
  8. package/delta/{d2.d.ts → delta.d.ts} +129 -38
  9. package/delta/delta.d.ts.map +1 -0
  10. package/delta/{d2.js → delta.js} +379 -66
  11. package/delta/{d2.test.d.ts → delta.test.d.ts} +8 -1
  12. package/delta/delta.test.d.ts.map +1 -0
  13. package/delta/t3.test.d.ts +1 -1
  14. package/delta/t3.test.d.ts.map +1 -1
  15. package/dist/array.cjs +17 -60
  16. package/dist/array.cjs.map +1 -1
  17. package/dist/binding.cjs +114 -28
  18. package/dist/binding.cjs.map +1 -1
  19. package/dist/{broadcastchannel-d0c108a2.cjs → broadcastchannel-42bbe6e0.cjs} +2 -2
  20. package/dist/{broadcastchannel-d0c108a2.cjs.map → broadcastchannel-42bbe6e0.cjs.map} +1 -1
  21. package/dist/broadcastchannel.cjs +6 -6
  22. package/dist/{buffer-7f6fa8fa.cjs → buffer-54360f21.cjs} +2 -2
  23. package/dist/{buffer-7f6fa8fa.cjs.map → buffer-54360f21.cjs.map} +1 -1
  24. package/dist/buffer.cjs +5 -5
  25. package/dist/cache.cjs +3 -3
  26. package/dist/component.cjs +12 -8
  27. package/dist/component.cjs.map +1 -1
  28. package/dist/delta/binding.d.ts +11 -9
  29. package/dist/delta/binding.d.ts.map +1 -1
  30. package/dist/delta/binding.test.d.ts.map +1 -1
  31. package/dist/delta/delta-pitch.test.d.ts +5 -0
  32. package/dist/delta/delta-pitch.test.d.ts.map +1 -0
  33. package/dist/delta/{d2.d.ts → delta.d.ts} +129 -38
  34. package/dist/delta/delta.d.ts.map +1 -0
  35. package/dist/delta/{d2.test.d.ts → delta.test.d.ts} +8 -1
  36. package/dist/delta/delta.test.d.ts.map +1 -0
  37. package/dist/delta/t3.test.d.ts +1 -1
  38. package/dist/delta/t3.test.d.ts.map +1 -1
  39. package/dist/{d2.cjs → delta.cjs} +389 -71
  40. package/dist/delta.cjs.map +1 -0
  41. package/dist/{diff-1832cb43.cjs → diff-fab14ea6.cjs} +2 -2
  42. package/dist/{diff-1832cb43.cjs.map → diff-fab14ea6.cjs.map} +1 -1
  43. package/dist/diff.cjs +4 -4
  44. package/dist/{dom-f5047a64.cjs → dom-4c4b4c68.cjs} +1 -1
  45. package/dist/{dom-f5047a64.cjs.map → dom-4c4b4c68.cjs.map} +1 -1
  46. package/dist/dom.cjs +12 -5
  47. package/dist/dom.cjs.map +1 -1
  48. package/dist/{environment-90227ead.cjs → environment-ae4f6f15.cjs} +2 -2
  49. package/dist/{environment-90227ead.cjs.map → environment-ae4f6f15.cjs.map} +1 -1
  50. package/dist/environment.cjs +4 -4
  51. package/dist/equality.cjs +34 -0
  52. package/dist/equality.cjs.map +1 -0
  53. package/dist/fingerprint.cjs +44 -0
  54. package/dist/fingerprint.cjs.map +1 -0
  55. package/dist/{function-e7d18feb.cjs → function-618aa640.cjs} +8 -7
  56. package/dist/function-618aa640.cjs.map +1 -0
  57. package/dist/function.cjs +3 -3
  58. package/dist/function.d.ts.map +1 -1
  59. package/dist/index.cjs +9 -9
  60. package/dist/indexeddbV2.cjs +2 -2
  61. package/dist/jwt.cjs +5 -5
  62. package/dist/list.cjs +18 -5
  63. package/dist/list.cjs.map +1 -1
  64. package/dist/list.d.ts +9 -2
  65. package/dist/list.d.ts.map +1 -1
  66. package/dist/list.test.d.ts.map +1 -1
  67. package/dist/logging.cjs +11 -5
  68. package/dist/logging.cjs.map +1 -1
  69. package/dist/logging.common.cjs +4 -4
  70. package/dist/logging.node.cjs +4 -4
  71. package/dist/map.cjs +7 -314
  72. package/dist/map.cjs.map +1 -1
  73. package/dist/{object-18980796.cjs → object-dec41ef9.cjs} +3 -3
  74. package/dist/object-dec41ef9.cjs.map +1 -0
  75. package/dist/object.cjs +2 -2
  76. package/dist/object.d.ts.map +1 -1
  77. package/dist/performance.node.cjs +3 -3
  78. package/dist/pledge.cjs +2 -2
  79. package/dist/{prng-99204216.cjs → prng-96eef52a.cjs} +2 -2
  80. package/dist/{prng-99204216.cjs.map → prng-96eef52a.cjs.map} +1 -1
  81. package/dist/prng.cjs +6 -6
  82. package/dist/rabin-gf2-polynomial.cjs +5 -5
  83. package/dist/rabin-uncached.cjs +5 -5
  84. package/dist/rabin.cjs +5 -5
  85. package/dist/schema.cjs +202 -22
  86. package/dist/schema.cjs.map +1 -1
  87. package/dist/schema.d.ts +86 -29
  88. package/dist/schema.d.ts.map +1 -1
  89. package/dist/schema.test.d.ts +4 -0
  90. package/dist/schema.test.d.ts.map +1 -1
  91. package/dist/testing.cjs +9 -9
  92. package/dist/testing.cjs.map +1 -1
  93. package/dist/{traits.d.ts → trait/equality.d.ts} +1 -1
  94. package/dist/trait/equality.d.ts.map +1 -0
  95. package/dist/trait/fingerprint.d.ts +13 -0
  96. package/dist/trait/fingerprint.d.ts.map +1 -0
  97. package/dist/trait/traits.d.ts +3 -0
  98. package/dist/trait/traits.d.ts.map +1 -0
  99. package/dist/trait/traits.test.d.ts +5 -0
  100. package/dist/trait/traits.test.d.ts.map +1 -0
  101. package/dist/traits.cjs +23 -26
  102. package/dist/traits.cjs.map +1 -1
  103. package/dist/url.cjs +2 -2
  104. package/function.d.ts.map +1 -1
  105. package/function.js +6 -5
  106. package/list.d.ts +9 -2
  107. package/list.d.ts.map +1 -1
  108. package/list.js +17 -3
  109. package/list.test.d.ts.map +1 -1
  110. package/object.d.ts.map +1 -1
  111. package/object.js +2 -2
  112. package/package.json +8 -10
  113. package/schema.d.ts +86 -29
  114. package/schema.d.ts.map +1 -1
  115. package/schema.js +191 -20
  116. package/schema.test.d.ts +4 -0
  117. package/schema.test.d.ts.map +1 -1
  118. package/test.html +2 -4
  119. package/test.js +7 -13
  120. package/testing.js +3 -3
  121. package/{traits.d.ts → trait/equality.d.ts} +1 -1
  122. package/trait/equality.d.ts.map +1 -0
  123. package/trait/fingerprint.d.ts +13 -0
  124. package/trait/fingerprint.d.ts.map +1 -0
  125. package/trait/fingerprint.js +21 -0
  126. package/trait/traits.d.ts +3 -0
  127. package/trait/traits.d.ts.map +1 -0
  128. package/trait/traits.js +2 -0
  129. package/trait/traits.test.d.ts +5 -0
  130. package/{traits.test.d.ts.map → trait/traits.test.d.ts.map} +1 -1
  131. package/delta/abstract-array.d.ts +0 -166
  132. package/delta/abstract-array.d.ts.map +0 -1
  133. package/delta/abstract-array.js +0 -421
  134. package/delta/abstract.d.ts +0 -69
  135. package/delta/abstract.d.ts.map +0 -1
  136. package/delta/abstract.js +0 -102
  137. package/delta/array.d.ts +0 -23
  138. package/delta/array.d.ts.map +0 -1
  139. package/delta/array.js +0 -45
  140. package/delta/array.test.d.ts +0 -2
  141. package/delta/array.test.d.ts.map +0 -1
  142. package/delta/d2.d.ts.map +0 -1
  143. package/delta/d2.test.d.ts.map +0 -1
  144. package/delta/index.d.ts +0 -14
  145. package/delta/index.d.ts.map +0 -1
  146. package/delta/index.js +0 -79
  147. package/delta/map.d.ts +0 -226
  148. package/delta/map.d.ts.map +0 -1
  149. package/delta/map.js +0 -304
  150. package/delta/node.d.ts +0 -117
  151. package/delta/node.d.ts.map +0 -1
  152. package/delta/node.js +0 -183
  153. package/delta/node.test.d.ts +0 -4
  154. package/delta/node.test.d.ts.map +0 -1
  155. package/delta/ops.d.ts +0 -464
  156. package/delta/ops.d.ts.map +0 -1
  157. package/delta/ops.js +0 -544
  158. package/delta/t2.d.ts +0 -184
  159. package/delta/t2.d.ts.map +0 -1
  160. package/delta/t2.js +0 -890
  161. package/delta/text.d.ts +0 -43
  162. package/delta/text.d.ts.map +0 -1
  163. package/delta/text.js +0 -54
  164. package/delta/text.test.d.ts +0 -6
  165. package/delta/text.test.d.ts.map +0 -1
  166. package/delta/transformer.d.ts +0 -164
  167. package/delta/transformer.d.ts.map +0 -1
  168. package/delta/transformer.js +0 -888
  169. package/delta/transformer.test.d.ts +0 -13
  170. package/delta/transformer.test.d.ts.map +0 -1
  171. package/delta/value.d.ts +0 -84
  172. package/delta/value.d.ts.map +0 -1
  173. package/delta/value.js +0 -168
  174. package/dist/abstract-array.cjs +0 -433
  175. package/dist/abstract-array.cjs.map +0 -1
  176. package/dist/abstract.cjs +0 -122
  177. package/dist/abstract.cjs.map +0 -1
  178. package/dist/array2.cjs +0 -26
  179. package/dist/array2.cjs.map +0 -1
  180. package/dist/d2.cjs.map +0 -1
  181. package/dist/delta/abstract-array.d.ts +0 -166
  182. package/dist/delta/abstract-array.d.ts.map +0 -1
  183. package/dist/delta/abstract.d.ts +0 -69
  184. package/dist/delta/abstract.d.ts.map +0 -1
  185. package/dist/delta/array.d.ts +0 -23
  186. package/dist/delta/array.d.ts.map +0 -1
  187. package/dist/delta/array.test.d.ts +0 -2
  188. package/dist/delta/array.test.d.ts.map +0 -1
  189. package/dist/delta/d2.d.ts.map +0 -1
  190. package/dist/delta/d2.test.d.ts.map +0 -1
  191. package/dist/delta/index.d.ts +0 -14
  192. package/dist/delta/index.d.ts.map +0 -1
  193. package/dist/delta/map.d.ts +0 -226
  194. package/dist/delta/map.d.ts.map +0 -1
  195. package/dist/delta/node.d.ts +0 -117
  196. package/dist/delta/node.d.ts.map +0 -1
  197. package/dist/delta/node.test.d.ts +0 -4
  198. package/dist/delta/node.test.d.ts.map +0 -1
  199. package/dist/delta/ops.d.ts +0 -464
  200. package/dist/delta/ops.d.ts.map +0 -1
  201. package/dist/delta/t2.d.ts +0 -184
  202. package/dist/delta/t2.d.ts.map +0 -1
  203. package/dist/delta/text.d.ts +0 -43
  204. package/dist/delta/text.d.ts.map +0 -1
  205. package/dist/delta/text.test.d.ts +0 -6
  206. package/dist/delta/text.test.d.ts.map +0 -1
  207. package/dist/delta/transformer.d.ts +0 -164
  208. package/dist/delta/transformer.d.ts.map +0 -1
  209. package/dist/delta/transformer.test.d.ts +0 -13
  210. package/dist/delta/transformer.test.d.ts.map +0 -1
  211. package/dist/delta/value.d.ts +0 -84
  212. package/dist/delta/value.d.ts.map +0 -1
  213. package/dist/function-e7d18feb.cjs.map +0 -1
  214. package/dist/index2.cjs +0 -71
  215. package/dist/index2.cjs.map +0 -1
  216. package/dist/map2.cjs +0 -15
  217. package/dist/map2.cjs.map +0 -1
  218. package/dist/node.cjs +0 -206
  219. package/dist/node.cjs.map +0 -1
  220. package/dist/object-18980796.cjs.map +0 -1
  221. package/dist/ops.cjs +0 -575
  222. package/dist/ops.cjs.map +0 -1
  223. package/dist/t2.cjs +0 -932
  224. package/dist/t2.cjs.map +0 -1
  225. package/dist/text.cjs +0 -79
  226. package/dist/text.cjs.map +0 -1
  227. package/dist/traits.d.ts.map +0 -1
  228. package/dist/traits.test.d.ts +0 -4
  229. package/dist/traits.test.d.ts.map +0 -1
  230. package/dist/transformer.cjs +0 -930
  231. package/dist/transformer.cjs.map +0 -1
  232. package/dist/value.cjs +0 -187
  233. package/dist/value.cjs.map +0 -1
  234. package/traits.d.ts.map +0 -1
  235. package/traits.test.d.ts +0 -4
  236. /package/{traits.js → trait/equality.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  export function testDeltaBasicApi(_tc: t.TestCase): void;
2
2
  export function testDeltaValues(_tc: t.TestCase): void;
3
3
  export function testDeltaBasicCases(): void;
4
+ export function testDeltaArrayBasics(): void;
4
5
  export function testAssignability(): void;
5
6
  export function testText(): void;
6
7
  export function testDelta(_tc: t.TestCase): void;
@@ -16,6 +17,12 @@ export function testNodeDelta(_tc: t.TestCase): void;
16
17
  export function testRecursiveNode(): void;
17
18
  export function testSimplifiedDeltaSchemaDefinition(): void;
18
19
  export function testDiffing(): void;
20
+ export function testDiffingCommonPreSuffix(): void;
19
21
  export function testSlice(): void;
22
+ export function testRepeatRandomListDiff(tc: t.TestCase): void;
23
+ export function testRepeatRandomMapDiff(tc: t.TestCase): void;
24
+ export function testDeltaAppend(_tc: t.TestCase): void;
25
+ export function testDeltaDiffWithFormatting(): void;
26
+ export function testDeltaDiffWithFormatting2(): void;
20
27
  import * as t from 'lib0/testing';
21
- //# sourceMappingURL=d2.test.d.ts.map
28
+ //# sourceMappingURL=delta.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.test.d.ts","sourceRoot":"","sources":["delta.test.js"],"names":[],"mappings":"AAqCO,uCAFI,CAAC,CAAC,QAAQ,QAWpB;AAYM,qCAFI,CAAC,CAAC,QAAQ,QAwBpB;AAEM,4CA2BN;AAEM,6CAMN;AAKM,0CAkJN;AAEM,iCAWN;AAKM,+BAFI,CAAC,CAAC,QAAQ,QAKpB;AAKM,sCAFI,CAAC,CAAC,QAAQ,QAYpB;AAKM,uCAFI,CAAC,CAAC,QAAQ,QAuBpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QAsBpB;AAEM,sCAaN;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA4BpB;AAKM,wCAFI,CAAC,CAAC,QAAQ,QA2CpB;AAKM,kCAFI,CAAC,CAAC,QAAQ,QAqDpB;AAKM,gDAFI,CAAC,CAAC,QAAQ,QAoEpB;AAKM,mCAFI,CAAC,CAAC,QAAQ,QAiCpB;AAEM,0CAmBN;AAEM,4DAIN;AAEM,oCAMN;AAEM,mDAMN;AAEM,kCAGN;AAKM,6CAFI,CAAC,CAAC,QAAQ,QAWpB;AAKM,4CAFI,CAAC,CAAC,QAAQ,QAWpB;AAKM,qCAFI,CAAC,CAAC,QAAQ,QAQpB;AAEM,oDAKN;AAEM,qDAKN;mBAvsBkB,cAAc"}
@@ -15,5 +15,5 @@ export type Transform<DeltaA extends delta.Delta, DeltaB extends delta.Delta> =
15
15
  applyA: (da: DeltaA) => TransformResult<DeltaA, DeltaB>;
16
16
  applyB: (db: DeltaB) => TransformResult<DeltaA, DeltaB>;
17
17
  };
18
- import * as delta from './d2.js';
18
+ import * as delta from './delta.js';
19
19
  //# sourceMappingURL=t3.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"t3.test.d.ts","sourceRoot":"","sources":["t3.test.js"],"names":[],"mappings":"AAoBO,gCAN4B,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,EACC,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,KACvB,MAAM,KACN,MAAM,GACL,eAAe,CAAC,MAAM,OAAC,EAAC,MAAM,OAAC,CAAC,CAEO;AACnD,+DAA+D;4BAbnC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,EACC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,IACd;IAAE,CAAC,EAAE,MAAM,OAAC,CAAC;IAAC,CAAC,EAAE,MAAM,OAAC,CAAA;CAAE;6BAiBT,MAAM,SAAtB,KAAK,CAAC,QAAS,EACC,MAAM,SAAtB,KAAK,CAAC,QAAS,IAChB,CAAC,CAAC,EAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,KAAG,CAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,CAAC;sBA2GpC,MAAM,SAAnB,KAAK,CAAC,KAAM,EACC,MAAM,SAAnB,KAAK,CAAC,KAAM,IACb;IAAE,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAE;uBAvIlG,SAAS"}
1
+ {"version":3,"file":"t3.test.d.ts","sourceRoot":"","sources":["t3.test.js"],"names":[],"mappings":"AAoBO,gCAN4B,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,EACC,MAAM,SAA3B,KAAK,CAAC,YAAY,OAAE,KACvB,MAAM,KACN,MAAM,GACL,eAAe,CAAC,MAAM,OAAC,EAAC,MAAM,OAAC,CAAC,CAEO;AACnD,+DAA+D;4BAbnC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,EACC,MAAM,SAApB,KAAK,CAAC,KAAK,OAAE,IACd;IAAE,CAAC,EAAE,MAAM,OAAC,CAAC;IAAC,CAAC,EAAE,MAAM,OAAC,CAAA;CAAE;6BAiBT,MAAM,SAAtB,KAAK,CAAC,QAAS,EACC,MAAM,SAAtB,KAAK,CAAC,QAAS,IAChB,CAAC,CAAC,EAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,KAAG,CAAC;IAAC,CAAC,EAAC,MAAM,OAAC,CAAC;IAAA,CAAC,EAAC,MAAM,OAAC,CAAA;CAAC,CAAC;sBA2GpC,MAAM,SAAnB,KAAK,CAAC,KAAM,EACC,MAAM,SAAnB,KAAK,CAAC,KAAM,IACb;IAAE,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;CAAE;uBAvIlG,YAAY"}
package/dist/array.cjs CHANGED
@@ -2,68 +2,25 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var schema = require('./schema.cjs');
6
- var abstractArray = require('./abstract-array.cjs');
7
- var ops = require('./ops.cjs');
8
- require('./object-18980796.cjs');
9
- require('./traits.cjs');
10
- require('./array-78849c95.cjs');
11
5
  require('./set-5b47859e.cjs');
12
- require('./error-0c1f634f.cjs');
13
- require('./environment-90227ead.cjs');
14
- require('./map-24d263c0.cjs');
15
- require('./string-fddc5f8b.cjs');
16
- require('./conditions-f5c0c102.cjs');
17
- require('./storage.cjs');
18
- require('./function-e7d18feb.cjs');
19
- require('./abstract.cjs');
20
- require('./math-96d5e8c4.cjs');
21
- require('./list.cjs');
6
+ var array = require('./array-78849c95.cjs');
22
7
 
23
- /**
24
- * @template ArrayContent
25
- * @template {boolean} [WithText=false]
26
- * @extends AbstractDeltaArrayBuilder<'array', import('./ops.js').DeltaArrayOps<ArrayContent,WithText>>
27
- */
28
- class DeltaArray extends abstractArray.AbstractDeltaArrayBuilder {
29
- /**
30
- * @param {s.Schema<ArrayContent>} $insert
31
- * @param {WithText} withText
32
- */
33
- constructor ($insert, withText) {
34
- super('array', $insert);
35
- this.withText = withText;
36
- }
37
- }
38
8
 
39
- /**
40
- * @template ArrayContent
41
- * @template {boolean} [WithText=false]
42
- * @param {s.Schema<ArrayContent>} $insert
43
- * @param {WithText} [withText]
44
- * @return {s.Schema<DeltaArray<ArrayContent, WithText>>}
45
- */
46
- const $array = ($insert, withText) => /** @type {any} */ (schema.$instanceOf(abstractArray.AbstractDeltaArrayBuilder, o => o.type === 'array' && o.ops.every(op => {
47
- if (ops.$textOp.check(op)) return !!withText
48
- if (ops.$insertOp.check(op)) return op.insert.every(opi => $insert.check(opi))
49
- return true
50
- })));
51
- /**
52
- * @type {s.Schema<DeltaArray<any,any>>}
53
- */
54
- const $arrayAny = /** @type {any} */ (schema.$instanceOf(abstractArray.AbstractDeltaArrayBuilder, o => o.type === 'array'));
55
9
 
56
- /**
57
- * @template [V=any]
58
- * @template {boolean} [WithText=any]
59
- * @param {s.Schema<V>} $insert
60
- * @param {WithText} [withText]
61
- * @return {DeltaArray<V,WithText>}
62
- */
63
- const array = ($insert = schema.$any, withText) => /** @type {DeltaArray<V,WithText>} */ (new DeltaArray($insert, withText ?? true));
64
-
65
- exports.$array = $array;
66
- exports.$arrayAny = $arrayAny;
67
- exports.DeltaArray = DeltaArray;
68
- exports.array = array;
10
+ exports.appendTo = array.appendTo;
11
+ exports.bubblesortItem = array.bubblesortItem;
12
+ exports.copy = array.copy;
13
+ exports.create = array.create;
14
+ exports.equalFlat = array.equalFlat;
15
+ exports.every = array.every;
16
+ exports.flatten = array.flatten;
17
+ exports.fold = array.fold;
18
+ exports.from = array.from;
19
+ exports.isArray = array.isArray;
20
+ exports.last = array.last;
21
+ exports.map = array.map;
22
+ exports.some = array.some;
23
+ exports.unfold = array.unfold;
24
+ exports.unique = array.unique;
25
+ exports.uniqueBy = array.uniqueBy;
69
26
  //# sourceMappingURL=array.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.cjs","sources":["../delta/array.js"],"sourcesContent":["import * as s from '../schema.js'\nimport { AbstractDeltaArrayBuilder } from './abstract-array.js'\nimport * as ops from './ops.js'\n\n/**\n * @template ArrayContent\n * @template {boolean} [WithText=false]\n * @extends AbstractDeltaArrayBuilder<'array', import('./ops.js').DeltaArrayOps<ArrayContent,WithText>>\n */\nexport class DeltaArray extends AbstractDeltaArrayBuilder {\n /**\n * @param {s.Schema<ArrayContent>} $insert\n * @param {WithText} withText\n */\n constructor ($insert, withText) {\n super('array', $insert)\n this.withText = withText\n }\n}\n\n/**\n * @template ArrayContent\n * @template {boolean} [WithText=false]\n * @param {s.Schema<ArrayContent>} $insert\n * @param {WithText} [withText]\n * @return {s.Schema<DeltaArray<ArrayContent, WithText>>}\n */\nexport const $array = ($insert, withText) => /** @type {any} */ (s.$instanceOf(AbstractDeltaArrayBuilder, o => o.type === 'array' && o.ops.every(op => {\n if (ops.$textOp.check(op)) return !!withText\n if (ops.$insertOp.check(op)) return op.insert.every(opi => $insert.check(opi))\n return true\n})))\n/**\n * @type {s.Schema<DeltaArray<any,any>>}\n */\nexport const $arrayAny = /** @type {any} */ (s.$instanceOf(AbstractDeltaArrayBuilder, o => o.type === 'array'))\n\n/**\n * @template [V=any]\n * @template {boolean} [WithText=any]\n * @param {s.Schema<V>} $insert\n * @param {WithText} [withText]\n * @return {DeltaArray<V,WithText>}\n */\nexport const array = ($insert = s.$any, withText) => /** @type {DeltaArray<V,WithText>} */ (new DeltaArray($insert, withText ?? true))\n"],"names":["AbstractDeltaArrayBuilder","s.$instanceOf","ops.$textOp","ops.$insertOp","s.$any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,SAASA,uCAAyB,CAAC;AAC1D;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE;AAClC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,SAAQ;AAC5B,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,yBAAyBC,kBAAa,CAACD,uCAAyB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI;AACvJ,EAAE,IAAIE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ;AAC9C,EAAE,IAAIC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChF,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,CAAC,EAAC;AACJ;AACA;AACA;AACY,MAAC,SAAS,uBAAuBF,kBAAa,CAACD,uCAAyB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAC;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,CAAC,OAAO,GAAGI,WAAM,EAAE,QAAQ,4CAA4C,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;;;;;;;"}
1
+ {"version":3,"file":"array.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/binding.cjs CHANGED
@@ -3,34 +3,120 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var observable = require('./observable.cjs');
6
- var ops = require('./ops.cjs');
7
- require('./abstract.cjs');
8
- require('./array.cjs');
9
- var node = require('./node.cjs');
10
- require('./map.cjs');
11
- require('./text.cjs');
12
- require('./value.cjs');
13
- require('./transformer.cjs');
14
- var dom = require('./dom-f5047a64.cjs');
6
+ var delta = require('./delta.cjs');
7
+ require('./testing.cjs');
8
+ var schema = require('./schema.cjs');
9
+ var dom = require('./dom-4c4b4c68.cjs');
15
10
  var set = require('./set-5b47859e.cjs');
16
11
  var map = require('./map-24d263c0.cjs');
17
12
  var error = require('./error-0c1f634f.cjs');
18
13
  var math = require('./math-96d5e8c4.cjs');
19
14
  var mutex = require('./mutex-63f09c81.cjs');
20
- var schema = require('./schema.cjs');
21
15
  require('./array-78849c95.cjs');
22
- require('./object-18980796.cjs');
23
- require('./traits.cjs');
24
- require('./function-e7d18feb.cjs');
25
16
  require('./list.cjs');
26
- require('./environment-90227ead.cjs');
17
+ require('./function-618aa640.cjs');
18
+ require('./object-dec41ef9.cjs');
19
+ require('./equality.cjs');
20
+ require('./fingerprint.cjs');
21
+ require('./encoding-1a745c43.cjs');
22
+ require('./number-1fb57bba.cjs');
23
+ require('./binary-ac8e39e2.cjs');
27
24
  require('./string-fddc5f8b.cjs');
25
+ require('./rabin.cjs');
26
+ require('./buffer-54360f21.cjs');
27
+ require('./environment-ae4f6f15.cjs');
28
28
  require('./conditions-f5c0c102.cjs');
29
29
  require('./storage.cjs');
30
- require('./abstract-array.cjs');
30
+ require('./decoding-76e75827.cjs');
31
+ require('./patience.cjs');
32
+ require('./prng-96eef52a.cjs');
33
+ require('lib0/logging');
34
+ require('./diff-fab14ea6.cjs');
35
+ require('./random.cjs');
36
+ require('lib0/webcrypto');
37
+ require('./statistics-65f6114b.cjs');
38
+ require('./json-092190a1.cjs');
39
+ require('./time-d8438852.cjs');
40
+ require('./metric.cjs');
41
+ require('./promise-cda7b9bb.cjs');
42
+ require('lib0/performance');
31
43
  require('./pair-ab022bc3.cjs');
32
44
 
33
- /* global MutationObserver */
45
+ /* eslint-disable */
46
+
47
+ /**
48
+ * @template {delta.Delta?} DeltaA
49
+ * @template {delta.Delta?} DeltaB
50
+ * @typedef {{ a: DeltaA?, b: DeltaB? }} TransformResult
51
+ */
52
+
53
+ /**
54
+ * @template {delta.DeltaBuilder?} DeltaA
55
+ * @template {delta.DeltaBuilder?} DeltaB
56
+ * @param {DeltaA} a
57
+ * @param {DeltaB} b
58
+ * @return {TransformResult<DeltaA?,DeltaB?>}
59
+ */
60
+ const transformResult = (a, b) => ({ a, b });
61
+
62
+ transformResult(delta.create('x'), null);
63
+
64
+ /**
65
+ * @template {delta.DeltaAny} DeltaA
66
+ * @template {delta.DeltaAny} DeltaB
67
+ * @typedef {(t:{a:DeltaA?,b:DeltaB?})=>({a:DeltaA?,b:DeltaB?})} DeltaTransformer
68
+ */
69
+
70
+ /**
71
+ * @template {delta.Delta<string,any,any,any>} A
72
+ * @template {(A extends delta.Delta<infer NodeName,infer Attrs,infer Children,infer Text> ? delta.Delta<`x-${NodeName}`,Attrs,Children,Text> : never)} B
73
+ * @param {TransformResult<A,B>} t
74
+ * @return {TransformResult<A,B>}
75
+ */
76
+ const rename = t => {
77
+ /**
78
+ * @type {any}
79
+ */
80
+ const tout = /** @type {any} */ (transformResult(null, null));
81
+ if (t.a) {
82
+ const c = /** @type {delta.Delta} */ (t.a.clone());
83
+ c.name = 'x-' + c.name;
84
+ // @ts-ignore
85
+ tout.b = c;
86
+ }
87
+ if (t.b) {
88
+ const c = /** @type {delta.Delta} */ (t.b.clone());
89
+ c.name = c.name.slice(2);
90
+ // @ts-ignore
91
+ tout.a = c;
92
+ }
93
+ return tout
94
+ };
95
+
96
+ delta.create('x', { x: 'dtrn' });
97
+ rename({ a: delta.create('x', { x: 'dtrn' }), b: null });
98
+ //
99
+ // /**
100
+ // * @template {delta.Delta} D
101
+ // * @param {s.Schema<D>} $d
102
+ // * @return {Transformer<D,D>}
103
+ // */
104
+ // const id = ($d) => /** @type {Transformer<D,D>} */ (new Transformer($d))
105
+ //
106
+ // const q = id(delta.$delta({ name: 'div' }))
107
+ // const q2 = id(delta.$delta({ name: 'div', attrs: { a: s.$string } })).pipe(t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)]))
108
+ // const q3 = t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)])(id(delta.$delta({ name: 'div', attrs: { a: s.$string } }))))
109
+ //
110
+ //
111
+ // /**
112
+ // * @param {Transformer<delta.Delta<any,{ a: string, name: string }>>} t
113
+ // */
114
+ // const dataToH1 = t => t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)])(t)
115
+ // const q4 = dataToH1(id(delta.$delta({ name: 'div', attrs: { a: s.$string } })))
116
+ //
117
+ // const dataToH1_2 = t => rename('h1')(renameAttr({ a: 'color' })(static(delta.create('h1', { name: 'mystuff' }, 'some content!'))(t)))
118
+
119
+ /* eslint-disable */
34
120
 
35
121
  /**
36
122
  * @template T
@@ -147,7 +233,7 @@ const deltaRDT = $delta => new DeltaRDT($delta);
147
233
  */
148
234
  const domToDelta = domNode => {
149
235
  if (dom.$element.check(domNode)) {
150
- const d = node.node(domNode.nodeName.toLowerCase());
236
+ const d = undefined(domNode.nodeName.toLowerCase());
151
237
  for (let i = 0; i < domNode.attributes.length; i++) {
152
238
  const attr = /** @type {Attr} */ (domNode.attributes.item(i));
153
239
  d.attributes.set(attr.nodeName, attr.value);
@@ -164,17 +250,17 @@ const domToDelta = domNode => {
164
250
  * @param {DomDelta} d
165
251
  */
166
252
  const deltaToDom = d => {
167
- if (node.$nodeAny.check(d)) {
253
+ if (undefined(d)) {
168
254
  const n = dom.element(d.name);
169
255
  d.attributes.forEach(change => {
170
- if (ops.$insertOp.check(change)) {
256
+ if (delta.$insertOp.check(change)) {
171
257
  n.setAttribute(change.key, change.value);
172
258
  }
173
259
  });
174
260
  d.children.forEach(child => {
175
- if (ops.$insertOp.check(child)) {
261
+ if (delta.$insertOp.check(child)) {
176
262
  n.append(...child.insert.map(deltaToDom));
177
- } else if (ops.$textOp.check(child)) {
263
+ } else if (delta.$textOp.check(child)) {
178
264
  n.append(dom.text(child.insert));
179
265
  }
180
266
  });
@@ -189,7 +275,7 @@ const deltaToDom = d => {
189
275
  */
190
276
  const applyDeltaToDom = (el, d) => {
191
277
  d.attributes.forEach(change => {
192
- if (ops.$deleteOp.check(change)) {
278
+ if (delta.$deleteOp.check(change)) {
193
279
  el.removeAttribute(change.key);
194
280
  } else {
195
281
  el.setAttribute(change.key, change.value);
@@ -199,7 +285,7 @@ const applyDeltaToDom = (el, d) => {
199
285
  let childOffset = 0;
200
286
  d.children.forEach(change => {
201
287
  let child = el.childNodes[childIndex] || null;
202
- if (ops.$deleteOp.check(change)) {
288
+ if (delta.$deleteOp.check(change)) {
203
289
  let len = change.length;
204
290
  while (len > 0) {
205
291
  if (dom.$element.check(child)) {
@@ -220,7 +306,7 @@ const applyDeltaToDom = (el, d) => {
220
306
  }
221
307
  }
222
308
  }
223
- } else if (ops.$insertOp.check(change)) {
309
+ } else if (delta.$insertOp.check(change)) {
224
310
  if (childOffset > 0) {
225
311
  const tchild = dom.$text.cast(child);
226
312
  child = tchild.splitText(childOffset);
@@ -228,9 +314,9 @@ const applyDeltaToDom = (el, d) => {
228
314
  childOffset = 0;
229
315
  }
230
316
  el.insertBefore(dom.fragment(change.insert.map(deltaToDom)), child);
231
- } else if (ops.$modifyOp.check(change)) {
317
+ } else if (delta.$modifyOp.check(change)) {
232
318
  applyDeltaToDom(dom.$element.cast(child), change.modify);
233
- } else if (ops.$textOp.check(change)) {
319
+ } else if (delta.$textOp.check(change)) {
234
320
  el.insertBefore(dom.text(change.insert), child);
235
321
  } else {
236
322
  error.unexpectedCase();
@@ -238,7 +324,7 @@ const applyDeltaToDom = (el, d) => {
238
324
  });
239
325
  };
240
326
 
241
- const $domDelta = node.$node(schema.$string, schema.$record(schema.$string, schema.$string), schema.$never, { recursive: true, withText: true });
327
+ const $domDelta = undefined(schema.$string, schema.$record(schema.$string, schema.$string), schema.$never, { recursive: true, withText: true });
242
328
 
243
329
  /**
244
330
  * @param {Element} observedNode
@@ -264,7 +350,7 @@ const _mutationsToDelta = (observedNode, mutations, origin) => {
264
350
  * @param {Node} node
265
351
  * @return {ChangedNodeInfo}
266
352
  */
267
- const getChangedNodeInfo = node$1 => map.setIfUndefined(changedNodes, node$1, () => ({ removedBefore: map.create(), added: set.create(), modified: 0, d: node.node(node$1.nodeName.toLowerCase()) }));
353
+ const getChangedNodeInfo = node => map.setIfUndefined(changedNodes, node, () => ({ removedBefore: map.create(), added: set.create(), modified: 0, d: undefined(node.nodeName.toLowerCase()) }));
268
354
  const observedNodeInfo = getChangedNodeInfo(observedNode);
269
355
  mutations.forEach(mutation => {
270
356
  const target = /** @type {HTMLElement} */ (mutation.target);
@@ -1 +1 @@
1
- {"version":3,"file":"binding.cjs","sources":["../delta/binding.js"],"sourcesContent":["/* global MutationObserver */\nimport { ObservableV2 } from '../observable.js'\nimport * as delta from './index.js'\nimport * as dt from './transformer.js' // eslint-disable-line\nimport * as dom from '../dom.js'\nimport * as set from '../set.js'\nimport * as map from '../map.js'\nimport * as error from '../error.js'\nimport * as math from '../math.js'\nimport * as mux from '../mutex.js'\nimport * as s from '../schema.js'\n\n/**\n * @template T\n * @typedef {import('../schema.js').Schema<T>} Schema\n */\n\n/**\n * @template {delta.AbstractDelta} DeltaA\n * @template {delta.AbstractDelta} DeltaB\n */\nexport class Binding {\n /**\n * @param {RDT<DeltaA>} a\n * @param {RDT<DeltaB>} b\n * @param {dt.Template<any,DeltaA,DeltaB>} template\n */\n constructor (a, b, template) {\n /**\n * @type {dt.Transformer<any,DeltaA,DeltaB>}\n */\n this.t = template.init()\n this.a = a\n this.b = b\n this._mux = mux.createMutex()\n this._achanged = this.a.on('change', d => this._mux(() => {\n const tres = this.t.applyA(d)\n if (tres.a) {\n a.update(tres.a)\n }\n if (tres.b) {\n b.update(tres.b)\n }\n }))\n this._bchanged = this.b.on('change', d => this._mux(() => {\n const tres = this.t.applyB(d)\n if (tres.b) {\n this.b.update(tres.b)\n }\n if (tres.a) {\n a.update(tres.a)\n }\n }))\n }\n\n destroy = () => {\n this.a.off('destroy', this.destroy)\n this.b.off('destroy', this.destroy)\n this.a.off('change', this._achanged)\n this.b.off('change', this._bchanged)\n }\n}\n\n/**\n * Abstract Interface for a delta-based Replicated Data Type.\n *\n * @template {delta.AbstractDelta} Delta\n * @typedef {ObservableV2<{ 'change': (delta: Delta) => void, 'destroy': (rdt:RDT<Delta>)=>void }> & { update: (delta: Delta) => any, destroy: () => void }} RDT\n */\n\n/**\n * @template {delta.AbstractDelta} DeltaA\n * @template {dt.Template<any,DeltaA,any>} Transformer\n * @param {RDT<DeltaA>} a\n * @param {RDT<Transformer extends dt.Template<any,DeltaA,infer DeltaB> ? DeltaB : never>} b\n * @param {dt.Template<any,DeltaA,any>} template\n */\nexport const bind = (a, b, template) => new Binding(a, b, template)\n\n/**\n * @template {delta.AbstractDelta} Delta\n * @implements RDT<Delta>\n * @extends {ObservableV2<{ change: (delta: Delta) => void, 'destroy': (rdt:DeltaRDT<Delta>)=>void }>}\n */\nclass DeltaRDT extends ObservableV2 {\n /**\n * @param {Schema<Delta>} $delta\n */\n constructor ($delta) {\n super()\n this.$delta = $delta\n /**\n * @type {Delta?}\n */\n this.state = null\n this._mux = mux.createMutex()\n }\n\n /**\n * @param {Delta} delta\n */\n update = delta => delta.isEmpty() || this._mux(() => {\n if (this.state != null) {\n this.state.apply(delta)\n } else {\n this.state = delta\n }\n this.emit('change', [delta])\n })\n\n destroy () {\n this.emit('destroy', [this])\n super.destroy()\n }\n}\n\n/**\n * @template {delta.AbstractDelta} Delta\n * @param {Schema<Delta>} $delta\n */\nexport const deltaRDT = $delta => new DeltaRDT($delta)\n\n/**\n * @param {Node} domNode\n */\nconst domToDelta = domNode => {\n if (dom.$element.check(domNode)) {\n const d = delta.node(domNode.nodeName.toLowerCase())\n for (let i = 0; i < domNode.attributes.length; i++) {\n const attr = /** @type {Attr} */ (domNode.attributes.item(i))\n d.attributes.set(attr.nodeName, attr.value)\n }\n domNode.childNodes.forEach(child => {\n d.children.insert(dom.$text.check(child) ? child.textContent : [domToDelta(child)])\n })\n return d\n }\n error.unexpectedCase()\n}\n\n/**\n * @param {DomDelta} d\n */\nconst deltaToDom = d => {\n if (delta.$nodeAny.check(d)) {\n const n = dom.element(d.name)\n d.attributes.forEach(change => {\n if (delta.$insertOp.check(change)) {\n n.setAttribute(change.key, change.value)\n }\n })\n d.children.forEach(child => {\n if (delta.$insertOp.check(child)) {\n n.append(...child.insert.map(deltaToDom))\n } else if (delta.$textOp.check(child)) {\n n.append(dom.text(child.insert))\n }\n })\n return n\n }\n error.unexpectedCase()\n}\n\n/**\n * @param {Element} el\n * @param {delta.Node<string,any,any,any>} d\n */\nconst applyDeltaToDom = (el, d) => {\n d.attributes.forEach(change => {\n if (delta.$deleteOp.check(change)) {\n el.removeAttribute(change.key)\n } else {\n el.setAttribute(change.key, change.value)\n }\n })\n let childIndex = 0\n let childOffset = 0\n d.children.forEach(change => {\n let child = el.childNodes[childIndex] || null\n if (delta.$deleteOp.check(change)) {\n let len = change.length\n while (len > 0) {\n if (dom.$element.check(child)) {\n child.remove()\n len--\n } else if (dom.$text.check(child)) {\n const childLen = child.length\n if (childOffset === 0 && childLen <= len) {\n child.remove()\n len -= childLen\n } else {\n const spliceLen = math.min(len, childLen - childOffset)\n child.deleteData(childOffset, spliceLen)\n if (child.length <= childOffset) {\n childOffset = 0\n childIndex++\n }\n }\n }\n }\n } else if (delta.$insertOp.check(change)) {\n if (childOffset > 0) {\n const tchild = dom.$text.cast(child)\n child = tchild.splitText(childOffset)\n childIndex++\n childOffset = 0\n }\n el.insertBefore(dom.fragment(change.insert.map(deltaToDom)), child)\n } else if (delta.$modifyOp.check(change)) {\n applyDeltaToDom(dom.$element.cast(child), change.modify)\n } else if (delta.$textOp.check(change)) {\n el.insertBefore(dom.text(change.insert), child)\n } else {\n error.unexpectedCase()\n }\n })\n}\n\nexport const $domDelta = delta.$node(s.$string, s.$record(s.$string, s.$string), s.$never, { recursive: true, withText: true })\n\n/**\n * @param {Element} observedNode\n * @param {MutationRecord[]} mutations\n * @param {any} origin assign this origin to the generated delta\n */\nconst _mutationsToDelta = (observedNode, mutations, origin) => {\n /**\n * @typedef {{ removedBefore: Map<Node?,number>, added: Set<Node>, modified: number, d: delta.Node }} ChangedNodeInfo\n */\n /**\n * Compute all deltas without recursion.\n *\n * 1. mark all changed parents in parentsChanged\n * 2. fill out necessary information for each changed parent ()\n */\n //\n /**\n * @type {Map<Node,ChangedNodeInfo>}\n */\n const changedNodes = map.create()\n /**\n * @param {Node} node\n * @return {ChangedNodeInfo}\n */\n const getChangedNodeInfo = node => map.setIfUndefined(changedNodes, node, () => ({ removedBefore: map.create(), added: set.create(), modified: 0, d: delta.node(node.nodeName.toLowerCase()) }))\n const observedNodeInfo = getChangedNodeInfo(observedNode)\n mutations.forEach(mutation => {\n const target = /** @type {HTMLElement} */ (mutation.target)\n const parent = target.parentNode\n const attrName = /** @type {string} */ (mutation.attributeName)\n const newVal = target.getAttribute(attrName)\n const info = getChangedNodeInfo(target)\n const d = info.d\n // go up the tree and mark that a child has been modified\n for (let changedParent = parent; changedParent != null && getChangedNodeInfo(changedParent).modified++ > 1 && changedParent !== observedNode; changedParent = changedParent.parentNode) {\n // nop\n }\n switch (mutation.type) {\n case 'attributes': {\n const attrs = /** @type {delta.Node<any,any,any>} */ (d).attributes\n if (newVal == null) {\n attrs.delete(attrName)\n } else {\n attrs.set(/** @type {string} */ (attrName), newVal)\n }\n break\n }\n case 'characterData': {\n error.methodUnimplemented()\n break\n }\n case 'childList': {\n const targetInfo = getChangedNodeInfo(target)\n mutation.addedNodes.forEach(node => {\n targetInfo.added.add(node)\n })\n const removed = mutation.removedNodes.length\n if (removed > 0) {\n // @todo this can't work because next can be null\n targetInfo.removedBefore.set(mutation.nextSibling, removed)\n }\n break\n }\n }\n })\n changedNodes.forEach((info, node) => {\n const numOfChildChanges = info.modified + info.removedBefore.size + info.added.size\n const d = /** @type {delta.Node<any,any,any>} */ (info.d)\n if (numOfChildChanges > 0) {\n node.childNodes.forEach(nchild => {\n if (info.removedBefore.has(nchild)) { // can happen separately\n d.children.delete(/** @type {number} */ (info.removedBefore.get(nchild)))\n }\n if (info.added.has(nchild)) {\n d.children.insert(dom.$text.check(nchild) ? nchild.textContent : [domToDelta(nchild)])\n } else if (changedNodes.has(nchild)) {\n d.children.modify(getChangedNodeInfo(nchild).d)\n }\n })\n // remove items to the end, if necessary\n d.children.delete(info.removedBefore.get(null) ?? 0)\n }\n d.done()\n })\n observedNodeInfo.d.origin = origin\n return observedNodeInfo.d\n}\n\n/**\n * @typedef {delta.RecursiveNode<string, { [key:string]: string }, never, true>} DomDelta\n */\n\n/**\n * @template {DomDelta} [D=DomDelta]\n * @implements RDT<D>\n * @extends {ObservableV2<{ change: (delta: D)=>void, destroy: (rdt:DomRDT<D>)=>void }>}>}\n */\nclass DomRDT extends ObservableV2 {\n /**\n * @param {Element} observedNode\n */\n constructor (observedNode) {\n super()\n this.observedNode = observedNode\n this._mux = mux.createMutex()\n this.observer = new MutationObserver(this._mutationHandler)\n this.observer.observe(observedNode, {\n subtree: true,\n childList: true,\n attributes: true,\n characterDataOldValue: true\n })\n }\n\n /**\n * @param {MutationRecord[]} mutations\n */\n _mutationHandler = mutations =>\n mutations.length > 0 && this._mux(() => {\n this.emit('change', [/** @type {D} */(_mutationsToDelta(this.observedNode, mutations, this))])\n })\n\n /**\n * @param {D} delta\n */\n update = delta => {\n if (delta.origin !== this) {\n // @todo the retrieved changes must be transformed agains the updated changes. need a proper\n // transaction system\n this._mutationHandler(this.observer.takeRecords())\n this._mux(() => {\n applyDeltaToDom(this.observedNode, delta)\n const mutations = this.observer.takeRecords()\n this.emit('change', [/** @type {D} */(_mutationsToDelta(this.observedNode, mutations, delta.origin))])\n })\n }\n }\n\n destroy () {\n this.emit('destroy', [this])\n super.destroy()\n this.observer.disconnect()\n }\n}\n\n/**\n * @param {Element} dom\n */\nexport const domRDT = dom => new DomRDT(dom)\n"],"names":["mux.createMutex","ObservableV2","dom.$element","delta.node","dom.$text","error.unexpectedCase","delta.$nodeAny","dom.element","delta.$insertOp","delta.$textOp","dom.text","delta.$deleteOp","math.min","dom.fragment","delta.$modifyOp","delta.$node","s.$string","s.$record","s.$never","map.create","node","map.setIfUndefined","set.create","error.methodUnimplemented"],"mappings":"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"}
1
+ {"version":3,"file":"binding.cjs","sources":["../delta/t3.test.js","../delta/binding.js"],"sourcesContent":["/* eslint-disable */\n// @ts-nocheck\nimport * as t from '../testing.js'\nimport * as delta from './delta.js'\nimport * as s from '../schema.js'\nimport * as array from '../array.js'\n\n/**\n * @template {delta.Delta?} DeltaA\n * @template {delta.Delta?} DeltaB\n * @typedef {{ a: DeltaA?, b: DeltaB? }} TransformResult\n */\n\n/**\n * @template {delta.DeltaBuilder?} DeltaA\n * @template {delta.DeltaBuilder?} DeltaB\n * @param {DeltaA} a\n * @param {DeltaB} b\n * @return {TransformResult<DeltaA?,DeltaB?>}\n */\nexport const transformResult = (a, b) => ({ a, b })\nexport const transformResultEmpty = transformResult(null, null)\n\nlet x = transformResult(delta.create('x'), null)\nx = transformResult(null, null)\n\n/**\n * @template {delta.DeltaAny} DeltaA\n * @template {delta.DeltaAny} DeltaB\n * @typedef {(t:{a:DeltaA?,b:DeltaB?})=>({a:DeltaA?,b:DeltaB?})} DeltaTransformer\n */\n\n/**\n * @template {delta.Delta<string,any,any,any>} A\n * @template {(A extends delta.Delta<infer NodeName,infer Attrs,infer Children,infer Text> ? delta.Delta<`x-${NodeName}`,Attrs,Children,Text> : never)} B\n * @param {TransformResult<A,B>} t\n * @return {TransformResult<A,B>}\n */\nconst rename = t => {\n /**\n * @type {any}\n */\n const tout = /** @type {any} */ (transformResult(null, null))\n if (t.a) {\n const c = /** @type {delta.Delta} */ (t.a.clone())\n c.name = 'x-' + c.name\n // @ts-ignore\n tout.b = c\n }\n if (t.b) {\n const c = /** @type {delta.Delta} */ (t.b.clone())\n c.name = c.name.slice(2)\n // @ts-ignore\n tout.a = c\n }\n return tout\n}\n\n/**\n * @param {Set<string>} allowed\n */\nconst filter = (allowed) => {\n /**\n * contains inserted items that didn't make it into t.b\n */\n const diff = delta.create()\n /**\n * @template {delta.Delta<string,any,any,any>?} A\n * @template {(A extends delta.Delta<infer NodeName,infer Attrs,infer Children,infer Text> ? delta.Delta<`x-${NodeName}`,Attrs,Children,Text> : never)} B\n * @param {{ a: A?, b: B? }} t\n * @return {{ a: A?, b: B? }}\n */\n return t => {\n /**\n * @type {any}\n */\n const tout = /** @type {any} */ (transformResult(null, null))\n if (t.a) {\n const c = delta.create()\n let index = 0\n /**\n * Split delta into two parts: hidden and visible. hidden contains all \"hidden\" changes (filtered inserts).\n * visible everything else.\n *\n * return visible.rebaseAgainstInverse(diff)\n * apply `diff.apply(merge)`\n *\n */\n for (const child of t.a.children) {\n if (delta.$insertOp.check(child)) {\n for (let i = 0; i < child.insert.length; i++) {\n const ins = child.insert[i]\n if (delta.$deltaAny.check(ins) && allowed.has(ins.name)) {\n ins\n } else {\n\n }\n ins\n }\n }\n if (!delta.$deleteOp.check(child)) {\n index += child.length\n }\n }\n }\n if (t.b) {\n }\n return tout\n }\n}\n\nconst dd = delta.create('x', { x: 'dtrn' })\nconst y = rename({ a: delta.create('x', { x: 'dtrn' }), b: null })\n\n/**\n * @template {delta.DeltaAny} DeltaA\n * @template {delta.DeltaAny} Delta_\n * @template {delta.DeltaAny} DeltaB\n * @param {(t:TransformResult<DeltaA,Delta_>)=>TransformResult<DeltaA,Delta_>} t1\n * @param {(t:TransformResult<Delta_,DeltaB>)=>TransformResult<Delta_,DeltaB>} t2\n * @return {(dx:TransformResult<DeltaA,DeltaB>)=>TransformResult<Delta_,DeltaB>}\n */\nconst pipe = (t1, t2) => (dx) => {\n return /** @type {any} */ (null)\n}\n\n// next idea: Transform object that changes typings\n\n/**\n * Transforms should..\n * - transform from a->b->c->b->a\n * - extendable mod(Transform<A,B>):Transform<A,C>\n * - i can start with id: mod(Id($d))\n */\n\n/**\n * @template {delta.Delta} DeltaA\n * @template {delta.Delta} DeltaB\n * @typedef {{ applyA: (da:DeltaA)=>TransformResult<DeltaA,DeltaB>, applyB: (db:DeltaB)=>TransformResult<DeltaA,DeltaB> }} Transform\n */\n\n/**\n * @template {delta.DeltaBuilder} A\n * @template {delta.DeltaBuilder} B\n */\nclass Transformer {\n /**\n * @param {s.Schema<A>} $da\n */\n constructor ($da) {\n this.$da = $da\n /**\n * @type {Array<Transform<any,any>>}\n */\n this._tr = []\n }\n\n /**\n * @param {TransformResult<A,B>} d\n * @return {TransformResult<A?,B?>}\n */\n apply ({ a, b }) {\n if (a == null && b == null) return transformResult(null, null)\n /**\n * @type {Array<{ a: delta.DeltaBuilder?, b: delta.DeltaBuilder? }>}\n */\n const pendingApply = array.unfold(this._tr.length + 2, () => ({ a: null, b: null }))\n pendingApply[1].a = a\n pendingApply[pendingApply.length - 2].b = b\n /**\n * @param {number} i\n */\n const applyTransformI = i => {\n const p = pendingApply[i + 1]\n const t = this._tr[i]\n const aout = p.a !== null ? t.applyA(p.a) : transformResult(null, null)\n if (p.b !== null) {\n if (aout.b !== null) {\n p.b = p.b.rebase(aout.b, true)\n }\n const bout = t.applyB(p.b)\n aout.a = delta.mergeDeltas(aout.a, bout.a)\n aout.b = delta.mergeDeltas(aout.b, bout.b)\n }\n // write out.a into prev.b, and out.b into next.a\n pendingApply[i].b = delta.mergeDeltas(pendingApply[i].b, aout.a)\n pendingApply[i + 2].a = delta.mergeDeltas(pendingApply[i + 2].a, aout.b)\n return aout\n }\n let needsBackwardTransform = a != null\n let needsForwardTransform = b != null\n while (needsBackwardTransform || needsForwardTransform) {\n if (needsForwardTransform) {\n for (let i = 0; i < this._tr.length; i++) {\n const r = applyTransformI(i)\n if (i != null) {\n needsBackwardTransform = needsBackwardTransform || r.a != null\n }\n }\n needsForwardTransform = false\n }\n if (needsBackwardTransform) {\n for (let i = this._tr.length - 1; i >= 0; i--) {\n const r = applyTransformI(i)\n if (i != null) {\n needsForwardTransform = needsForwardTransform || r.b != null\n }\n }\n needsBackwardTransform = false\n }\n }\n return /** @type {TransformResult<A,B>} */ (transformResult(pendingApply[0].b, pendingApply[pendingApply.length - 1].a))\n }\n}\n//\n// /**\n// * @template {delta.Delta} D\n// * @param {s.Schema<D>} $d\n// * @return {Transformer<D,D>}\n// */\n// const id = ($d) => /** @type {Transformer<D,D>} */ (new Transformer($d))\n//\n// const q = id(delta.$delta({ name: 'div' }))\n// const q2 = id(delta.$delta({ name: 'div', attrs: { a: s.$string } })).pipe(t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)]))\n// const q3 = t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)])(id(delta.$delta({ name: 'div', attrs: { a: s.$string } }))))\n//\n//\n// /**\n// * @param {Transformer<delta.Delta<any,{ a: string, name: string }>>} t\n// */\n// const dataToH1 = t => t.delta('h1', { color: t => query('a')(t), name:'mystuff' }, t => [query('b')(t)])(t)\n// const q4 = dataToH1(id(delta.$delta({ name: 'div', attrs: { a: s.$string } })))\n//\n// const dataToH1_2 = t => rename('h1')(renameAttr({ a: 'color' })(static(delta.create('h1', { name: 'mystuff' }, 'some content!'))(t)))\n","/* eslint-disable */\n// @ts-nocheck\n// @todo remove all @ts-nocheck and eslint-disable\n/* global MutationObserver */\nimport { ObservableV2 } from '../observable.js'\nimport * as delta from './delta.js'\nimport * as dt from './t3.test.js' // eslint-disable-line\nimport * as dom from '../dom.js'\nimport * as set from '../set.js'\nimport * as map from '../map.js'\nimport * as error from '../error.js'\nimport * as math from '../math.js'\nimport * as mux from '../mutex.js'\nimport * as s from '../schema.js'\n\n/**\n * @template T\n * @typedef {import('../schema.js').Schema<T>} Schema\n */\n\n/**\n * @template {delta.AbstractDelta} DeltaA\n * @template {delta.AbstractDelta} DeltaB\n */\nexport class Binding {\n /**\n * @param {RDT<DeltaA>} a\n * @param {RDT<DeltaB>} b\n * @param {dt.Template<any,DeltaA,DeltaB>} template\n */\n constructor (a, b, template) {\n /**\n * @type {dt.Transformer<any,DeltaA,DeltaB>}\n */\n this.t = template.init()\n this.a = a\n this.b = b\n this._mux = mux.createMutex()\n this._achanged = this.a.on('change', d => this._mux(() => {\n const tres = this.t.applyA(d)\n if (tres.a) {\n a.update(tres.a)\n }\n if (tres.b) {\n b.update(tres.b)\n }\n }))\n this._bchanged = this.b.on('change', d => this._mux(() => {\n const tres = this.t.applyB(d)\n if (tres.b) {\n this.b.update(tres.b)\n }\n if (tres.a) {\n a.update(tres.a)\n }\n }))\n }\n\n destroy = () => {\n this.a.off('destroy', this.destroy)\n this.b.off('destroy', this.destroy)\n this.a.off('change', this._achanged)\n this.b.off('change', this._bchanged)\n }\n}\n\n/**\n * Abstract Interface for a delta-based Replicated Data Type.\n *\n * @template {delta.AbstractDelta} Delta\n * @typedef {ObservableV2<{ 'change': (delta: Delta) => void, 'destroy': (rdt:RDT<Delta>)=>void }> & { update: (delta: Delta) => any, destroy: () => void }} RDT\n */\n\n/**\n * @template {delta.AbstractDelta} DeltaA\n * @template {dt.Template<any,DeltaA,any>} Transformer\n * @param {RDT<DeltaA>} a\n * @param {RDT<Transformer extends dt.Template<any,DeltaA,infer DeltaB> ? DeltaB : never>} b\n * @param {dt.Template<any,DeltaA,any>} template\n */\nexport const bind = (a, b, template) => new Binding(a, b, template)\n\n/**\n * @template {delta.AbstractDelta} Delta\n * @implements RDT<Delta>\n * @extends {ObservableV2<{ change: (delta: Delta) => void, 'destroy': (rdt:DeltaRDT<Delta>)=>void }>}\n */\nclass DeltaRDT extends ObservableV2 {\n /**\n * @param {Schema<Delta>} $delta\n */\n constructor ($delta) {\n super()\n this.$delta = $delta\n /**\n * @type {Delta?}\n */\n this.state = null\n this._mux = mux.createMutex()\n }\n\n /**\n * @param {Delta} delta\n */\n update = delta => delta.isEmpty() || this._mux(() => {\n if (this.state != null) {\n this.state.apply(delta)\n } else {\n this.state = delta\n }\n this.emit('change', [delta])\n })\n\n destroy () {\n this.emit('destroy', [this])\n super.destroy()\n }\n}\n\n/**\n * @template {delta.AbstractDelta} Delta\n * @param {Schema<Delta>} $delta\n */\nexport const deltaRDT = $delta => new DeltaRDT($delta)\n\n/**\n * @param {Node} domNode\n */\nconst domToDelta = domNode => {\n if (dom.$element.check(domNode)) {\n const d = delta.node(domNode.nodeName.toLowerCase())\n for (let i = 0; i < domNode.attributes.length; i++) {\n const attr = /** @type {Attr} */ (domNode.attributes.item(i))\n d.attributes.set(attr.nodeName, attr.value)\n }\n domNode.childNodes.forEach(child => {\n d.children.insert(dom.$text.check(child) ? child.textContent : [domToDelta(child)])\n })\n return d\n }\n error.unexpectedCase()\n}\n\n/**\n * @param {DomDelta} d\n */\nconst deltaToDom = d => {\n if (delta.$nodeAny.check(d)) {\n const n = dom.element(d.name)\n d.attributes.forEach(change => {\n if (delta.$insertOp.check(change)) {\n n.setAttribute(change.key, change.value)\n }\n })\n d.children.forEach(child => {\n if (delta.$insertOp.check(child)) {\n n.append(...child.insert.map(deltaToDom))\n } else if (delta.$textOp.check(child)) {\n n.append(dom.text(child.insert))\n }\n })\n return n\n }\n error.unexpectedCase()\n}\n\n/**\n * @param {Element} el\n * @param {delta.Node<string,any,any,any>} d\n */\nconst applyDeltaToDom = (el, d) => {\n d.attributes.forEach(change => {\n if (delta.$deleteOp.check(change)) {\n el.removeAttribute(change.key)\n } else {\n el.setAttribute(change.key, change.value)\n }\n })\n let childIndex = 0\n let childOffset = 0\n d.children.forEach(change => {\n let child = el.childNodes[childIndex] || null\n if (delta.$deleteOp.check(change)) {\n let len = change.length\n while (len > 0) {\n if (dom.$element.check(child)) {\n child.remove()\n len--\n } else if (dom.$text.check(child)) {\n const childLen = child.length\n if (childOffset === 0 && childLen <= len) {\n child.remove()\n len -= childLen\n } else {\n const spliceLen = math.min(len, childLen - childOffset)\n child.deleteData(childOffset, spliceLen)\n if (child.length <= childOffset) {\n childOffset = 0\n childIndex++\n }\n }\n }\n }\n } else if (delta.$insertOp.check(change)) {\n if (childOffset > 0) {\n const tchild = dom.$text.cast(child)\n child = tchild.splitText(childOffset)\n childIndex++\n childOffset = 0\n }\n el.insertBefore(dom.fragment(change.insert.map(deltaToDom)), child)\n } else if (delta.$modifyOp.check(change)) {\n applyDeltaToDom(dom.$element.cast(child), change.modify)\n } else if (delta.$textOp.check(change)) {\n el.insertBefore(dom.text(change.insert), child)\n } else {\n error.unexpectedCase()\n }\n })\n}\n\nexport const $domDelta = delta.$node(s.$string, s.$record(s.$string, s.$string), s.$never, { recursive: true, withText: true })\n\n/**\n * @param {Element} observedNode\n * @param {MutationRecord[]} mutations\n * @param {any} origin assign this origin to the generated delta\n */\nconst _mutationsToDelta = (observedNode, mutations, origin) => {\n /**\n * @typedef {{ removedBefore: Map<Node?,number>, added: Set<Node>, modified: number, d: delta.Node }} ChangedNodeInfo\n */\n /**\n * Compute all deltas without recursion.\n *\n * 1. mark all changed parents in parentsChanged\n * 2. fill out necessary information for each changed parent ()\n */\n //\n /**\n * @type {Map<Node,ChangedNodeInfo>}\n */\n const changedNodes = map.create()\n /**\n * @param {Node} node\n * @return {ChangedNodeInfo}\n */\n const getChangedNodeInfo = node => map.setIfUndefined(changedNodes, node, () => ({ removedBefore: map.create(), added: set.create(), modified: 0, d: delta.node(node.nodeName.toLowerCase()) }))\n const observedNodeInfo = getChangedNodeInfo(observedNode)\n mutations.forEach(mutation => {\n const target = /** @type {HTMLElement} */ (mutation.target)\n const parent = target.parentNode\n const attrName = /** @type {string} */ (mutation.attributeName)\n const newVal = target.getAttribute(attrName)\n const info = getChangedNodeInfo(target)\n const d = info.d\n // go up the tree and mark that a child has been modified\n for (let changedParent = parent; changedParent != null && getChangedNodeInfo(changedParent).modified++ > 1 && changedParent !== observedNode; changedParent = changedParent.parentNode) {\n // nop\n }\n switch (mutation.type) {\n case 'attributes': {\n const attrs = /** @type {delta.Node<any,any,any>} */ (d).attributes\n if (newVal == null) {\n attrs.delete(attrName)\n } else {\n attrs.set(/** @type {string} */ (attrName), newVal)\n }\n break\n }\n case 'characterData': {\n error.methodUnimplemented()\n break\n }\n case 'childList': {\n const targetInfo = getChangedNodeInfo(target)\n mutation.addedNodes.forEach(node => {\n targetInfo.added.add(node)\n })\n const removed = mutation.removedNodes.length\n if (removed > 0) {\n // @todo this can't work because next can be null\n targetInfo.removedBefore.set(mutation.nextSibling, removed)\n }\n break\n }\n }\n })\n changedNodes.forEach((info, node) => {\n const numOfChildChanges = info.modified + info.removedBefore.size + info.added.size\n const d = /** @type {delta.Node<any,any,any>} */ (info.d)\n if (numOfChildChanges > 0) {\n node.childNodes.forEach(nchild => {\n if (info.removedBefore.has(nchild)) { // can happen separately\n d.children.delete(/** @type {number} */ (info.removedBefore.get(nchild)))\n }\n if (info.added.has(nchild)) {\n d.children.insert(dom.$text.check(nchild) ? nchild.textContent : [domToDelta(nchild)])\n } else if (changedNodes.has(nchild)) {\n d.children.modify(getChangedNodeInfo(nchild).d)\n }\n })\n // remove items to the end, if necessary\n d.children.delete(info.removedBefore.get(null) ?? 0)\n }\n d.done()\n })\n observedNodeInfo.d.origin = origin\n return observedNodeInfo.d\n}\n\n/**\n * @typedef {delta.RecursiveNode<string, { [key:string]: string }, never, true>} DomDelta\n */\n\n/**\n * @template {DomDelta} [D=DomDelta]\n * @implements RDT<D>\n * @extends {ObservableV2<{ change: (delta: D)=>void, destroy: (rdt:DomRDT<D>)=>void }>}>}\n */\nclass DomRDT extends ObservableV2 {\n /**\n * @param {Element} observedNode\n */\n constructor (observedNode) {\n super()\n this.observedNode = observedNode\n this._mux = mux.createMutex()\n this.observer = new MutationObserver(this._mutationHandler)\n this.observer.observe(observedNode, {\n subtree: true,\n childList: true,\n attributes: true,\n characterDataOldValue: true\n })\n }\n\n /**\n * @param {MutationRecord[]} mutations\n */\n _mutationHandler = mutations =>\n mutations.length > 0 && this._mux(() => {\n this.emit('change', [/** @type {D} */(_mutationsToDelta(this.observedNode, mutations, this))])\n })\n\n /**\n * @param {D} delta\n */\n update = delta => {\n if (delta.origin !== this) {\n // @todo the retrieved changes must be transformed agains the updated changes. need a proper\n // transaction system\n this._mutationHandler(this.observer.takeRecords())\n this._mux(() => {\n applyDeltaToDom(this.observedNode, delta)\n const mutations = this.observer.takeRecords()\n this.emit('change', [/** @type {D} */(_mutationsToDelta(this.observedNode, mutations, delta.origin))])\n })\n }\n }\n\n destroy () {\n this.emit('destroy', [this])\n super.destroy()\n this.observer.disconnect()\n }\n}\n\n/**\n * @param {Element} dom\n */\nexport const domRDT = dom => new DomRDT(dom)\n"],"names":["delta.create","mux.createMutex","ObservableV2","dom.$element","delta.node","dom.$text","error.unexpectedCase","delta.$nodeAny.check","dom.element","delta.$insertOp","delta.$textOp","dom.text","delta.$deleteOp","math.min","dom.fragment","delta.$modifyOp","delta.$node","s.$string","s.$record","s.$never","map.create","map.setIfUndefined","set.create","error.methodUnimplemented"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var map = require('./map-24d263c0.cjs');
4
4
  var set = require('./set-5b47859e.cjs');
5
- var buffer = require('./buffer-7f6fa8fa.cjs');
5
+ var buffer = require('./buffer-54360f21.cjs');
6
6
  var storage = require('./storage.cjs');
7
7
 
8
8
  /* eslint-env browser */
@@ -125,4 +125,4 @@ exports.broadcastchannel = broadcastchannel;
125
125
  exports.publish = publish;
126
126
  exports.subscribe = subscribe;
127
127
  exports.unsubscribe = unsubscribe;
128
- //# sourceMappingURL=broadcastchannel-d0c108a2.cjs.map
128
+ //# sourceMappingURL=broadcastchannel-42bbe6e0.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"broadcastchannel-d0c108a2.cjs","sources":["../broadcastchannel.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set<function(any, any):any>} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map<string, Channel>}\n */\nconst channels = new Map()\n\n/* c8 ignore start */\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:Uint8Array}):void}\n */\n this.onmessage = null\n /**\n * @param {any} e\n */\n this._onChange = e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') })\n storage.onChange(this._onChange)\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n\n close () {\n storage.offChange(this._onChange)\n }\n}\n/* c8 ignore stop */\n\n// Use BroadcastChannel or Polyfill\n/* c8 ignore next */\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = set.create()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n /* c8 ignore next */\n bc.onmessage = e => subs.forEach(sub => sub(e.data, 'broadcastchannel'))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const subscribe = (room, f) => {\n getChannel(room).subs.add(f)\n return f\n}\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const unsubscribe = (room, f) => {\n const channel = getChannel(room)\n const unsubscribed = channel.subs.delete(f)\n if (unsubscribed && channel.subs.size === 0) {\n channel.bc.close()\n channels.delete(room)\n }\n return unsubscribed\n}\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n * @param {any} [origin]\n */\nexport const publish = (room, data, origin = null) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data, origin))\n}\n"],"names":["buffer.fromBase64","storage.onChange","storage.varStorage","buffer.toBase64","buffer.createUint8ArrayFromArrayBuffer","storage.offChange","map.setIfUndefined","set.create"],"mappings":";;;;;;;AAAA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAE;AAC1B;AACA;AACA,MAAM,oBAAoB,CAAC;AAC3B;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,GAAG,KAAI;AACzB;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAEA,iBAAiB,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAC;AACpI,IAAIC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE;AACpB,IAAIC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAEC,eAAe,CAACC,sCAAsC,CAAC,GAAG,CAAC,CAAC,EAAC;AACvG,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG;AACX,IAAIC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAC;AACrC,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,OAAO,gBAAgB,KAAK,WAAW,GAAG,oBAAoB,GAAG,iBAAgB;AAC5F;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,IAAI;AACvB,EAAEC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM;AAC3C,IAAI,MAAM,IAAI,GAAGC,UAAU,GAAE;AAC7B,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,EAAC;AAC3B;AACA;AACA;AACA;AACA,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAC;AAC5E,IAAI,OAAO;AACX,MAAM,EAAE,EAAE,IAAI;AACd,KAAK;AACL,GAAG,EAAC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AACtC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC;AAC9B,EAAE,OAAO,CAAC;AACV,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AACxC,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAC;AAClC,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC;AAC7C,EAAE,IAAI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/C,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,GAAE;AACtB,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAC;AACzB,GAAG;AACH,EAAE,OAAO,YAAY;AACrB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK;AACtD,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAC;AACxB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAC;AAC1C;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"broadcastchannel-42bbe6e0.cjs","sources":["../broadcastchannel.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Helpers for cross-tab communication using broadcastchannel with LocalStorage fallback.\n *\n * ```js\n * // In browser window A:\n * broadcastchannel.subscribe('my events', data => console.log(data))\n * broadcastchannel.publish('my events', 'Hello world!') // => A: 'Hello world!' fires synchronously in same tab\n *\n * // In browser window B:\n * broadcastchannel.publish('my events', 'hello from tab B') // => A: 'hello from tab B'\n * ```\n *\n * @module broadcastchannel\n */\n\n// @todo before next major: use Uint8Array instead as buffer object\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as buffer from './buffer.js'\nimport * as storage from './storage.js'\n\n/**\n * @typedef {Object} Channel\n * @property {Set<function(any, any):any>} Channel.subs\n * @property {any} Channel.bc\n */\n\n/**\n * @type {Map<string, Channel>}\n */\nconst channels = new Map()\n\n/* c8 ignore start */\nclass LocalStoragePolyfill {\n /**\n * @param {string} room\n */\n constructor (room) {\n this.room = room\n /**\n * @type {null|function({data:Uint8Array}):void}\n */\n this.onmessage = null\n /**\n * @param {any} e\n */\n this._onChange = e => e.key === room && this.onmessage !== null && this.onmessage({ data: buffer.fromBase64(e.newValue || '') })\n storage.onChange(this._onChange)\n }\n\n /**\n * @param {ArrayBuffer} buf\n */\n postMessage (buf) {\n storage.varStorage.setItem(this.room, buffer.toBase64(buffer.createUint8ArrayFromArrayBuffer(buf)))\n }\n\n close () {\n storage.offChange(this._onChange)\n }\n}\n/* c8 ignore stop */\n\n// Use BroadcastChannel or Polyfill\n/* c8 ignore next */\nconst BC = typeof BroadcastChannel === 'undefined' ? LocalStoragePolyfill : BroadcastChannel\n\n/**\n * @param {string} room\n * @return {Channel}\n */\nconst getChannel = room =>\n map.setIfUndefined(channels, room, () => {\n const subs = set.create()\n const bc = new BC(room)\n /**\n * @param {{data:ArrayBuffer}} e\n */\n /* c8 ignore next */\n bc.onmessage = e => subs.forEach(sub => sub(e.data, 'broadcastchannel'))\n return {\n bc, subs\n }\n })\n\n/**\n * Subscribe to global `publish` events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const subscribe = (room, f) => {\n getChannel(room).subs.add(f)\n return f\n}\n\n/**\n * Unsubscribe from `publish` global events.\n *\n * @function\n * @param {string} room\n * @param {function(any, any):any} f\n */\nexport const unsubscribe = (room, f) => {\n const channel = getChannel(room)\n const unsubscribed = channel.subs.delete(f)\n if (unsubscribed && channel.subs.size === 0) {\n channel.bc.close()\n channels.delete(room)\n }\n return unsubscribed\n}\n\n/**\n * Publish data to all subscribers (including subscribers on this tab)\n *\n * @function\n * @param {string} room\n * @param {any} data\n * @param {any} [origin]\n */\nexport const publish = (room, data, origin = null) => {\n const c = getChannel(room)\n c.bc.postMessage(data)\n c.subs.forEach(sub => sub(data, origin))\n}\n"],"names":["buffer.fromBase64","storage.onChange","storage.varStorage","buffer.toBase64","buffer.createUint8ArrayFromArrayBuffer","storage.offChange","map.setIfUndefined","set.create"],"mappings":"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"}
@@ -4,16 +4,16 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('./map-24d263c0.cjs');
6
6
  require('./set-5b47859e.cjs');
7
- require('./buffer-7f6fa8fa.cjs');
7
+ require('./buffer-54360f21.cjs');
8
8
  require('./storage.cjs');
9
- var broadcastchannel = require('./broadcastchannel-d0c108a2.cjs');
9
+ var broadcastchannel = require('./broadcastchannel-42bbe6e0.cjs');
10
10
  require('./string-fddc5f8b.cjs');
11
11
  require('./array-78849c95.cjs');
12
- require('./environment-90227ead.cjs');
12
+ require('./environment-ae4f6f15.cjs');
13
13
  require('./conditions-f5c0c102.cjs');
14
- require('./function-e7d18feb.cjs');
15
- require('./object-18980796.cjs');
16
- require('./traits.cjs');
14
+ require('./function-618aa640.cjs');
15
+ require('./object-dec41ef9.cjs');
16
+ require('./equality.cjs');
17
17
  require('./math-96d5e8c4.cjs');
18
18
  require('./encoding-1a745c43.cjs');
19
19
  require('./number-1fb57bba.cjs');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var string = require('./string-fddc5f8b.cjs');
4
- var environment = require('./environment-90227ead.cjs');
4
+ var environment = require('./environment-ae4f6f15.cjs');
5
5
  var array = require('./array-78849c95.cjs');
6
6
  var math = require('./math-96d5e8c4.cjs');
7
7
  var encoding = require('./encoding-1a745c43.cjs');
@@ -195,4 +195,4 @@ exports.shiftNBitsLeft = shiftNBitsLeft;
195
195
  exports.toBase64 = toBase64;
196
196
  exports.toBase64UrlEncoded = toBase64UrlEncoded;
197
197
  exports.toHexString = toHexString;
198
- //# sourceMappingURL=buffer-7f6fa8fa.cjs.map
198
+ //# sourceMappingURL=buffer-54360f21.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buffer-7f6fa8fa.cjs","sources":["../buffer.js"],"sourcesContent":["/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array<ArrayBuffer>}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n"],"names":["string.fromCharCode","env.isBrowser","array.map","math.ceil","encoding.encode","encoding.writeAny","decoding.readAny","decoding.createDecoder"],"mappings":"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"}
1
+ {"version":3,"file":"buffer-54360f21.cjs","sources":["../buffer.js"],"sourcesContent":["/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array<ArrayBuffer>}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n"],"names":["string.fromCharCode","env.isBrowser","array.map","math.ceil","encoding.encode","encoding.writeAny","decoding.readAny","decoding.createDecoder"],"mappings":"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"}