lib0 0.2.49 → 0.2.52

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 (78) hide show
  1. package/.github/workflows/node.js.yml +1 -1
  2. package/README.md +23 -23
  3. package/broadcastchannel.d.ts +4 -4
  4. package/broadcastchannel.d.ts.map +1 -1
  5. package/broadcastchannel.js +7 -6
  6. package/decoding.d.ts +2 -0
  7. package/decoding.d.ts.map +1 -1
  8. package/decoding.js +39 -14
  9. package/dist/{broadcastchannel-1ac6c212.cjs → broadcastchannel-7655b66f.cjs} +9 -8
  10. package/dist/broadcastchannel-7655b66f.cjs.map +1 -0
  11. package/dist/broadcastchannel.cjs +2 -2
  12. package/dist/broadcastchannel.d.ts +4 -4
  13. package/dist/broadcastchannel.d.ts.map +1 -1
  14. package/dist/{buffer-c98f67d5.cjs → buffer-d3ba308b.cjs} +92 -28
  15. package/dist/buffer-d3ba308b.cjs.map +1 -0
  16. package/dist/buffer.cjs +1 -1
  17. package/dist/cache.cjs +3 -0
  18. package/dist/cache.cjs.map +1 -1
  19. package/dist/decoding.cjs +4 -2
  20. package/dist/decoding.cjs.map +1 -1
  21. package/dist/decoding.d.ts +2 -0
  22. package/dist/decoding.d.ts.map +1 -1
  23. package/dist/encoding.cjs +4 -1
  24. package/dist/encoding.cjs.map +1 -1
  25. package/dist/encoding.d.ts +3 -0
  26. package/dist/encoding.d.ts.map +1 -1
  27. package/dist/encoding.test.d.ts +6 -1
  28. package/dist/encoding.test.d.ts.map +1 -1
  29. package/dist/index.cjs +3 -3
  30. package/dist/list.cjs +52 -1
  31. package/dist/list.cjs.map +1 -1
  32. package/dist/list.d.ts +5 -0
  33. package/dist/list.d.ts.map +1 -1
  34. package/dist/list.test.d.ts.map +1 -1
  35. package/dist/number.test.d.ts +1 -0
  36. package/dist/number.test.d.ts.map +1 -1
  37. package/dist/{prng-1aa0a1bc.cjs → prng-76a2f4be.cjs} +3 -3
  38. package/dist/prng-76a2f4be.cjs.map +1 -0
  39. package/dist/prng.cjs +2 -2
  40. package/dist/prng.d.ts +1 -1
  41. package/dist/random.cjs +7 -1
  42. package/dist/random.cjs.map +1 -1
  43. package/dist/random.d.ts +1 -0
  44. package/dist/random.d.ts.map +1 -1
  45. package/dist/random.test.d.ts +1 -0
  46. package/dist/random.test.d.ts.map +1 -1
  47. package/dist/testing.cjs +5 -5
  48. package/dist/testing.cjs.map +1 -1
  49. package/encoding.d.ts +3 -0
  50. package/encoding.d.ts.map +1 -1
  51. package/encoding.js +46 -14
  52. package/encoding.test.d.ts +6 -1
  53. package/encoding.test.d.ts.map +1 -1
  54. package/list.d.ts +5 -0
  55. package/list.d.ts.map +1 -1
  56. package/list.js +46 -1
  57. package/list.test.d.ts.map +1 -1
  58. package/number.test.d.ts +1 -0
  59. package/number.test.d.ts.map +1 -1
  60. package/package.json +2 -2
  61. package/prng.d.ts +1 -1
  62. package/prng.js +1 -1
  63. package/random.d.ts +1 -0
  64. package/random.d.ts.map +1 -1
  65. package/random.js +6 -1
  66. package/random.test.d.ts +1 -0
  67. package/random.test.d.ts.map +1 -1
  68. package/testing.js +3 -3
  69. package/.circleci/config.yml +0 -7
  70. package/dist/broadcastchannel-1ac6c212.cjs.map +0 -1
  71. package/dist/buffer-c98f67d5.cjs.map +0 -1
  72. package/dist/prng-1aa0a1bc.cjs.map +0 -1
  73. package/dist/test.cjs +0 -7604
  74. package/dist/test.cjs.map +0 -1
  75. package/dist/test.d.ts +0 -2
  76. package/dist/test.d.ts.map +0 -1
  77. package/dist/test.js +0 -7631
  78. package/dist/test.js.map +0 -1
