@qrkit/bc-ur 2.0.0-beta.9-qrkit.1

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 (229) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +996 -0
  3. package/dist/commonjs/classes/FountainDecoder.d.ts +125 -0
  4. package/dist/commonjs/classes/FountainDecoder.js +453 -0
  5. package/dist/commonjs/classes/FountainDecoder.js.map +1 -0
  6. package/dist/commonjs/classes/FountainEncoder.d.ts +63 -0
  7. package/dist/commonjs/classes/FountainEncoder.js +168 -0
  8. package/dist/commonjs/classes/FountainEncoder.js.map +1 -0
  9. package/dist/commonjs/classes/RegistryItem.d.ts +104 -0
  10. package/dist/commonjs/classes/RegistryItem.js +172 -0
  11. package/dist/commonjs/classes/RegistryItem.js.map +1 -0
  12. package/dist/commonjs/classes/UR.d.ts +89 -0
  13. package/dist/commonjs/classes/UR.js +243 -0
  14. package/dist/commonjs/classes/UR.js.map +1 -0
  15. package/dist/commonjs/classes/UrFountainDecoder.d.ts +15 -0
  16. package/dist/commonjs/classes/UrFountainDecoder.js +127 -0
  17. package/dist/commonjs/classes/UrFountainDecoder.js.map +1 -0
  18. package/dist/commonjs/classes/UrFountainEncoder.d.ts +42 -0
  19. package/dist/commonjs/classes/UrFountainEncoder.js +92 -0
  20. package/dist/commonjs/classes/UrFountainEncoder.js.map +1 -0
  21. package/dist/commonjs/classes/key.helper.d.ts +27 -0
  22. package/dist/commonjs/classes/key.helper.js +70 -0
  23. package/dist/commonjs/classes/key.helper.js.map +1 -0
  24. package/dist/commonjs/encodingMethods/BytewordEncoding.d.ts +11 -0
  25. package/dist/commonjs/encodingMethods/BytewordEncoding.js +23 -0
  26. package/dist/commonjs/encodingMethods/BytewordEncoding.js.map +1 -0
  27. package/dist/commonjs/encodingMethods/CborEncoding.d.ts +44 -0
  28. package/dist/commonjs/encodingMethods/CborEncoding.js +151 -0
  29. package/dist/commonjs/encodingMethods/CborEncoding.js.map +1 -0
  30. package/dist/commonjs/encodingMethods/HexEncoding.d.ts +8 -0
  31. package/dist/commonjs/encodingMethods/HexEncoding.js +24 -0
  32. package/dist/commonjs/encodingMethods/HexEncoding.js.map +1 -0
  33. package/dist/commonjs/encodingMethods/UrEncoding.d.ts +10 -0
  34. package/dist/commonjs/encodingMethods/UrEncoding.js +19 -0
  35. package/dist/commonjs/encodingMethods/UrEncoding.js.map +1 -0
  36. package/dist/commonjs/encodingMethods/bytewords.d.ts +27 -0
  37. package/dist/commonjs/encodingMethods/bytewords.js +152 -0
  38. package/dist/commonjs/encodingMethods/bytewords.js.map +1 -0
  39. package/dist/commonjs/encodingMethods/index.d.ts +19 -0
  40. package/dist/commonjs/encodingMethods/index.js +27 -0
  41. package/dist/commonjs/encodingMethods/index.js.map +1 -0
  42. package/dist/commonjs/encodingMethods/pipeline.d.ts +19 -0
  43. package/dist/commonjs/encodingMethods/pipeline.js +80 -0
  44. package/dist/commonjs/encodingMethods/pipeline.js.map +1 -0
  45. package/dist/commonjs/enums/EncodingMethodName.d.ts +10 -0
  46. package/dist/commonjs/enums/EncodingMethodName.js +15 -0
  47. package/dist/commonjs/enums/EncodingMethodName.js.map +1 -0
  48. package/dist/commonjs/errors.d.ts +15 -0
  49. package/dist/commonjs/errors.js +39 -0
  50. package/dist/commonjs/errors.js.map +1 -0
  51. package/dist/commonjs/helpers/aliasSampling.d.ts +6 -0
  52. package/dist/commonjs/helpers/aliasSampling.js +73 -0
  53. package/dist/commonjs/helpers/aliasSampling.js.map +1 -0
  54. package/dist/commonjs/helpers/crc32.d.ts +1 -0
  55. package/dist/commonjs/helpers/crc32.js +19 -0
  56. package/dist/commonjs/helpers/crc32.js.map +1 -0
  57. package/dist/commonjs/helpers/fountainUtils.d.ts +40 -0
  58. package/dist/commonjs/helpers/fountainUtils.js +124 -0
  59. package/dist/commonjs/helpers/fountainUtils.js.map +1 -0
  60. package/dist/commonjs/helpers/sha256.d.ts +1 -0
  61. package/dist/commonjs/helpers/sha256.js +78 -0
  62. package/dist/commonjs/helpers/sha256.js.map +1 -0
  63. package/dist/commonjs/helpers/type.helper.d.ts +3 -0
  64. package/dist/commonjs/helpers/type.helper.js +3 -0
  65. package/dist/commonjs/helpers/type.helper.js.map +1 -0
  66. package/dist/commonjs/helpers/uintArrayHelper.d.ts +287 -0
  67. package/dist/commonjs/helpers/uintArrayHelper.js +545 -0
  68. package/dist/commonjs/helpers/uintArrayHelper.js.map +1 -0
  69. package/dist/commonjs/helpers/utils.d.ts +55 -0
  70. package/dist/commonjs/helpers/utils.js +123 -0
  71. package/dist/commonjs/helpers/utils.js.map +1 -0
  72. package/dist/commonjs/index-react-native.d.ts +9 -0
  73. package/dist/commonjs/index-react-native.js +15 -0
  74. package/dist/commonjs/index-react-native.js.map +1 -0
  75. package/dist/commonjs/index.d.ts +21 -0
  76. package/dist/commonjs/index.js +34 -0
  77. package/dist/commonjs/index.js.map +1 -0
  78. package/dist/commonjs/interfaces/IEncodingMethod.d.ts +9 -0
  79. package/dist/commonjs/interfaces/IEncodingMethod.js +3 -0
  80. package/dist/commonjs/interfaces/IEncodingMethod.js.map +1 -0
  81. package/dist/commonjs/package.json +3 -0
  82. package/dist/commonjs/registry.d.ts +26 -0
  83. package/dist/commonjs/registry.js +118 -0
  84. package/dist/commonjs/registry.js.map +1 -0
  85. package/dist/commonjs/test.utils.d.ts +31 -0
  86. package/dist/commonjs/test.utils.js +88 -0
  87. package/dist/commonjs/test.utils.js.map +1 -0
  88. package/dist/commonjs/wrappers/cbor2-cjs.cjs.map +1 -0
  89. package/dist/commonjs/wrappers/cbor2.d.ts +2 -0
  90. package/dist/commonjs/wrappers/cbor2.js +14 -0
  91. package/dist/commonjs/wrappers/cbor2Wrapper.d.ts +14 -0
  92. package/dist/commonjs/wrappers/cbor2Wrapper.js +49 -0
  93. package/dist/commonjs/wrappers/cbor2Wrapper.js.map +1 -0
  94. package/dist/commonjs/xoshiro.d.ts +12 -0
  95. package/dist/commonjs/xoshiro.js +52 -0
  96. package/dist/commonjs/xoshiro.js.map +1 -0
  97. package/dist/esm/classes/FountainDecoder.d.ts +125 -0
  98. package/dist/esm/classes/FountainDecoder.js +447 -0
  99. package/dist/esm/classes/FountainDecoder.js.map +1 -0
  100. package/dist/esm/classes/FountainEncoder.d.ts +63 -0
  101. package/dist/esm/classes/FountainEncoder.js +164 -0
  102. package/dist/esm/classes/FountainEncoder.js.map +1 -0
  103. package/dist/esm/classes/RegistryItem.d.ts +104 -0
  104. package/dist/esm/classes/RegistryItem.js +166 -0
  105. package/dist/esm/classes/RegistryItem.js.map +1 -0
  106. package/dist/esm/classes/UR.d.ts +89 -0
  107. package/dist/esm/classes/UR.js +239 -0
  108. package/dist/esm/classes/UR.js.map +1 -0
  109. package/dist/esm/classes/UrFountainDecoder.d.ts +15 -0
  110. package/dist/esm/classes/UrFountainDecoder.js +123 -0
  111. package/dist/esm/classes/UrFountainDecoder.js.map +1 -0
  112. package/dist/esm/classes/UrFountainEncoder.d.ts +42 -0
  113. package/dist/esm/classes/UrFountainEncoder.js +88 -0
  114. package/dist/esm/classes/UrFountainEncoder.js.map +1 -0
  115. package/dist/esm/classes/key.helper.d.ts +27 -0
  116. package/dist/esm/classes/key.helper.js +66 -0
  117. package/dist/esm/classes/key.helper.js.map +1 -0
  118. package/dist/esm/encodingMethods/BytewordEncoding.d.ts +11 -0
  119. package/dist/esm/encodingMethods/BytewordEncoding.js +19 -0
  120. package/dist/esm/encodingMethods/BytewordEncoding.js.map +1 -0
  121. package/dist/esm/encodingMethods/CborEncoding.d.ts +44 -0
  122. package/dist/esm/encodingMethods/CborEncoding.js +147 -0
  123. package/dist/esm/encodingMethods/CborEncoding.js.map +1 -0
  124. package/dist/esm/encodingMethods/HexEncoding.d.ts +8 -0
  125. package/dist/esm/encodingMethods/HexEncoding.js +20 -0
  126. package/dist/esm/encodingMethods/HexEncoding.js.map +1 -0
  127. package/dist/esm/encodingMethods/UrEncoding.d.ts +10 -0
  128. package/dist/esm/encodingMethods/UrEncoding.js +15 -0
  129. package/dist/esm/encodingMethods/UrEncoding.js.map +1 -0
  130. package/dist/esm/encodingMethods/bytewords.d.ts +27 -0
  131. package/dist/esm/encodingMethods/bytewords.js +147 -0
  132. package/dist/esm/encodingMethods/bytewords.js.map +1 -0
  133. package/dist/esm/encodingMethods/index.d.ts +19 -0
  134. package/dist/esm/encodingMethods/index.js +24 -0
  135. package/dist/esm/encodingMethods/index.js.map +1 -0
  136. package/dist/esm/encodingMethods/pipeline.d.ts +19 -0
  137. package/dist/esm/encodingMethods/pipeline.js +76 -0
  138. package/dist/esm/encodingMethods/pipeline.js.map +1 -0
  139. package/dist/esm/enums/EncodingMethodName.d.ts +10 -0
  140. package/dist/esm/enums/EncodingMethodName.js +12 -0
  141. package/dist/esm/enums/EncodingMethodName.js.map +1 -0
  142. package/dist/esm/errors.d.ts +15 -0
  143. package/dist/esm/errors.js +31 -0
  144. package/dist/esm/errors.js.map +1 -0
  145. package/dist/esm/helpers/aliasSampling.d.ts +6 -0
  146. package/dist/esm/helpers/aliasSampling.js +70 -0
  147. package/dist/esm/helpers/aliasSampling.js.map +1 -0
  148. package/dist/esm/helpers/crc32.d.ts +1 -0
  149. package/dist/esm/helpers/crc32.js +16 -0
  150. package/dist/esm/helpers/crc32.js.map +1 -0
  151. package/dist/esm/helpers/fountainUtils.d.ts +40 -0
  152. package/dist/esm/helpers/fountainUtils.js +114 -0
  153. package/dist/esm/helpers/fountainUtils.js.map +1 -0
  154. package/dist/esm/helpers/sha256.d.ts +1 -0
  155. package/dist/esm/helpers/sha256.js +75 -0
  156. package/dist/esm/helpers/sha256.js.map +1 -0
  157. package/dist/esm/helpers/type.helper.d.ts +3 -0
  158. package/dist/esm/helpers/type.helper.js +2 -0
  159. package/dist/esm/helpers/type.helper.js.map +1 -0
  160. package/dist/esm/helpers/uintArrayHelper.d.ts +287 -0
  161. package/dist/esm/helpers/uintArrayHelper.js +526 -0
  162. package/dist/esm/helpers/uintArrayHelper.js.map +1 -0
  163. package/dist/esm/helpers/utils.d.ts +55 -0
  164. package/dist/esm/helpers/utils.js +102 -0
  165. package/dist/esm/helpers/utils.js.map +1 -0
  166. package/dist/esm/index-react-native.d.ts +9 -0
  167. package/dist/esm/index-react-native.js +12 -0
  168. package/dist/esm/index-react-native.js.map +1 -0
  169. package/dist/esm/index.d.ts +21 -0
  170. package/dist/esm/index.js +16 -0
  171. package/dist/esm/index.js.map +1 -0
  172. package/dist/esm/interfaces/IEncodingMethod.d.ts +9 -0
  173. package/dist/esm/interfaces/IEncodingMethod.js +2 -0
  174. package/dist/esm/interfaces/IEncodingMethod.js.map +1 -0
  175. package/dist/esm/package.json +3 -0
  176. package/dist/esm/registry.d.ts +26 -0
  177. package/dist/esm/registry.js +114 -0
  178. package/dist/esm/registry.js.map +1 -0
  179. package/dist/esm/test.utils.d.ts +31 -0
  180. package/dist/esm/test.utils.js +83 -0
  181. package/dist/esm/test.utils.js.map +1 -0
  182. package/dist/esm/wrappers/cbor2-deno.d.mts +2 -0
  183. package/dist/esm/wrappers/cbor2-deno.mjs +5 -0
  184. package/dist/esm/wrappers/cbor2-deno.mjs.map +1 -0
  185. package/dist/esm/wrappers/cbor2.d.ts +2 -0
  186. package/dist/esm/wrappers/cbor2.js +5 -0
  187. package/dist/esm/wrappers/cbor2.js.map +1 -0
  188. package/dist/esm/wrappers/cbor2Wrapper.d.ts +5 -0
  189. package/dist/esm/wrappers/cbor2Wrapper.js +6 -0
  190. package/dist/esm/wrappers/cbor2Wrapper.js.map +1 -0
  191. package/dist/esm/xoshiro.d.ts +12 -0
  192. package/dist/esm/xoshiro.js +47 -0
  193. package/dist/esm/xoshiro.js.map +1 -0
  194. package/dist/web/bytewords.js +335 -0
  195. package/index.html +98 -0
  196. package/package.json +94 -0
  197. package/src/classes/FountainDecoder.ts +539 -0
  198. package/src/classes/FountainEncoder.ts +211 -0
  199. package/src/classes/RegistryItem.ts +240 -0
  200. package/src/classes/UR.ts +308 -0
  201. package/src/classes/UrFountainDecoder.ts +142 -0
  202. package/src/classes/UrFountainEncoder.ts +103 -0
  203. package/src/classes/key.helper.ts +85 -0
  204. package/src/encodingMethods/BytewordEncoding.ts +23 -0
  205. package/src/encodingMethods/CborEncoding.ts +196 -0
  206. package/src/encodingMethods/HexEncoding.ts +23 -0
  207. package/src/encodingMethods/UrEncoding.ts +19 -0
  208. package/src/encodingMethods/bytewords.ts +215 -0
  209. package/src/encodingMethods/index.ts +26 -0
  210. package/src/encodingMethods/pipeline.ts +103 -0
  211. package/src/enums/EncodingMethodName.ts +10 -0
  212. package/src/errors.ts +34 -0
  213. package/src/helpers/aliasSampling.ts +87 -0
  214. package/src/helpers/crc32.ts +19 -0
  215. package/src/helpers/fountainUtils.ts +157 -0
  216. package/src/helpers/sha256.ts +88 -0
  217. package/src/helpers/type.helper.ts +1 -0
  218. package/src/helpers/uintArrayHelper.ts +611 -0
  219. package/src/helpers/utils.ts +135 -0
  220. package/src/index-react-native.ts +12 -0
  221. package/src/index.ts +44 -0
  222. package/src/interfaces/IEncodingMethod.ts +10 -0
  223. package/src/registry.ts +146 -0
  224. package/src/test.utils.ts +105 -0
  225. package/src/wrappers/cbor2-cjs.cts +6 -0
  226. package/src/wrappers/cbor2-deno.mts +6 -0
  227. package/src/wrappers/cbor2.ts +7 -0
  228. package/src/wrappers/cbor2Wrapper.ts +14 -0
  229. package/src/xoshiro.ts +66 -0
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+ // Taken from uint8array-extras "^1.4.0" package
3
+ // https://github.com/sindresorhus/uint8array-extras
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.isUint8Array = isUint8Array;
6
+ exports.assertUint8Array = assertUint8Array;
7
+ exports.toUint8Array = toUint8Array;
8
+ exports.concatUint8Arrays = concatUint8Arrays;
9
+ exports.areUint8ArraysEqual = areUint8ArraysEqual;
10
+ exports.compareUint8Arrays = compareUint8Arrays;
11
+ exports.uint8ArrayToString = uint8ArrayToString;
12
+ exports.stringToUint8Array = stringToUint8Array;
13
+ exports.uint8ArrayToBase64 = uint8ArrayToBase64;
14
+ exports.base64ToUint8Array = base64ToUint8Array;
15
+ exports.stringToBase64 = stringToBase64;
16
+ exports.base64ToString = base64ToString;
17
+ exports.uint8ArrayToHex = uint8ArrayToHex;
18
+ exports.hexToUint8Array = hexToUint8Array;
19
+ exports.getUintBE = getUintBE;
20
+ exports.indexOf = indexOf;
21
+ exports.includes = includes;
22
+ const objectToString = Object.prototype.toString;
23
+ const uint8ArrayStringified = '[object Uint8Array]';
24
+ const arrayBufferStringified = '[object ArrayBuffer]';
25
+ function isType(value, typeConstructor, typeStringified) {
26
+ if (!value) {
27
+ return false;
28
+ }
29
+ if (value.constructor === typeConstructor) {
30
+ return true;
31
+ }
32
+ return objectToString.call(value) === typeStringified;
33
+ }
34
+ /**
35
+ Check if the given value is an instance of `Uint8Array`.
36
+
37
+ Replacement for [`Buffer.isBuffer()`](https://nodejs.org/api/buffer.html#static-method-bufferisbufferobj).
38
+
39
+ @example
40
+ ```
41
+ import {isUint8Array} from 'uint8array-extras';
42
+
43
+ console.log(isUint8Array(new Uint8Array()));
44
+ //=> true
45
+
46
+ console.log(isUint8Array(Buffer.from('x')));
47
+ //=> true
48
+
49
+ console.log(isUint8Array(new ArrayBuffer(10)));
50
+ //=> false
51
+ ```
52
+ */
53
+ function isUint8Array(value) {
54
+ return isType(value, Uint8Array, uint8ArrayStringified);
55
+ }
56
+ function isArrayBuffer(value) {
57
+ return isType(value, ArrayBuffer, arrayBufferStringified);
58
+ }
59
+ function isUint8ArrayOrArrayBuffer(value) {
60
+ return isUint8Array(value) || isArrayBuffer(value);
61
+ }
62
+ /**
63
+ Throw a `TypeError` if the given value is not an instance of `Uint8Array`.
64
+
65
+ @example
66
+ ```
67
+ import {assertUint8Array} from 'uint8array-extras';
68
+
69
+ try {
70
+ assertUint8Array(new ArrayBuffer(10)); // Throws a TypeError
71
+ } catch (error) {
72
+ console.error(error.message);
73
+ }
74
+ ```
75
+ */
76
+ function assertUint8Array(value) {
77
+ if (!isUint8Array(value)) {
78
+ throw new TypeError(`Expected \`Uint8Array\`, got \`${typeof value}\``);
79
+ }
80
+ }
81
+ function assertUint8ArrayOrArrayBuffer(value) {
82
+ if (!isUint8ArrayOrArrayBuffer(value)) {
83
+ throw new TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof value}\``);
84
+ }
85
+ }
86
+ /**
87
+ Convert a value to a `Uint8Array` without copying its data.
88
+
89
+ This can be useful for converting a `Buffer` to a pure `Uint8Array`. `Buffer` is already an `Uint8Array` subclass, but [`Buffer` alters some behavior](https://sindresorhus.com/blog/goodbye-nodejs-buffer), so it can be useful to cast it to a pure `Uint8Array` before returning it.
90
+
91
+ Tip: If you want a copy, just call `.slice()` on the return value.
92
+ */
93
+ function toUint8Array(value) {
94
+ if (value instanceof ArrayBuffer) {
95
+ return new Uint8Array(value);
96
+ }
97
+ if (ArrayBuffer.isView(value)) {
98
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
99
+ }
100
+ throw new TypeError(`Unsupported value, got \`${typeof value}\`.`);
101
+ }
102
+ /**
103
+ Concatenate the given arrays into a new array.
104
+
105
+ If `arrays` is empty, it will return a zero-sized `Uint8Array`.
106
+
107
+ If `totalLength` is not specified, it is calculated from summing the lengths of the given arrays.
108
+
109
+ Replacement for [`Buffer.concat()`](https://nodejs.org/api/buffer.html#static-method-bufferconcatlist-totallength).
110
+
111
+ @example
112
+ ```
113
+ import {concatUint8Arrays} from 'uint8array-extras';
114
+
115
+ const a = new Uint8Array([1, 2, 3]);
116
+ const b = new Uint8Array([4, 5, 6]);
117
+
118
+ console.log(concatUint8Arrays([a, b]));
119
+ //=> Uint8Array [1, 2, 3, 4, 5, 6]
120
+ ```
121
+ */
122
+ function concatUint8Arrays(arrays, totalLength) {
123
+ if (arrays.length === 0) {
124
+ return new Uint8Array(0);
125
+ }
126
+ totalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);
127
+ const returnValue = new Uint8Array(totalLength);
128
+ let offset = 0;
129
+ for (const array of arrays) {
130
+ assertUint8Array(array);
131
+ returnValue.set(array, offset);
132
+ offset += array.length;
133
+ }
134
+ return returnValue;
135
+ }
136
+ /**
137
+ Check if two arrays are identical by verifying that they contain the same bytes in the same sequence.
138
+
139
+ Replacement for [`Buffer#equals()`](https://nodejs.org/api/buffer.html#bufequalsotherbuffer).
140
+
141
+ @example
142
+ ```
143
+ import {areUint8ArraysEqual} from 'uint8array-extras';
144
+
145
+ const a = new Uint8Array([1, 2, 3]);
146
+ const b = new Uint8Array([1, 2, 3]);
147
+ const c = new Uint8Array([4, 5, 6]);
148
+
149
+ console.log(areUint8ArraysEqual(a, b));
150
+ //=> true
151
+
152
+ console.log(areUint8ArraysEqual(a, c));
153
+ //=> false
154
+ ```
155
+ */
156
+ function areUint8ArraysEqual(a, b) {
157
+ assertUint8Array(a);
158
+ assertUint8Array(b);
159
+ if (a === b) {
160
+ return true;
161
+ }
162
+ if (a.length !== b.length) {
163
+ return false;
164
+ }
165
+ // eslint-disable-next-line unicorn/no-for-loop
166
+ for (let index = 0; index < a.length; index++) {
167
+ if (a[index] !== b[index]) {
168
+ return false;
169
+ }
170
+ }
171
+ return true;
172
+ }
173
+ /**
174
+ Compare two arrays and indicate their relative order or equality. Useful for sorting.
175
+
176
+ Replacement for [`Buffer.compare()`](https://nodejs.org/api/buffer.html#static-method-buffercomparebuf1-buf2).
177
+
178
+ @example
179
+ ```
180
+ import {compareUint8Arrays} from 'uint8array-extras';
181
+
182
+ const array1 = new Uint8Array([1, 2, 3]);
183
+ const array2 = new Uint8Array([4, 5, 6]);
184
+ const array3 = new Uint8Array([7, 8, 9]);
185
+
186
+ [array3, array1, array2].sort(compareUint8Arrays);
187
+ //=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
188
+ ```
189
+ */
190
+ function compareUint8Arrays(a, b) {
191
+ assertUint8Array(a);
192
+ assertUint8Array(b);
193
+ const length = Math.min(a.length, b.length);
194
+ for (let index = 0; index < length; index++) {
195
+ const diff = a[index] - b[index];
196
+ if (diff !== 0) {
197
+ return Math.sign(diff);
198
+ }
199
+ }
200
+ // At this point, all the compared elements are equal.
201
+ // The shorter array should come first if the arrays are of different lengths.
202
+ return Math.sign(a.length - b.length);
203
+ }
204
+ function miniTextDecoder() {
205
+ return {
206
+ decode(input) {
207
+ const uint8Array = input instanceof Uint8Array ? input : new Uint8Array(input);
208
+ let result = '';
209
+ for (let i = 0; i < uint8Array.length; i++) {
210
+ result += String.fromCharCode(uint8Array[i]);
211
+ }
212
+ return result;
213
+ }
214
+ };
215
+ }
216
+ const cachedDecoders = {
217
+ // Use TextDecoder if available (web, Node.js), otherwise use miniTextDecoder for React Native
218
+ utf8: typeof globalThis.TextDecoder !== 'undefined' ? new globalThis.TextDecoder('utf8') : miniTextDecoder(),
219
+ };
220
+ /**
221
+ Convert a `Uint8Array` to a string.
222
+
223
+ @param encoding - The [encoding](https://developer.mozilla.org/en-US/docs/Web/API/Encoding_API/Encodings) to convert from. Default: `'utf8'`
224
+
225
+ Replacement for [`Buffer#toString()`](https://nodejs.org/api/buffer.html#buftostringencoding-start-end). For the `encoding` parameter, `latin1` should be used instead of `binary` and `utf-16le` instead of `utf16le`.
226
+
227
+ @example
228
+ ```
229
+ import {uint8ArrayToString} from 'uint8array-extras';
230
+
231
+ const byteArray = new Uint8Array([72, 101, 108, 108, 111]);
232
+ console.log(uint8ArrayToString(byteArray));
233
+ //=> 'Hello'
234
+
235
+ const zh = new Uint8Array([167, 65, 166, 110]);
236
+ console.log(uint8ArrayToString(zh, 'big5'));
237
+ //=> '你好'
238
+
239
+ const ja = new Uint8Array([130, 177, 130, 241, 130, 201, 130, 191, 130, 205]);
240
+ console.log(uint8ArrayToString(ja, 'shift-jis'));
241
+ //=> 'こんにちは'
242
+ ```
243
+ */
244
+ function uint8ArrayToString(array, encoding = 'utf8') {
245
+ assertUint8ArrayOrArrayBuffer(array);
246
+ return cachedDecoders[encoding].decode(array);
247
+ }
248
+ function assertString(value) {
249
+ if (typeof value !== 'string') {
250
+ throw new TypeError(`Expected \`string\`, got \`${typeof value}\``);
251
+ }
252
+ }
253
+ const cachedEncoder = new globalThis.TextEncoder();
254
+ /**
255
+ Convert a string to a `Uint8Array` (using UTF-8 encoding).
256
+
257
+ Replacement for [`Buffer.from('Hello')`](https://nodejs.org/api/buffer.html#static-method-bufferfromstring-encoding).
258
+
259
+ @example
260
+ ```
261
+ import {stringToUint8Array} from 'uint8array-extras';
262
+
263
+ console.log(stringToUint8Array('Hello'));
264
+ //=> Uint8Array [72, 101, 108, 108, 111]
265
+ ```
266
+ */
267
+ function stringToUint8Array(string) {
268
+ assertString(string);
269
+ return cachedEncoder.encode(string);
270
+ }
271
+ function base64ToBase64Url(base64) {
272
+ return base64.replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');
273
+ }
274
+ function base64UrlToBase64(base64url) {
275
+ return base64url.replaceAll('-', '+').replaceAll('_', '/');
276
+ }
277
+ // Reference: https://phuoc.ng/collection/this-vs-that/concat-vs-push/
278
+ const MAX_BLOCK_SIZE = 65_535;
279
+ /**
280
+ Convert a `Uint8Array` to a Base64-encoded string.
281
+
282
+ Specify `{urlSafe: true}` to get a [Base64URL](https://base64.guru/standards/base64url)-encoded string.
283
+
284
+ Replacement for [`Buffer#toString('base64')`](https://nodejs.org/api/buffer.html#buftostringencoding-start-end).
285
+
286
+ @example
287
+ ```
288
+ import {uint8ArrayToBase64} from 'uint8array-extras';
289
+
290
+ const byteArray = new Uint8Array([72, 101, 108, 108, 111]);
291
+
292
+ console.log(uint8ArrayToBase64(byteArray));
293
+ //=> 'SGVsbG8='
294
+ ```
295
+ */
296
+ function uint8ArrayToBase64(array, { urlSafe = false } = {}) {
297
+ assertUint8Array(array);
298
+ let base64;
299
+ if (array.length < MAX_BLOCK_SIZE) {
300
+ // Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem
301
+ base64 = globalThis.btoa(String.fromCodePoint.apply(this, array));
302
+ }
303
+ else {
304
+ base64 = '';
305
+ for (const value of array) {
306
+ base64 += String.fromCodePoint(value);
307
+ }
308
+ base64 = globalThis.btoa(base64);
309
+ }
310
+ return urlSafe ? base64ToBase64Url(base64) : base64;
311
+ }
312
+ /**
313
+ Convert a Base64-encoded or [Base64URL](https://base64.guru/standards/base64url)-encoded string to a `Uint8Array`.
314
+
315
+ Replacement for [`Buffer.from('SGVsbG8=', 'base64')`](https://nodejs.org/api/buffer.html#static-method-bufferfromstring-encoding).
316
+
317
+ @example
318
+ ```
319
+ import {base64ToUint8Array} from 'uint8array-extras';
320
+
321
+ console.log(base64ToUint8Array('SGVsbG8='));
322
+ //=> Uint8Array [72, 101, 108, 108, 111]
323
+ ```
324
+ */
325
+ function base64ToUint8Array(base64String) {
326
+ assertString(base64String);
327
+ return Uint8Array.from(globalThis.atob(base64UrlToBase64(base64String)), x => x.codePointAt(0));
328
+ }
329
+ /**
330
+ Encode a string to Base64-encoded string.
331
+
332
+ Specify `{urlSafe: true}` to get a [Base64URL](https://base64.guru/standards/base64url)-encoded string.
333
+
334
+ Replacement for `Buffer.from('Hello').toString('base64')` and [`btoa()`](https://developer.mozilla.org/en-US/docs/Web/API/btoa).
335
+
336
+ @example
337
+ ```
338
+ import {stringToBase64} from 'uint8array-extras';
339
+
340
+ console.log(stringToBase64('Hello'));
341
+ //=> 'SGVsbG8='
342
+ ```
343
+ */
344
+ function stringToBase64(string, { urlSafe = false } = {}) {
345
+ assertString(string);
346
+ return uint8ArrayToBase64(stringToUint8Array(string), { urlSafe });
347
+ }
348
+ /**
349
+ Decode a Base64-encoded or [Base64URL](https://base64.guru/standards/base64url)-encoded string to a string.
350
+
351
+ Replacement for `Buffer.from('SGVsbG8=', 'base64').toString()` and [`atob()`](https://developer.mozilla.org/en-US/docs/Web/API/atob).
352
+
353
+ @example
354
+ ```
355
+ import {base64ToString} from 'uint8array-extras';
356
+
357
+ console.log(base64ToString('SGVsbG8='));
358
+ //=> 'Hello'
359
+ ```
360
+ */
361
+ function base64ToString(base64String) {
362
+ assertString(base64String);
363
+ return uint8ArrayToString(base64ToUint8Array(base64String));
364
+ }
365
+ const byteToHexLookupTable = Array.from({ length: 256 }, (_, index) => index.toString(16).padStart(2, '0'));
366
+ /**
367
+ Convert a `Uint8Array` to a Hex string.
368
+
369
+ Replacement for [`Buffer#toString('hex')`](https://nodejs.org/api/buffer.html#buftostringencoding-start-end).
370
+
371
+ @example
372
+ ```
373
+ import {uint8ArrayToHex} from 'uint8array-extras';
374
+
375
+ const byteArray = new Uint8Array([72, 101, 108, 108, 111]);
376
+
377
+ console.log(uint8ArrayToHex(byteArray));
378
+ //=> '48656c6c6f'
379
+ ```
380
+ */
381
+ function uint8ArrayToHex(array) {
382
+ assertUint8Array(array);
383
+ // Concatenating a string is faster than using an array.
384
+ let hexString = '';
385
+ // eslint-disable-next-line unicorn/no-for-loop -- Max performance is critical.
386
+ for (let index = 0; index < array.length; index++) {
387
+ hexString += byteToHexLookupTable[array[index]];
388
+ }
389
+ return hexString;
390
+ }
391
+ const hexToDecimalLookupTable = {
392
+ 0: 0,
393
+ 1: 1,
394
+ 2: 2,
395
+ 3: 3,
396
+ 4: 4,
397
+ 5: 5,
398
+ 6: 6,
399
+ 7: 7,
400
+ 8: 8,
401
+ 9: 9,
402
+ a: 10,
403
+ b: 11,
404
+ c: 12,
405
+ d: 13,
406
+ e: 14,
407
+ f: 15,
408
+ A: 10,
409
+ B: 11,
410
+ C: 12,
411
+ D: 13,
412
+ E: 14,
413
+ F: 15,
414
+ };
415
+ /**
416
+ Convert a Hex string to a `Uint8Array`.
417
+
418
+ Replacement for [`Buffer.from('48656c6c6f', 'hex')`](https://nodejs.org/api/buffer.html#static-method-bufferfromstring-encoding).
419
+
420
+ @example
421
+ ```
422
+ import {hexToUint8Array} from 'uint8array-extras';
423
+
424
+ console.log(hexToUint8Array('48656c6c6f'));
425
+ //=> Uint8Array [72, 101, 108, 108, 111]
426
+ ```
427
+ */
428
+ function hexToUint8Array(hexString) {
429
+ assertString(hexString);
430
+ if (hexString.length % 2 !== 0) {
431
+ throw new Error('Invalid Hex string length.');
432
+ }
433
+ const resultLength = hexString.length / 2;
434
+ const bytes = new Uint8Array(resultLength);
435
+ for (let index = 0; index < resultLength; index++) {
436
+ const highNibble = hexToDecimalLookupTable[hexString[index * 2]];
437
+ const lowNibble = hexToDecimalLookupTable[hexString[(index * 2) + 1]];
438
+ if (highNibble === undefined || lowNibble === undefined) {
439
+ throw new Error(`Invalid Hex character encountered at position ${index * 2}`);
440
+ }
441
+ bytes[index] = (highNibble << 4) | lowNibble; // eslint-disable-line no-bitwise
442
+ }
443
+ return bytes;
444
+ }
445
+ /**
446
+ Read `DataView#byteLength` number of bytes from the given view, up to 48-bit.
447
+
448
+ Replacement for [`Buffer#readUintBE`](https://nodejs.org/api/buffer.html#bufreadintbeoffset-bytelength)
449
+
450
+ @example
451
+ ```
452
+ import {getUintBE} from 'uint8array-extras';
453
+
454
+ const byteArray = new Uint8Array([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
455
+
456
+ console.log(getUintBE(new DataView(byteArray.buffer)));
457
+ //=> 20015998341291
458
+ ```
459
+ */
460
+ function getUintBE(view) {
461
+ const { byteLength } = view;
462
+ if (byteLength === 6) {
463
+ return (view.getUint16(0) * (2 ** 32)) + view.getUint32(2);
464
+ }
465
+ if (byteLength === 5) {
466
+ return (view.getUint8(0) * (2 ** 32)) + view.getUint32(1);
467
+ }
468
+ if (byteLength === 4) {
469
+ return view.getUint32(0);
470
+ }
471
+ if (byteLength === 3) {
472
+ return (view.getUint8(0) * (2 ** 16)) + view.getUint16(1);
473
+ }
474
+ if (byteLength === 2) {
475
+ return view.getUint16(0);
476
+ }
477
+ if (byteLength === 1) {
478
+ return view.getUint8(0);
479
+ }
480
+ // At this point, none of the conditions matched.
481
+ throw new Error('Unsupported DataView byteLength');
482
+ }
483
+ /**
484
+ Find the index of the first occurrence of the given sequence of bytes (`value`) within the given `Uint8Array` (`array`).
485
+
486
+ Replacement for [`Buffer#indexOf`](https://nodejs.org/api/buffer.html#bufindexofvalue-byteoffset-encoding). `Uint8Array#indexOf` only takes a number which is different from Buffer's `indexOf` implementation.
487
+
488
+ @example
489
+ ```
490
+ import {indexOf} from 'uint8array-extras';
491
+
492
+ const byteArray = new Uint8Array([0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef]);
493
+
494
+ console.log(indexOf(byteArray, new Uint8Array([0x78, 0x90])));
495
+ //=> 3
496
+ ```
497
+ */
498
+ function indexOf(array, value) {
499
+ const arrayLength = array.length;
500
+ const valueLength = value.length;
501
+ if (valueLength === 0) {
502
+ return -1;
503
+ }
504
+ if (valueLength > arrayLength) {
505
+ return -1;
506
+ }
507
+ const validOffsetLength = arrayLength - valueLength;
508
+ for (let index = 0; index <= validOffsetLength; index++) {
509
+ let isMatch = true;
510
+ for (let index2 = 0; index2 < valueLength; index2++) {
511
+ if (array[index + index2] !== value[index2]) {
512
+ isMatch = false;
513
+ break;
514
+ }
515
+ }
516
+ if (isMatch) {
517
+ return index;
518
+ }
519
+ }
520
+ return -1;
521
+ }
522
+ /**
523
+ Checks if the given sequence of bytes (`value`) is within the given `Uint8Array` (`array`).
524
+
525
+ Returns true if the value is included, otherwise false.
526
+
527
+ Replacement for [`Buffer#includes`](https://nodejs.org/api/buffer.html#bufincludesvalue-byteoffset-encoding). `Uint8Array#includes` only takes a number which is different from Buffer's `includes` implementation.
528
+
529
+ import {includes} from 'uint8array-extras';
530
+
531
+ const byteArray = new Uint8Array([0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef]);
532
+
533
+ console.log(includes(byteArray, new Uint8Array([0x78, 0x90])));
534
+ //=> true
535
+ ```
536
+ */
537
+ function includes(array, value) {
538
+ return indexOf(array, value) !== -1;
539
+ }
540
+ // concatUint8Arrays
541
+ // stringToUint8Array
542
+ // toUint8Array
543
+ // hexToUint8Array
544
+ // uint8ArrayToHex
545
+ //# sourceMappingURL=uintArrayHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uintArrayHelper.js","sourceRoot":"","sources":["../../../src/helpers/uintArrayHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ export declare const partition: (s: string, n: number) => string[];
2
+ export declare const split: (s: Uint8Array, length: number) => [Uint8Array, Uint8Array];
3
+ export declare const getCRC: (message: Uint8Array) => number;
4
+ export declare const getCRCHex: (message: Uint8Array) => string;
5
+ export declare const toUint32: (number: number) => number;
6
+ export declare const intToBytes: (num: number) => Uint8Array;
7
+ export declare const arraysEqual: (ar1: number[], ar2: number[]) => boolean;
8
+ /**
9
+ * Checks if ar1 contains all elements of ar2
10
+ * @param ar1 the outer array
11
+ * @param ar2 the array to be contained in ar1
12
+ */
13
+ export declare const arrayContains: (ar1: number[], ar2: number[]) => boolean;
14
+ /**
15
+ * Returns the difference array of `ar1` - `ar2`
16
+ */
17
+ export declare const setDifference: (ar1: number[], ar2: number[]) => number[];
18
+ export declare const bufferXOR: (a: Uint8Array, b: Uint8Array) => Uint8Array;
19
+ export declare const makeMessage: (length: number, seed?: string) => Uint8Array;
20
+ /**
21
+ * Returns the union of two sets.
22
+ * @param set1 - The first set.
23
+ * @param set2 - The second set.
24
+ * @returns A new set containing all unique elements from both sets.
25
+ */
26
+ export declare const union: <T>(set1: Set<T>, set2: Set<T>) => Set<T>;
27
+ /**
28
+ * Returns the intersection of two sets.
29
+ * @param set1 - The first set.
30
+ * @param set2 - The second set.
31
+ * @returns A new set containing elements present in both sets.
32
+ */
33
+ export declare const intersection: <T>(set1: Set<T>, set2: Set<T>) => Set<T>;
34
+ /**
35
+ * Returns the difference of two sets (set1 - set2).
36
+ * @param set1 - The first set.
37
+ * @param set2 - The second set.
38
+ * @returns A new set containing elements in set1 that are not in set2.
39
+ */
40
+ export declare const difference: <T>(set1: Set<T>, set2: Set<T>) => Set<T>;
41
+ /**
42
+ * Returns the symmetric difference of two sets.
43
+ * @param set1 - The first set.
44
+ * @param set2 - The second set.
45
+ * @returns A new set containing elements in either set1 or set2, but not in both.
46
+ */
47
+ export declare const symmetricDifference: <T>(set1: Set<T>, set2: Set<T>) => Set<T>;
48
+ /**
49
+ * Checks if set1 is a subset of set2.
50
+ * @param sub - The potential subset.
51
+ * @param container - The set to check against.
52
+ * @returns True if set1 is a subset of set2, otherwise false.
53
+ */
54
+ export declare const isSubset: <T>(sub: Set<T>, container: Set<T>) => boolean;
55
+ export declare function assert(condition: boolean, message?: string): void;