@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,102 @@
1
+ import Xoshiro from "../xoshiro.js";
2
+ import { crc32 } from "./crc32.js";
3
+ import { stringToUint8Array, toUint8Array } from "./uintArrayHelper.js";
4
+ export const partition = (s, n) => s.match(new RegExp(".{1," + n + "}", "g")) || [s];
5
+ export const split = (s, length) => [s.slice(0, -length), s.slice(-length)];
6
+ export const getCRC = (message) => crc32(message);
7
+ export const getCRCHex = (message) => crc32(message).toString(16).padStart(8, "0");
8
+ export const toUint32 = (number) => number >>> 0;
9
+ export const intToBytes = (num) => {
10
+ const arr = new ArrayBuffer(4); // an Int32 takes 4 bytes
11
+ const view = new DataView(arr);
12
+ view.setUint32(0, num, false); // byteOffset = 0; litteEndian = false
13
+ return toUint8Array(arr);
14
+ };
15
+ export const arraysEqual = (ar1, ar2) => {
16
+ if (ar1.length !== ar2.length) {
17
+ return false;
18
+ }
19
+ return ar1.every((el) => ar2.includes(el));
20
+ };
21
+ /**
22
+ * Checks if ar1 contains all elements of ar2
23
+ * @param ar1 the outer array
24
+ * @param ar2 the array to be contained in ar1
25
+ */
26
+ export const arrayContains = (ar1, ar2) => {
27
+ return ar2.every((v) => ar1.includes(v));
28
+ };
29
+ /**
30
+ * Returns the difference array of `ar1` - `ar2`
31
+ */
32
+ export const setDifference = (ar1, ar2) => {
33
+ return ar1.filter((x) => ar2.indexOf(x) < 0);
34
+ };
35
+ export const bufferXOR = (a, b) => {
36
+ const length = Math.max(a.length, b.length);
37
+ const uInt8Array = new Uint8Array(length);
38
+ for (let i = 0; i < length; ++i) {
39
+ uInt8Array[i] = a[i] ^ b[i];
40
+ }
41
+ return uInt8Array;
42
+ };
43
+ export const makeMessage = (length, seed = "Wolf") => {
44
+ const rng = new Xoshiro(stringToUint8Array(seed));
45
+ return new Uint8Array(rng.nextData(length));
46
+ };
47
+ /// Set operations
48
+ /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/difference#browser_compatibility
49
+ /**
50
+ * Returns the union of two sets.
51
+ * @param set1 - The first set.
52
+ * @param set2 - The second set.
53
+ * @returns A new set containing all unique elements from both sets.
54
+ */
55
+ export const union = (set1, set2) => {
56
+ return new Set([...set1, ...set2]);
57
+ };
58
+ /**
59
+ * Returns the intersection of two sets.
60
+ * @param set1 - The first set.
61
+ * @param set2 - The second set.
62
+ * @returns A new set containing elements present in both sets.
63
+ */
64
+ export const intersection = (set1, set2) => {
65
+ return new Set([...set1].filter((x) => set2.has(x)));
66
+ };
67
+ /**
68
+ * Returns the difference of two sets (set1 - set2).
69
+ * @param set1 - The first set.
70
+ * @param set2 - The second set.
71
+ * @returns A new set containing elements in set1 that are not in set2.
72
+ */
73
+ export const difference = (set1, set2) => {
74
+ return new Set([...set1].filter((x) => !set2.has(x)));
75
+ };
76
+ /**
77
+ * Returns the symmetric difference of two sets.
78
+ * @param set1 - The first set.
79
+ * @param set2 - The second set.
80
+ * @returns A new set containing elements in either set1 or set2, but not in both.
81
+ */
82
+ export const symmetricDifference = (set1, set2) => {
83
+ return new Set([
84
+ ...[...set1].filter((x) => !set2.has(x)),
85
+ ...[...set2].filter((x) => !set1.has(x)),
86
+ ]);
87
+ };
88
+ /**
89
+ * Checks if set1 is a subset of set2.
90
+ * @param sub - The potential subset.
91
+ * @param container - The set to check against.
92
+ * @returns True if set1 is a subset of set2, otherwise false.
93
+ */
94
+ export const isSubset = (sub, container) => {
95
+ return [...sub].every((x) => container.has(x));
96
+ };
97
+ export function assert(condition, message) {
98
+ if (!condition) {
99
+ throw new Error(message || "Assertion failed");
100
+ }
101
+ }
102
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This is for react-native compatibility
3
+ * In Expo SDK 51 (React Native 74), Hermes supports TextEncoder natively but not TextDecoder.
4
+ * Latest version of Expo 52 has added TextDecoder support for Hermes. But it is still unsupported in React Native 77,
5
+ *
6
+ * So lets inject TextDecoder polyfill for React Native if it is not supported
7
+ */
8
+ import "@bacons/text-decoder/install";
9
+ export * from "./index.js";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This is for react-native compatibility
3
+ * In Expo SDK 51 (React Native 74), Hermes supports TextEncoder natively but not TextDecoder.
4
+ * Latest version of Expo 52 has added TextDecoder support for Hermes. But it is still unsupported in React Native 77,
5
+ *
6
+ * So lets inject TextDecoder polyfill for React Native if it is not supported
7
+ */
8
+ import "@bacons/text-decoder/install";
9
+ // Export everything from the main index file
10
+ //@ts-ignore
11
+ export * from "./index.js";
12
+ //# sourceMappingURL=index-react-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-react-native.js","sourceRoot":"","sources":["../../src/index-react-native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,8BAA8B,CAAC;AAEtC,6CAA6C;AAC7C,YAAY;AACZ,cAAc,YAAY,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { UR } from "./classes/UR.js";
2
+ import { UrRegistry } from "./registry.js";
3
+ import { registryItemFactory, RegistryItemBase, isRegistryItem } from "./classes/RegistryItem.js";
4
+ import { UrFountainEncoder } from "./classes/UrFountainEncoder.js";
5
+ import { UrFountainDecoder } from "./classes/UrFountainDecoder.js";
6
+ import { FountainEncoder } from "./classes/FountainEncoder.js";
7
+ import { FountainDecoder } from "./classes/FountainDecoder.js";
8
+ import { defaultEncoders, dataPipeline } from "./encodingMethods/index.js";
9
+ import { CborEncoding } from "./encodingMethods/CborEncoding.js";
10
+ import { BytewordEncoding } from "./encodingMethods/BytewordEncoding.js";
11
+ import { HexEncoding } from "./encodingMethods/HexEncoding.js";
12
+ import * as cbor2 from "./wrappers/cbor2.js";
13
+ export { UrRegistry, registryItemFactory, RegistryItemBase, isRegistryItem, UR, UrFountainDecoder, UrFountainEncoder, FountainDecoder, FountainEncoder, CborEncoding, BytewordEncoding, HexEncoding, defaultEncoders, dataPipeline, cbor2, };
14
+ import type { RegistryItem, RegistryItemClass } from "./classes/RegistryItem.js";
15
+ import type { DecodeOptions as DecodeOptionsType, EncodeOptions as EncodeOptionsType, CommentOptions as CommentOptionsType } from "./wrappers/cbor2.js";
16
+ export declare namespace cbor2Types {
17
+ type DecodeOptions = DecodeOptionsType;
18
+ type EncodeOptions = EncodeOptionsType;
19
+ type CommentOptions = CommentOptionsType;
20
+ }
21
+ export type { RegistryItem, RegistryItemClass };
@@ -0,0 +1,16 @@
1
+ import { UR } from "./classes/UR.js";
2
+ import { UrRegistry } from "./registry.js";
3
+ import { registryItemFactory, RegistryItemBase, isRegistryItem } from "./classes/RegistryItem.js";
4
+ import { UrFountainEncoder } from "./classes/UrFountainEncoder.js";
5
+ import { UrFountainDecoder } from "./classes/UrFountainDecoder.js";
6
+ import { FountainEncoder } from "./classes/FountainEncoder.js";
7
+ import { FountainDecoder } from "./classes/FountainDecoder.js";
8
+ import { defaultEncoders, dataPipeline } from "./encodingMethods/index.js";
9
+ // Encodings
10
+ import { CborEncoding } from "./encodingMethods/CborEncoding.js";
11
+ import { BytewordEncoding } from "./encodingMethods/BytewordEncoding.js";
12
+ import { HexEncoding } from "./encodingMethods/HexEncoding.js";
13
+ // CBOR2 library
14
+ import * as cbor2 from "./wrappers/cbor2.js";
15
+ export { UrRegistry, registryItemFactory, RegistryItemBase, isRegistryItem, UR, UrFountainDecoder, UrFountainEncoder, FountainDecoder, FountainEncoder, CborEncoding, BytewordEncoding, HexEncoding, defaultEncoders, dataPipeline, cbor2, };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE1E,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAE9D,gBAAgB;AAChB,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,KAAK,GACN,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { EncodingMethodName } from "../enums/EncodingMethodName.js";
2
+ /**
3
+ * Encoding method that defines the incoming type T and the outgoing type U
4
+ */
5
+ export interface IEncodingMethod<T, U> {
6
+ name: EncodingMethodName | string;
7
+ encode(payload: T, config?: unknown): U;
8
+ decode(payload: U, config?: unknown): T;
9
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IEncodingMethod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEncodingMethod.js","sourceRoot":"","sources":["../../../src/interfaces/IEncodingMethod.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,26 @@
1
+ import { RegistryItemClass } from "./classes/RegistryItem.js";
2
+ type Registry = Map<string, RegistryItemClass>;
3
+ export declare class URRegistryClass {
4
+ private static instance;
5
+ private registry;
6
+ private tagMap;
7
+ private loggingEnabled;
8
+ private constructor();
9
+ static getInstance(items?: RegistryItemClass[], loggingEnabled?: boolean): URRegistryClass;
10
+ setLoggingEnabled(enabled: boolean): void;
11
+ private log;
12
+ addItem(item: RegistryItemClass): void;
13
+ addItemOnce(item: RegistryItemClass): void;
14
+ addItems(items: RegistryItemClass[]): void;
15
+ queryByTag(tag: number): RegistryItemClass | undefined;
16
+ queryByURType(URType: string): RegistryItemClass | undefined;
17
+ /**
18
+ * Removes an item from the registry based on its URType, tag, or item instance.
19
+ * @param findItem - The item to be removed. It can be an instance of RegistryItemClass, a URType string, or a tag number.
20
+ */
21
+ removeItem(findItem: RegistryItemClass | string | number): void;
22
+ clearRegistry(): void;
23
+ getRegistry(): Registry;
24
+ }
25
+ export declare const UrRegistry: URRegistryClass;
26
+ export {};
@@ -0,0 +1,114 @@
1
+ import { Tag, } from "./wrappers/cbor2.js";
2
+ export class URRegistryClass {
3
+ static instance;
4
+ registry = new Map();
5
+ tagMap = new Map();
6
+ loggingEnabled;
7
+ constructor(items = [], loggingEnabled = true) {
8
+ this.loggingEnabled = loggingEnabled;
9
+ this.addItems(items);
10
+ }
11
+ static getInstance(items = [], loggingEnabled = true) {
12
+ if (!URRegistryClass.instance) {
13
+ URRegistryClass.instance = new URRegistryClass(items, loggingEnabled);
14
+ }
15
+ return URRegistryClass.instance;
16
+ }
17
+ setLoggingEnabled(enabled) {
18
+ this.loggingEnabled = enabled;
19
+ }
20
+ log(message) {
21
+ if (this.loggingEnabled) {
22
+ console.warn(message);
23
+ }
24
+ }
25
+ addItem(item) {
26
+ if (this.registry.has(item.URType)) {
27
+ this.log(`Warning: Overwriting existing item with URType: ${item.URType}`);
28
+ }
29
+ if (this.tagMap.has(item.tag)) {
30
+ this.log(`Warning: Tag collision detected for tag: ${item.tag}`);
31
+ }
32
+ this.registry.set(item.URType, item);
33
+ // Register to CBOR decoder only if it has a tag
34
+ if (!Number.isNaN(item.tag)) {
35
+ this.tagMap.set(item.tag, item.URType);
36
+ Tag.registerDecoder(item.tag, (tag, opts) => {
37
+ return item.fromCBORData.bind(item)(tag.contents, item.allowKeysNotInMap, opts);
38
+ });
39
+ }
40
+ }
41
+ addItemOnce(item) {
42
+ // If we already have the item in the registry, do nothing
43
+ if (this.registry.has(item.URType) || this.tagMap.has(item.tag)) {
44
+ // Check if its the same item
45
+ const existingItem = this.registry.get(item.URType);
46
+ if (existingItem !== item) {
47
+ this.log(`Warning: Resgistry already has an item with URType: ${item.URType} but it seems to be a different instance`);
48
+ this.log(`Existing item: ${existingItem}`);
49
+ this.log(`New item: ${item}`);
50
+ }
51
+ return;
52
+ }
53
+ // Otherwise, add the item
54
+ this.addItem(item);
55
+ }
56
+ addItems(items) {
57
+ items.forEach((item) => this.addItem(item));
58
+ }
59
+ queryByTag(tag) {
60
+ const URType = this.tagMap.get(tag);
61
+ return URType ? this.registry.get(URType) : undefined;
62
+ }
63
+ queryByURType(URType) {
64
+ return this.registry.get(URType);
65
+ }
66
+ /**
67
+ * Removes an item from the registry based on its URType, tag, or item instance.
68
+ * @param findItem - The item to be removed. It can be an instance of RegistryItemClass, a URType string, or a tag number.
69
+ */
70
+ removeItem(findItem) {
71
+ let foundItem;
72
+ if (typeof findItem === "string") {
73
+ foundItem = this.queryByURType(findItem);
74
+ if (!foundItem) {
75
+ this.log(`Warning: No item found with URType: ${findItem}`);
76
+ return;
77
+ }
78
+ }
79
+ else if (typeof findItem === "number") {
80
+ foundItem = this.queryByTag(findItem);
81
+ if (!foundItem) {
82
+ this.log(`Warning: No item found with tag: ${findItem}`);
83
+ return;
84
+ }
85
+ }
86
+ else {
87
+ // Check if the item is in the registry
88
+ const URType = findItem.URType;
89
+ if (this.registry.has(URType)) {
90
+ foundItem = findItem;
91
+ }
92
+ else {
93
+ this.log(`Warning: Item not found in registry with type: ${URType}`);
94
+ return;
95
+ }
96
+ }
97
+ // Remove it from registry
98
+ this.registry.delete(foundItem.URType);
99
+ this.tagMap.delete(foundItem.tag);
100
+ Tag.clearDecoder(foundItem.tag);
101
+ }
102
+ clearRegistry() {
103
+ this.registry.forEach((item) => {
104
+ Tag.clearDecoder(item.tag);
105
+ });
106
+ this.registry.clear();
107
+ this.tagMap.clear();
108
+ }
109
+ getRegistry() {
110
+ return this.registry;
111
+ }
112
+ }
113
+ export const UrRegistry = URRegistryClass.getInstance();
114
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ interface IUser {
2
+ id: number;
3
+ name: string;
4
+ email?: string;
5
+ phone?: string;
6
+ address?: string;
7
+ [key: string]: any;
8
+ }
9
+ declare const User_base: import("./classes/RegistryItem.js").RegistryItemClass<import("./classes/RegistryItem.js").RegistryItemBase>;
10
+ export declare class User extends User_base {
11
+ private user;
12
+ constructor(user: IUser);
13
+ verifyInput(input: any): {
14
+ valid: boolean;
15
+ reasons: Error[];
16
+ };
17
+ }
18
+ interface IUserCollection {
19
+ name: string;
20
+ users: User[];
21
+ }
22
+ declare const UserCollection_base: import("./classes/RegistryItem.js").RegistryItemClass<import("./classes/RegistryItem.js").RegistryItemBase>;
23
+ export declare class UserCollection extends UserCollection_base {
24
+ private userCollection;
25
+ constructor(userCollection: IUserCollection);
26
+ verifyInput(input: any): {
27
+ valid: boolean;
28
+ reasons: Error[];
29
+ };
30
+ }
31
+ export {};
@@ -0,0 +1,83 @@
1
+ import { registryItemFactory } from "./classes/RegistryItem.js";
2
+ export class User extends registryItemFactory({
3
+ tag: 111,
4
+ URType: "user",
5
+ CDDL: `
6
+ user = #6.111({
7
+ id: uint,
8
+ name: text,
9
+ ? email: text,
10
+ ? phone: text,
11
+ ? address: text
12
+ })
13
+ `,
14
+ }) {
15
+ user;
16
+ constructor(user) {
17
+ super(user);
18
+ this.user = user;
19
+ }
20
+ verifyInput(input) {
21
+ let reasons = [];
22
+ if (!input.id) {
23
+ reasons.push(new Error("ID is required"));
24
+ }
25
+ else {
26
+ if (typeof input.id !== "number") {
27
+ reasons.push(new Error("ID should be a number"));
28
+ }
29
+ }
30
+ if (!input.name) {
31
+ reasons.push(new Error("Name is required"));
32
+ }
33
+ else {
34
+ if (typeof input.name !== "string") {
35
+ reasons.push(new Error("Name should be a string"));
36
+ }
37
+ }
38
+ const valid = reasons.length === 0;
39
+ return { valid, reasons };
40
+ }
41
+ }
42
+ const UserCollectionType = {
43
+ tag: 112,
44
+ URType: "user-collection",
45
+ CDDL: `
46
+ user-collection = #6.112({
47
+ name: text,
48
+ users: [+ #6.112(user)]
49
+ })
50
+ `,
51
+ };
52
+ export class UserCollection extends registryItemFactory(UserCollectionType) {
53
+ userCollection;
54
+ constructor(userCollection) {
55
+ super(userCollection);
56
+ this.userCollection = userCollection;
57
+ }
58
+ verifyInput(input) {
59
+ let reasons = [];
60
+ if (!input.name) {
61
+ reasons.push(new Error("Name is required"));
62
+ }
63
+ if (typeof input.name !== "string") {
64
+ reasons.push(new Error("Name should be a string"));
65
+ }
66
+ if (input.users) {
67
+ // Check its array
68
+ if (!Array.isArray(input.users)) {
69
+ reasons.push(new Error("Users should be an array"));
70
+ }
71
+ else {
72
+ input.users.forEach((user) => {
73
+ if (!(user instanceof User)) {
74
+ reasons.push(new Error("Users should be an array of User"));
75
+ }
76
+ });
77
+ }
78
+ }
79
+ const valid = reasons.length === 0;
80
+ return { valid, reasons };
81
+ }
82
+ }
83
+ //# sourceMappingURL=test.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.utils.js","sourceRoot":"","sources":["../../src/test.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { decode, encode, Tag, registerEncoder, comment, diagnose } from "./cbor2Wrapper.js";
2
+ export type { DecodeOptions, EncodeOptions, CommentOptions } from "./cbor2Wrapper.js";
@@ -0,0 +1,5 @@
1
+ // If you need a provide an ESM dialect that doesn't support CommonJS (eg, deno, browser, etc), then you can do this:
2
+ // No dual package hazard here
3
+ //@ts-ignore
4
+ export { decode, encode, Tag, registerEncoder, comment, diagnose } from "./cbor2Wrapper.js";
5
+ //# sourceMappingURL=cbor2-deno.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor2-deno.mjs","sourceRoot":"","sources":["../../../src/wrappers/cbor2-deno.mts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,8BAA8B;AAC9B,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { decode, encode, Tag, registerEncoder, comment, diagnose } from "./cbor2Wrapper.js";
2
+ export type { DecodeOptions, EncodeOptions, CommentOptions } from "./cbor2Wrapper.js";
@@ -0,0 +1,5 @@
1
+ // ESM consumers should stay entirely within the ESM output tree.
2
+ // The CommonJS build gets its own wrapper entry via `cbor2-cjs.cts`.
3
+ //@ts-ignore
4
+ export { decode, encode, Tag, registerEncoder, comment, diagnose } from "./cbor2Wrapper.js";
5
+ //# sourceMappingURL=cbor2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor2.js","sourceRoot":"","sources":["../../../src/wrappers/cbor2.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,qEAAqE;AAErE,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { DecodeOptions, EncodeOptions, CommentOptions } from 'cbor2' with { 'resolution-mode': 'import' };
2
+ import { decode, encode, Tag, comment, diagnose } from 'cbor2';
3
+ import { registerEncoder } from 'cbor2/encoder';
4
+ export { decode, encode, Tag, registerEncoder, comment, diagnose };
5
+ export type { DecodeOptions, EncodeOptions, CommentOptions };
@@ -0,0 +1,6 @@
1
+ //@ts-ignore
2
+ import { decode, encode, Tag, comment, diagnose } from 'cbor2';
3
+ //@ts-ignore
4
+ import { registerEncoder } from 'cbor2/encoder';
5
+ export { decode, encode, Tag, registerEncoder, comment, diagnose };
6
+ //# sourceMappingURL=cbor2Wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor2Wrapper.js","sourceRoot":"","sources":["../../../src/wrappers/cbor2Wrapper.ts"],"names":[],"mappings":"AAOA,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const sha256Hash: (data: any) => Uint8Array<ArrayBufferLike>;
2
+ export default class Xoshiro {
3
+ private s;
4
+ constructor(seed: Uint8Array);
5
+ private setS;
6
+ private roll;
7
+ next: () => bigint;
8
+ nextDouble: () => number;
9
+ nextInt: (low: number, high: number) => number;
10
+ nextByte: () => number;
11
+ nextData: (count: number) => number[];
12
+ }
@@ -0,0 +1,47 @@
1
+ import { sha256 } from "./helpers/sha256.js";
2
+ export const sha256Hash = (data) => {
3
+ return sha256(data);
4
+ };
5
+ const MAX_UINT64 = BigInt("0xffffffffffffffff");
6
+ const rotl = (x, k) => (x << BigInt(k) | x >> BigInt(64 - k)) & MAX_UINT64;
7
+ export default class Xoshiro {
8
+ s;
9
+ constructor(seed) {
10
+ const digest = sha256Hash(seed);
11
+ this.s = [0n, 0n, 0n, 0n];
12
+ this.setS(digest);
13
+ }
14
+ setS = (digest) => {
15
+ for (let i = 0; i < 4; i++) {
16
+ let o = i * 8;
17
+ let v = 0n;
18
+ for (let n = 0; n < 8; n++) {
19
+ v = (v << 8n) | BigInt(digest[o + n]);
20
+ }
21
+ this.s[i] = v & MAX_UINT64;
22
+ }
23
+ };
24
+ roll = () => {
25
+ const result = ((rotl((this.s[1] * 5n) & MAX_UINT64, 7) * 9n) & MAX_UINT64);
26
+ const t = (this.s[1] << 17n) & MAX_UINT64;
27
+ this.s[2] ^= this.s[0];
28
+ this.s[3] ^= this.s[1];
29
+ this.s[1] ^= this.s[2];
30
+ this.s[0] ^= this.s[3];
31
+ this.s[2] ^= t;
32
+ this.s[3] = rotl(this.s[3], 45);
33
+ return result;
34
+ };
35
+ next = () => {
36
+ return this.roll();
37
+ };
38
+ nextDouble = () => {
39
+ return Number(this.roll()) / Number(MAX_UINT64 + 1n);
40
+ };
41
+ nextInt = (low, high) => {
42
+ return Math.floor(this.nextDouble() * (high - low + 1) + low);
43
+ };
44
+ nextByte = () => this.nextInt(0, 255);
45
+ nextData = (count) => [...new Array(count)].map(() => this.nextByte());
46
+ }
47
+ //# sourceMappingURL=xoshiro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xoshiro.js","sourceRoot":"","sources":["../../src/xoshiro.ts"],"names":[],"mappings":"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"}