@@ -1,4 +1,7 @@
1
1
  export function testGolangBinaryEncodingCompatibility(): void;
2
+ export function testVerifyLen(): void;
3
+ export function testStringEncodingPerformanceNativeVsPolyfill(): void;
4
+ export function testDecodingPerformanceNativeVsPolyfill(): void;
2
5
  export function testStringDecodingPerformance(): void;
3
6
  export function testAnyEncodeUnknowns(tc: t.TestCase): void;
4
7
  export function testAnyEncodeDate(tc: t.TestCase): void;
@@ -6,8 +9,10 @@ export function testEncodeMax32bitUint(tc: t.TestCase): void;
6
9
  export function testVarUintEncoding(tc: t.TestCase): void;
7
10
  export function testVarIntEncoding(tc: t.TestCase): void;
8
11
  export function testRepeatVarUintEncoding(tc: t.TestCase): void;
12
+ export function testRepeatVarUintEncoding53bit(tc: t.TestCase): void;
9
13
  export function testRepeatVarIntEncoding(tc: t.TestCase): void;
10
- export function testRepeatAnyEncoding(tc: t.TestCase): void;
14
+ export function testRepeatVarIntEncoding53bit(tc: t.TestCase): void;
15
+ export function testRepeanntAnyEncoding(tc: t.TestCase): void;
11
16
  export function testRepeatPeekVarUintEncoding(tc: t.TestCase): void;
12
17
  export function testRepeatPeekVarIntEncoding(tc: t.TestCase): void;
13
18
  export function testAnyVsJsonEncoding(tc: t.TestCase): void;
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.test.d.ts","sourceRoot":"","sources":["../encoding.test.js"],"names":[],"mappings":"AA4CO,8DAiCN;AAwCM,sDA6EN;AAKM,0CAFI,EAAE,QAAQ,QAYpB;AAKM,sCAFI,EAAE,QAAQ,QAIpB;AAKM,2CAFI,EAAE,QAAQ,QAIpB;AAKM,wCAFI,EAAE,QAAQ,QAQpB;AAKM,uCAFI,EAAE,QAAQ,QAQpB;AAKM,8CAFI,EAAE,QAAQ,QAKpB;AAKM,6CAFI,EAAE,QAAQ,QAKpB;AAKM,0CAFI,EAAE,QAAQ,QAKpB;AAKM,kDAFI,EAAE,QAAQ,QAKpB;AAKM,iDAFI,EAAE,QAAQ,QAKpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,uCAFI,EAAE,QAAQ,QAWpB;AAKM,6CAFI,EAAE,QAAQ,QAGqB;AAKnC,mCAFI,EAAE,QAAQ,QAkBpB;AAyCM,2CAFI,EAAE,QAAQ,QA6BpB;AAKM,gDAFI,EAAE,QAAQ,QAiBpB;AAKM,sCAFI,EAAE,QAAQ,QAuBpB;AAKM,qCAFI,EAAE,QAAQ,QAcpB;AAKM,2CAFI,EAAE,QAAQ,QAYpB;AAKM,+CAFI,EAAE,QAAQ,QAapB;AAKM,mCAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,oCAFI,EAAE,QAAQ,QAiCpB;AAKM,uCAFI,EAAE,QAAQ,QAYpB;AAKM,sCAFI,EAAE,QAAQ,QAyBpB;AAKM,+CAFI,EAAE,QAAQ,QASpB;;iBAnUsB,SAAS,OAAO,KAAE,GAAG;kBACrB,SAAS,OAAO,QAAC,GAAG,KAAE,IAAI;gBAC1B,KAAK,IAAI,KAAE,GAAG;oBACd,GAAG,QAAC,GAAG,KAAE,OAAO;UACzB,MAAM"}
1
+ {"version":3,"file":"encoding.test.d.ts","sourceRoot":"","sources":["../encoding.test.js"],"names":[],"mappings":"AA6CO,8DAiCN;AAwCM,sCAON;AAEM,sEAyCN;AAEM,gEAkDN;AAEM,sDAiDN;AAKM,0CAFI,EAAE,QAAQ,QAYpB;AAKM,sCAFI,EAAE,QAAQ,QAIpB;AAKM,2CAFI,EAAE,QAAQ,QAIpB;AAKM,wCAFI,EAAE,QAAQ,QASpB;AAKM,uCAFI,EAAE,QAAQ,QAUpB;AAKM,8CAFI,EAAE,QAAQ,QAKpB;AAKM,mDAFI,EAAE,QAAQ,QAKpB;AAKM,6CAFI,EAAE,QAAQ,QAKpB;AAKM,kDAFI,EAAE,QAAQ,QAKpB;AAKM,4CAFI,EAAE,QAAQ,QAKpB;AAKM,kDAFI,EAAE,QAAQ,QAKpB;AAKM,iDAFI,EAAE,QAAQ,QAKpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,uCAFI,EAAE,QAAQ,QAWpB;AAKM,6CAFI,EAAE,QAAQ,QAGqB;AAKnC,mCAFI,EAAE,QAAQ,QAkBpB;AAyCM,2CAFI,EAAE,QAAQ,QA6BpB;AAKM,gDAFI,EAAE,QAAQ,QAiBpB;AAKM,sCAFI,EAAE,QAAQ,QAuBpB;AAKM,qCAFI,EAAE,QAAQ,QAcpB;AAKM,2CAFI,EAAE,QAAQ,QAYpB;AAKM,+CAFI,EAAE,QAAQ,QAapB;AAKM,mCAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,0CAFI,EAAE,QAAQ,QAkBpB;AAKM,oCAFI,EAAE,QAAQ,QAqCpB;AAKM,uCAFI,EAAE,QAAQ,QAYpB;AAKM,sCAFI,EAAE,QAAQ,QAyBpB;AAKM,+CAFI,EAAE,QAAQ,QASpB;;iBAvUsB,SAAS,OAAO,KAAE,GAAG;kBACrB,SAAS,OAAO,QAAC,GAAG,KAAE,IAAI;gBAC1B,KAAK,IAAI,KAAE,GAAG;oBACd,GAAG,QAAC,GAAG,KAAE,OAAO;UACzB,MAAM"}
package/dist/index.cjs CHANGED
@@ -4,8 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var array = require('./array-acefe0f2.cjs');
6
6
  var binary = require('./binary-ac8e39e2.cjs');
7
- var broadcastchannel = require('./broadcastchannel-1ac6c212.cjs');
8
- var encoding = require('./buffer-c98f67d5.cjs');
7
+ var broadcastchannel = require('./broadcastchannel-7655b66f.cjs');
8
+ var encoding = require('./buffer-d3ba308b.cjs');
9
9
  var conditions = require('./conditions-fb475c70.cjs');
10
10
  var diff = require('./diff-2593547b.cjs');
11
11
  var dom = require('./dom-58958c04.cjs');
@@ -23,7 +23,7 @@ var mutex = require('./mutex-63f09c81.cjs');
23
23
  var number = require('./number-e62129bc.cjs');
24
24
  var object = require('./object-dcdd6eed.cjs');
25
25
  var pair = require('./pair-ab022bc3.cjs');
26
- var prng = require('./prng-1aa0a1bc.cjs');
26
+ var prng = require('./prng-76a2f4be.cjs');
27
27
  var promise = require('./promise-1a9fe712.cjs');
28
28
  var set = require('./set-b596ef38.cjs');
29
29
  var sort = require('./sort-b8702761.cjs');
package/dist/list.cjs CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var _function = require('./function-e4045b1d.cjs');
5
6
  var error = require('./error-873c9cbf.cjs');
7
+ require('./array-acefe0f2.cjs');
8
+ require('./object-dcdd6eed.cjs');
6
9
 
7
10
  class ListNode {
8
11
  constructor () {
@@ -30,6 +33,7 @@ class List {
30
33
  * @type {N | null}
31
34
  */
32
35
  this.end = null;
36
+ this.len = 0;
33
37
  }
34
38
  }
35
39
 
@@ -58,7 +62,7 @@ const isEmpty = queue => queue.start === null;
58
62
  * @param {List<N>} queue
59
63
  * @param {N} node
60
64
  */
61
- const removeNode = (queue, node) => {
65
+ const remove = (queue, node) => {
62
66
  const prev = node.prev;
63
67
  const next = node.next;
64
68
  if (prev) {
@@ -71,9 +75,15 @@ const removeNode = (queue, node) => {
71
75
  } else {
72
76
  queue.end = prev;
73
77
  }
78
+ queue.len--;
74
79
  return node
75
80
  };
76
81
 
82
+ /**
83
+ * @deprecated @todo remove in next major release
84
+ */
85
+ const removeNode = remove;
86
+
77
87
  /**
78
88
  * @template {ListNode} N
79
89
  *
@@ -99,6 +109,21 @@ const insertBetween = (queue, left, right, node) => {
99
109
  }
100
110
  node.prev = left;
101
111
  node.next = right;
112
+ queue.len++;
113
+ };
114
+
115
+ /**
116
+ * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.
117
+ *
118
+ * @template {ListNode} N
119
+ *
120
+ * @param {List<N>} queue
121
+ * @param {N} node
122
+ * @param {N} newNode
123
+ */
124
+ const replace = (queue, node, newNode) => {
125
+ insertBetween(queue, node, node.next, newNode);
126
+ remove(queue, node);
102
127
  };
103
128
 
104
129
  /**
@@ -158,9 +183,32 @@ const map = (list, f) => {
158
183
  return arr
159
184
  };
160
185
 
186
+ /**
187
+ * @template {ListNode} N
188
+ *
189
+ * @param {List<N>} list
190
+ */
191
+ const toArray = list => map(list, _function.id);
192
+
193
+ /**
194
+ * @template {ListNode} N
195
+ * @template M
196
+ *
197
+ * @param {List<N>} list
198
+ * @param {function(N):M} f
199
+ */
200
+ const forEach = (list, f) => {
201
+ let n = list.start;
202
+ while (n) {
203
+ f(n);
204
+ n = n.next;
205
+ }
206
+ };
207
+
161
208
  exports.List = List;
162
209
  exports.ListNode = ListNode;
163
210
  exports.create = create;
211
+ exports.forEach = forEach;
164
212
  exports.insertBetween = insertBetween;
165
213
  exports.isEmpty = isEmpty;
166
214
  exports.map = map;
@@ -168,5 +216,8 @@ exports.popEnd = popEnd;
168
216
  exports.popFront = popFront;
169
217
  exports.pushEnd = pushEnd;
170
218
  exports.pushFront = pushFront;
219
+ exports.remove = remove;
171
220
  exports.removeNode = removeNode;
221
+ exports.replace = replace;
222
+ exports.toArray = toArray;
172
223
  //# sourceMappingURL=list.cjs.map
package/dist/list.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"list.cjs","sources":["../list.js"],"sourcesContent":["import * as error from './error.js'\n\nexport class ListNode {\n constructor () {\n /**\n * @type {this|null}\n */\n this.next = null\n /**\n * @type {this|null}\n */\n this.prev = null\n }\n}\n\n/**\n * @template {ListNode} N\n */\nexport class List {\n constructor () {\n /**\n * @type {N | null}\n */\n this.start = null\n /**\n * @type {N | null}\n */\n this.end = null\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @template {ListNode} N\n *\n * @return {List<N>}\n */\nexport const create = () => new List()\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.\n *\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} node\n */\nexport const removeNode = (queue, node) => {\n const prev = node.prev\n const next = node.next\n if (prev) {\n prev.next = next\n } else {\n queue.start = next\n }\n if (next) {\n next.prev = prev\n } else {\n queue.end = prev\n }\n return node\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N| null} left\n * @param {N| null} right\n * @param {N} node\n */\nexport const insertBetween = (queue, left, right, node) => {\n /* istanbul ignore if */\n if (left != null && left.next !== right) {\n throw error.unexpectedCase()\n }\n if (left) {\n left.next = node\n } else {\n queue.start = node\n }\n if (right) {\n right.prev = node\n } else {\n queue.end = node\n }\n node.prev = left\n node.next = right\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushEnd = (queue, n) =>\n insertBetween(queue, queue.end, null, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushFront = (queue, n) =>\n insertBetween(queue, null, queue.start, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popFront = list =>\n list.start ? removeNode(list, list.start) : null\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popEnd = list =>\n list.end ? removeNode(list, list.end) : null\n\n/**\n * @template {ListNode} N\n * @template M\n *\n * @param {List<N>} list\n * @param {function(N):M} f\n * @return {Array<M>}\n */\nexport const map = (list, f) => {\n /**\n * @type {Array<M>}\n */\n const arr = []\n let n = list.start\n while (n) {\n arr.push(f(n))\n n = n.next\n }\n return arr\n}\n"],"names":["error.unexpectedCase"],"mappings":"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"}
1
+ {"version":3,"file":"list.cjs","sources":["../list.js"],"sourcesContent":["import { id } from './function.js'\nimport * as error from './error.js'\n\nexport class ListNode {\n constructor () {\n /**\n * @type {this|null}\n */\n this.next = null\n /**\n * @type {this|null}\n */\n this.prev = null\n }\n}\n\n/**\n * @template {ListNode} N\n */\nexport class List {\n constructor () {\n /**\n * @type {N | null}\n */\n this.start = null\n /**\n * @type {N | null}\n */\n this.end = null\n this.len = 0\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @template {ListNode} N\n *\n * @return {List<N>}\n */\nexport const create = () => new List()\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.\n *\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} node\n */\nexport const remove = (queue, node) => {\n const prev = node.prev\n const next = node.next\n if (prev) {\n prev.next = next\n } else {\n queue.start = next\n }\n if (next) {\n next.prev = prev\n } else {\n queue.end = prev\n }\n queue.len--\n return node\n}\n\n/**\n * @deprecated @todo remove in next major release\n */\nexport const removeNode = remove\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N| null} left\n * @param {N| null} right\n * @param {N} node\n */\nexport const insertBetween = (queue, left, right, node) => {\n /* istanbul ignore if */\n if (left != null && left.next !== right) {\n throw error.unexpectedCase()\n }\n if (left) {\n left.next = node\n } else {\n queue.start = node\n }\n if (right) {\n right.prev = node\n } else {\n queue.end = node\n }\n node.prev = left\n node.next = right\n queue.len++\n}\n\n/**\n * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.\n *\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} node\n * @param {N} newNode\n */\nexport const replace = (queue, node, newNode) => {\n insertBetween(queue, node, node.next, newNode)\n remove(queue, node)\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushEnd = (queue, n) =>\n insertBetween(queue, queue.end, null, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushFront = (queue, n) =>\n insertBetween(queue, null, queue.start, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popFront = list =>\n list.start ? removeNode(list, list.start) : null\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popEnd = list =>\n list.end ? removeNode(list, list.end) : null\n\n/**\n * @template {ListNode} N\n * @template M\n *\n * @param {List<N>} list\n * @param {function(N):M} f\n * @return {Array<M>}\n */\nexport const map = (list, f) => {\n /**\n * @type {Array<M>}\n */\n const arr = []\n let n = list.start\n while (n) {\n arr.push(f(n))\n n = n.next\n }\n return arr\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n */\nexport const toArray = list => map(list, id)\n\n/**\n * @template {ListNode} N\n * @template M\n *\n * @param {List<N>} list\n * @param {function(N):M} f\n */\nexport const forEach = (list, f) => {\n let n = list.start\n while (n) {\n f(n)\n n = n.next\n }\n}\n"],"names":["error.unexpectedCase","id"],"mappings":"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"}
package/dist/list.d.ts CHANGED
@@ -20,14 +20,19 @@ export class List<N extends ListNode> {
20
20
  * @type {N | null}
21
21
  */
22
22
  end: N | null;
23
+ len: number;
23
24
  }
24
25
  export function create<N extends ListNode>(): List<N>;
25
26
  export function isEmpty<N extends ListNode>(queue: List<N>): boolean;
27
+ export function remove<N extends ListNode>(queue: List<N>, node: N): N;
26
28
  export function removeNode<N extends ListNode>(queue: List<N>, node: N): N;
27
29
  export function insertBetween<N extends ListNode>(queue: List<N>, left: N | null, right: N | null, node: N): void;
30
+ export function replace<N extends ListNode>(queue: List<N>, node: N, newNode: N): void;
28
31
  export function pushEnd<N extends ListNode>(queue: List<N>, n: N): void;
29
32
  export function pushFront<N extends ListNode>(queue: List<N>, n: N): void;
30
33
  export function popFront<N extends ListNode>(list: List<N>): N | null;
31
34
  export function popEnd<N extends ListNode>(list: List<N>): N | null;
32
35
  export function map<N extends ListNode, M>(list: List<N>, f: (arg0: N) => M): M[];
36
+ export function toArray<N extends ListNode>(list: List<N>): N[];
37
+ export function forEach<N extends ListNode, M>(list: List<N>, f: (arg0: N) => M): void;
33
38
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../list.js"],"names":[],"mappings":"AAEA;IAEI;;OAEG;IACH,sBAAgB;IAChB;;OAEG;IACH,sBAAgB;CAEnB;AAED;;GAEG;AACH;IAEI;;OAEG;IACH,OAFU,CAAC,GAAG,IAAI,CAED;IACjB;;OAEG;IACH,KAFU,CAAC,GAAG,IAAI,CAEH;CAElB;AAUM,sDAA+B;AAO/B,qEAA6C;AAU7C,2EAcN;AAUM,kHAiBN;AAQM,wEACmC;AAQnC,0EACqC;AAQrC,sEAC2C;AAQ3C,oEACuC;AAUvC,kFAWN"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../list.js"],"names":[],"mappings":"AAGA;IAEI;;OAEG;IACH,sBAAgB;IAChB;;OAEG;IACH,sBAAgB;CAEnB;AAED;;GAEG;AACH;IAEI;;OAEG;IACH,OAFU,CAAC,GAAG,IAAI,CAED;IACjB;;OAEG;IACH,KAFU,CAAC,GAAG,IAAI,CAEH;IACf,YAAY;CAEf;AAUM,sDAA+B;AAO/B,qEAA6C;AAU7C,uEAeN;AAfM,2EAeN;AAeM,kHAkBN;AAWM,uFAGN;AAQM,wEACmC;AAQnC,0EACqC;AAQrC,sEAC2C;AAQ3C,oEACuC;AAUvC,kFAWN;AAOM,gEAAqC;AASrC,uFAMN"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../list.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,QA8BpB;AAKM,qCAFI,EAAE,QAAQ,QAkBpB"}
1
+ {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../list.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,QA8BpB;AAKM,qCAFI,EAAE,QAAQ,QA0BpB"}
@@ -1,3 +1,4 @@
1
1
  export function testNumber(tc: t.TestCase): void;
2
+ export function testShiftVsDivision(tc: t.TestCase): void;
2
3
  import * as t from "./testing.js";
3
4
  //# sourceMappingURL=number.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.test.d.ts","sourceRoot":"","sources":["../number.test.js"],"names":[],"mappings":"AAMO,+BAFI,EAAE,QAAQ,QAcpB"}
1
+ {"version":3,"file":"number.test.d.ts","sourceRoot":"","sources":["../number.test.js"],"names":[],"mappings":"AAQO,+BAFI,EAAE,QAAQ,QAcpB;AAOM,wCAFI,EAAE,QAAQ,QA6DpB"}
@@ -3,7 +3,7 @@
3
3
  var binary = require('./binary-ac8e39e2.cjs');
4
4
  var string = require('./string-ad04f734.cjs');
5
5
  var math = require('./math-08e068f9.cjs');
6
- var encoding = require('./buffer-c98f67d5.cjs');
6
+ var encoding = require('./buffer-d3ba308b.cjs');
7
7
 
8
8
  /**
9
9
  * @module prng
@@ -160,7 +160,7 @@ int main(void)
160
160
  /**
161
161
  * Description of the function
162
162
  * @callback generatorNext
163
- * @return {number} A 32bit integer
163
+ * @return {number} A random float in the cange of [0,1)
164
164
  */
165
165
 
166
166
  /**
@@ -383,4 +383,4 @@ exports.uint8Array = uint8Array;
383
383
  exports.utf16Rune = utf16Rune;
384
384
  exports.utf16String = utf16String;
385
385
  exports.word = word;
386
- //# sourceMappingURL=prng-1aa0a1bc.cjs.map
386
+ //# sourceMappingURL=prng-76a2f4be.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prng-76a2f4be.cjs","sources":["../prng/Xorshift32.js","../prng/Xoroshiro128plus.js","../prng.js"],"sourcesContent":["/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\n\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n"],"names":["binary.BITS32","math.floor","math.abs","fromCharCode","fromCodePoint","buffer.createUint8ArrayFromLen","binary.BITS8"],"mappings":"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"}
package/dist/prng.cjs CHANGED
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('./binary-ac8e39e2.cjs');
6
6
  require('./string-ad04f734.cjs');
7
7
  require('./math-08e068f9.cjs');
8
- var prng = require('./prng-1aa0a1bc.cjs');
9
- require('./buffer-c98f67d5.cjs');
8
+ var prng = require('./prng-76a2f4be.cjs');
9
+ require('./buffer-d3ba308b.cjs');
10
10
  require('./environment-60b83194.cjs');
11
11
  require('./map-28a001c9.cjs');
12
12
  require('./conditions-fb475c70.cjs');
package/dist/prng.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Description of the function
3
3
  * @callback generatorNext
4
- * @return {number} A 32bit integer
4
+ * @return {number} A random float in the cange of [0,1)
5
5
  */
6
6
  /**
7
7
  * A random type generator.
package/dist/random.cjs CHANGED
@@ -3,13 +3,18 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var math = require('./math-08e068f9.cjs');
6
+ var binary = require('./binary-ac8e39e2.cjs');
6
7
  var isomorphic_js = require('isomorphic.js');
7
8
 
8
9
  const rand = Math.random;
9
10
 
10
- /* istanbul ignore next */
11
11
  const uint32 = () => new Uint32Array(isomorphic_js.cryptoRandomBuffer(4))[0];
12
12
 
13
+ const uint53 = () => {
14
+ const arr = new Uint32Array(isomorphic_js.cryptoRandomBuffer(8));
15
+ return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)
16
+ };
17
+
13
18
  /**
14
19
  * @template T
15
20
  * @param {Array<T>} arr
@@ -26,5 +31,6 @@ const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c
26
31
  exports.oneOf = oneOf;
27
32
  exports.rand = rand;
28
33
  exports.uint32 = uint32;
34
+ exports.uint53 = uint53;
29
35
  exports.uuidv4 = uuidv4;
30
36
  //# sourceMappingURL=random.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.cjs","sources":["../random.js"],"sourcesContent":["\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\n/* istanbul ignore next */\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n"],"names":["cryptoRandomBuffer","math.floor"],"mappings":";;;;;;;AAYY,MAAC,IAAI,GAAG,IAAI,CAAC,OAAM;AAC/B;AACA;AACY,MAAC,MAAM,GAAG,MAAM,IAAI,WAAW,CAACA,gCAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,GAAG,IAAI,GAAG,CAACC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAC;AAChE;AACA;AACA,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,KAAI;AAC7C,MAAC,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,2BAA2B,CAAC;AACvF,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC3C;;;;;;;"}
1
+ {"version":3,"file":"random.cjs","sources":["../random.js"],"sourcesContent":["\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { cryptoRandomBuffer } from './isomorphic.js'\n\nexport const rand = Math.random\n\nexport const uint32 = () => new Uint32Array(cryptoRandomBuffer(4))[0]\n\nexport const uint53 = () => {\n const arr = new Uint32Array(cryptoRandomBuffer(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n"],"names":["cryptoRandomBuffer","binary.BITS21","binary.BITS32","math.floor"],"mappings":";;;;;;;;AAaY,MAAC,IAAI,GAAG,IAAI,CAAC,OAAM;AAC/B;AACY,MAAC,MAAM,GAAG,MAAM,IAAI,WAAW,CAACA,gCAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;AACrE;AACY,MAAC,MAAM,GAAG,MAAM;AAC5B,EAAE,MAAM,GAAG,GAAG,IAAI,WAAW,CAACA,gCAAkB,CAAC,CAAC,CAAC,EAAC;AACpD,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAGC,aAAa,KAAKC,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACxE,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,GAAG,IAAI,GAAG,CAACC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAC;AAChE;AACA;AACA,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,KAAI;AAC7C,MAAC,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,2BAA2B,CAAC;AACvF,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC3C;;;;;;;;"}
package/dist/random.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export const rand: () => number;
2
2
  export function uint32(): number;
3
+ export function uint53(): number;
3
4
  export function oneOf<T>(arr: T[]): T;
4
5
  export function uuidv4(): any;
5
6
  //# sourceMappingURL=random.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../random.js"],"names":[],"mappings":"AAYA,gCAA+B;AAGxB,iCAA8D;AAO9D,sCAAyD;AAIzD,8BAEN"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../random.js"],"names":[],"mappings":"AAaA,gCAA+B;AAExB,iCAA8D;AAE9D,iCAGN;AAOM,sCAAyD;AAIzD,8BAEN"}
@@ -1,4 +1,5 @@
1
1
  export function testUint32(tc: t.TestCase): void;
2
+ export function testUint53(tc: t.TestCase): void;
2
3
  export function testUuidv4(tc: t.TestCase): void;
3
4
  export function testUuidv4Overlaps(tc: t.TestCase): void;
4
5
  import * as t from "./testing.js";
@@ -1 +1 @@
1
- {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,EAAE,QAAQ,QA0BpB;AAKM,+BAFI,EAAE,QAAQ,QAIpB;AAKM,uCAFI,EAAE,QAAQ,QAkBpB"}
1
+ {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../random.test.js"],"names":[],"mappings":"AASO,+BAFI,EAAE,QAAQ,QA0BpB;AAKM,+BAFI,EAAE,QAAQ,QAyBpB;AAKM,+BAFI,EAAE,QAAQ,QAIpB;AAKM,uCAFI,EAAE,QAAQ,QAkBpB"}
package/dist/testing.cjs CHANGED
@@ -8,7 +8,7 @@ var object = require('./object-dcdd6eed.cjs');
8
8
  var string = require('./string-ad04f734.cjs');
9
9
  var math = require('./math-08e068f9.cjs');
10
10
  var random = require('./random.cjs');
11
- var prng = require('./prng-1aa0a1bc.cjs');
11
+ var prng = require('./prng-76a2f4be.cjs');
12
12
  var statistics = require('./statistics-c2316dca.cjs');
13
13
  var array = require('./array-acefe0f2.cjs');
14
14
  var environment = require('./environment-60b83194.cjs');
@@ -23,7 +23,7 @@ require('./map-28a001c9.cjs');
23
23
  require('./eventloop-c60b5658.cjs');
24
24
  require('./function-e4045b1d.cjs');
25
25
  require('./binary-ac8e39e2.cjs');
26
- require('./buffer-c98f67d5.cjs');
26
+ require('./buffer-d3ba308b.cjs');
27
27
  require('./number-e62129bc.cjs');
28
28
  require('./conditions-fb475c70.cjs');
29
29
  require('./storage.cjs');
@@ -34,8 +34,8 @@ require('./metric.cjs');
34
34
  *
35
35
  * ```js
36
36
  * // test.js template for creating a test executable
37
- * import { runTests } from 'lib0/testing.js'
38
- * import * as log from 'lib0/logging.js'
37
+ * import { runTests } from 'lib0/testing'
38
+ * import * as log from 'lib0/logging'
39
39
  * import * as mod1 from './mod1.test.js'
40
40
  * import * as mod2 from './mod2.test.js'
41
41
 
@@ -199,7 +199,7 @@ const run = async (moduleName, name, f, i, numberOfTests) => {
199
199
  times.sort((a, b) => a - b);
200
200
  /* istanbul ignore next */
201
201
  const againMessage = environment.isBrowser
202
- ? ` - ${window.location.href}?filter=\\[${i + 1}/${tc._seed === null ? '' : `&seed=${tc._seed}`}`
202
+ ? ` - ${window.location.host + window.location.pathname}?filter=\\[${i + 1}/${tc._seed === null ? '' : `&seed=${tc._seed}`}`
203
203
  : `\nrepeat: npm run test -- --filter "\\[${i + 1}/" ${tc._seed === null ? '' : `--seed ${tc._seed}`}`;
204
204
  const timeInfo = (repeat && err === null)
205
205
  ? ` - ${times.length} repetitions in ${time.humanizeDuration(duration)} (best: ${time.humanizeDuration(times[0])}, worst: ${time.humanizeDuration(array.last(times))}, median: ${time.humanizeDuration(statistics.median(times))}, average: ${time.humanizeDuration(statistics.average(times))})`