@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,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSubset = exports.symmetricDifference = exports.difference = exports.intersection = exports.union = exports.makeMessage = exports.bufferXOR = exports.setDifference = exports.arrayContains = exports.arraysEqual = exports.intToBytes = exports.toUint32 = exports.getCRCHex = exports.getCRC = exports.split = exports.partition = void 0;
4
+ exports.assert = assert;
5
+ const tslib_1 = require("tslib");
6
+ const xoshiro_js_1 = tslib_1.__importDefault(require("../xoshiro.js"));
7
+ const crc32_js_1 = require("./crc32.js");
8
+ const uintArrayHelper_js_1 = require("./uintArrayHelper.js");
9
+ const partition = (s, n) => s.match(new RegExp(".{1," + n + "}", "g")) || [s];
10
+ exports.partition = partition;
11
+ const split = (s, length) => [s.slice(0, -length), s.slice(-length)];
12
+ exports.split = split;
13
+ const getCRC = (message) => (0, crc32_js_1.crc32)(message);
14
+ exports.getCRC = getCRC;
15
+ const getCRCHex = (message) => (0, crc32_js_1.crc32)(message).toString(16).padStart(8, "0");
16
+ exports.getCRCHex = getCRCHex;
17
+ const toUint32 = (number) => number >>> 0;
18
+ exports.toUint32 = toUint32;
19
+ const intToBytes = (num) => {
20
+ const arr = new ArrayBuffer(4); // an Int32 takes 4 bytes
21
+ const view = new DataView(arr);
22
+ view.setUint32(0, num, false); // byteOffset = 0; litteEndian = false
23
+ return (0, uintArrayHelper_js_1.toUint8Array)(arr);
24
+ };
25
+ exports.intToBytes = intToBytes;
26
+ const arraysEqual = (ar1, ar2) => {
27
+ if (ar1.length !== ar2.length) {
28
+ return false;
29
+ }
30
+ return ar1.every((el) => ar2.includes(el));
31
+ };
32
+ exports.arraysEqual = arraysEqual;
33
+ /**
34
+ * Checks if ar1 contains all elements of ar2
35
+ * @param ar1 the outer array
36
+ * @param ar2 the array to be contained in ar1
37
+ */
38
+ const arrayContains = (ar1, ar2) => {
39
+ return ar2.every((v) => ar1.includes(v));
40
+ };
41
+ exports.arrayContains = arrayContains;
42
+ /**
43
+ * Returns the difference array of `ar1` - `ar2`
44
+ */
45
+ const setDifference = (ar1, ar2) => {
46
+ return ar1.filter((x) => ar2.indexOf(x) < 0);
47
+ };
48
+ exports.setDifference = setDifference;
49
+ const bufferXOR = (a, b) => {
50
+ const length = Math.max(a.length, b.length);
51
+ const uInt8Array = new Uint8Array(length);
52
+ for (let i = 0; i < length; ++i) {
53
+ uInt8Array[i] = a[i] ^ b[i];
54
+ }
55
+ return uInt8Array;
56
+ };
57
+ exports.bufferXOR = bufferXOR;
58
+ const makeMessage = (length, seed = "Wolf") => {
59
+ const rng = new xoshiro_js_1.default((0, uintArrayHelper_js_1.stringToUint8Array)(seed));
60
+ return new Uint8Array(rng.nextData(length));
61
+ };
62
+ exports.makeMessage = makeMessage;
63
+ /// Set operations
64
+ /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/difference#browser_compatibility
65
+ /**
66
+ * Returns the union of two sets.
67
+ * @param set1 - The first set.
68
+ * @param set2 - The second set.
69
+ * @returns A new set containing all unique elements from both sets.
70
+ */
71
+ const union = (set1, set2) => {
72
+ return new Set([...set1, ...set2]);
73
+ };
74
+ exports.union = union;
75
+ /**
76
+ * Returns the intersection of two sets.
77
+ * @param set1 - The first set.
78
+ * @param set2 - The second set.
79
+ * @returns A new set containing elements present in both sets.
80
+ */
81
+ const intersection = (set1, set2) => {
82
+ return new Set([...set1].filter((x) => set2.has(x)));
83
+ };
84
+ exports.intersection = intersection;
85
+ /**
86
+ * Returns the difference of two sets (set1 - set2).
87
+ * @param set1 - The first set.
88
+ * @param set2 - The second set.
89
+ * @returns A new set containing elements in set1 that are not in set2.
90
+ */
91
+ const difference = (set1, set2) => {
92
+ return new Set([...set1].filter((x) => !set2.has(x)));
93
+ };
94
+ exports.difference = difference;
95
+ /**
96
+ * Returns the symmetric difference of two sets.
97
+ * @param set1 - The first set.
98
+ * @param set2 - The second set.
99
+ * @returns A new set containing elements in either set1 or set2, but not in both.
100
+ */
101
+ const symmetricDifference = (set1, set2) => {
102
+ return new Set([
103
+ ...[...set1].filter((x) => !set2.has(x)),
104
+ ...[...set2].filter((x) => !set1.has(x)),
105
+ ]);
106
+ };
107
+ exports.symmetricDifference = symmetricDifference;
108
+ /**
109
+ * Checks if set1 is a subset of set2.
110
+ * @param sub - The potential subset.
111
+ * @param container - The set to check against.
112
+ * @returns True if set1 is a subset of set2, otherwise false.
113
+ */
114
+ const isSubset = (sub, container) => {
115
+ return [...sub].every((x) => container.has(x));
116
+ };
117
+ exports.isSubset = isSubset;
118
+ function assert(condition, message) {
119
+ if (!condition) {
120
+ throw new Error(message || "Assertion failed");
121
+ }
122
+ }
123
+ //# 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,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * This is for react-native compatibility
6
+ * In Expo SDK 51 (React Native 74), Hermes supports TextEncoder natively but not TextDecoder.
7
+ * Latest version of Expo 52 has added TextDecoder support for Hermes. But it is still unsupported in React Native 77,
8
+ *
9
+ * So lets inject TextDecoder polyfill for React Native if it is not supported
10
+ */
11
+ require("@bacons/text-decoder/install");
12
+ // Export everything from the main index file
13
+ //@ts-ignore
14
+ tslib_1.__exportStar(require("./index.js"), exports);
15
+ //# 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,wCAAsC;AAEtC,6CAA6C;AAC7C,YAAY;AACZ,qDAA2B"}
@@ -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,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cbor2 = exports.dataPipeline = exports.defaultEncoders = exports.HexEncoding = exports.BytewordEncoding = exports.CborEncoding = exports.FountainEncoder = exports.FountainDecoder = exports.UrFountainEncoder = exports.UrFountainDecoder = exports.UR = exports.isRegistryItem = exports.RegistryItemBase = exports.registryItemFactory = exports.UrRegistry = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const UR_js_1 = require("./classes/UR.js");
6
+ Object.defineProperty(exports, "UR", { enumerable: true, get: function () { return UR_js_1.UR; } });
7
+ const registry_js_1 = require("./registry.js");
8
+ Object.defineProperty(exports, "UrRegistry", { enumerable: true, get: function () { return registry_js_1.UrRegistry; } });
9
+ const RegistryItem_js_1 = require("./classes/RegistryItem.js");
10
+ Object.defineProperty(exports, "registryItemFactory", { enumerable: true, get: function () { return RegistryItem_js_1.registryItemFactory; } });
11
+ Object.defineProperty(exports, "RegistryItemBase", { enumerable: true, get: function () { return RegistryItem_js_1.RegistryItemBase; } });
12
+ Object.defineProperty(exports, "isRegistryItem", { enumerable: true, get: function () { return RegistryItem_js_1.isRegistryItem; } });
13
+ const UrFountainEncoder_js_1 = require("./classes/UrFountainEncoder.js");
14
+ Object.defineProperty(exports, "UrFountainEncoder", { enumerable: true, get: function () { return UrFountainEncoder_js_1.UrFountainEncoder; } });
15
+ const UrFountainDecoder_js_1 = require("./classes/UrFountainDecoder.js");
16
+ Object.defineProperty(exports, "UrFountainDecoder", { enumerable: true, get: function () { return UrFountainDecoder_js_1.UrFountainDecoder; } });
17
+ const FountainEncoder_js_1 = require("./classes/FountainEncoder.js");
18
+ Object.defineProperty(exports, "FountainEncoder", { enumerable: true, get: function () { return FountainEncoder_js_1.FountainEncoder; } });
19
+ const FountainDecoder_js_1 = require("./classes/FountainDecoder.js");
20
+ Object.defineProperty(exports, "FountainDecoder", { enumerable: true, get: function () { return FountainDecoder_js_1.FountainDecoder; } });
21
+ const index_js_1 = require("./encodingMethods/index.js");
22
+ Object.defineProperty(exports, "defaultEncoders", { enumerable: true, get: function () { return index_js_1.defaultEncoders; } });
23
+ Object.defineProperty(exports, "dataPipeline", { enumerable: true, get: function () { return index_js_1.dataPipeline; } });
24
+ // Encodings
25
+ const CborEncoding_js_1 = require("./encodingMethods/CborEncoding.js");
26
+ Object.defineProperty(exports, "CborEncoding", { enumerable: true, get: function () { return CborEncoding_js_1.CborEncoding; } });
27
+ const BytewordEncoding_js_1 = require("./encodingMethods/BytewordEncoding.js");
28
+ Object.defineProperty(exports, "BytewordEncoding", { enumerable: true, get: function () { return BytewordEncoding_js_1.BytewordEncoding; } });
29
+ const HexEncoding_js_1 = require("./encodingMethods/HexEncoding.js");
30
+ Object.defineProperty(exports, "HexEncoding", { enumerable: true, get: function () { return HexEncoding_js_1.HexEncoding; } });
31
+ // CBOR2 library
32
+ const cbor2 = tslib_1.__importStar(require("./wrappers/cbor2.js"));
33
+ exports.cbor2 = cbor2;
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAAoC;AAsBlC,mFAtBO,UAAE,OAsBP;AArBJ,+CAA0C;AAiBxC,2FAjBO,wBAAU,OAiBP;AAhBZ,+DAAiG;AAiB/F,oGAjBO,qCAAmB,OAiBP;AACnB,iGAlB4B,kCAAgB,OAkB5B;AAChB,+FAnB8C,gCAAc,OAmB9C;AAlBhB,yEAAkE;AAqBhE,kGArBO,wCAAiB,OAqBP;AApBnB,yEAAkE;AAmBhE,kGAnBO,wCAAiB,OAmBP;AAlBnB,qEAA8D;AAqB5D,gGArBO,oCAAe,OAqBP;AApBjB,qEAA8D;AAmB5D,gGAnBO,oCAAe,OAmBP;AAlBjB,yDAA0E;AAuBxE,gGAvBO,0BAAe,OAuBP;AACf,6FAxBwB,uBAAY,OAwBxB;AAtBd,YAAY;AACZ,uEAAgE;AAiB9D,6FAjBO,8BAAY,OAiBP;AAhBd,+EAAwE;AAiBtE,iGAjBO,sCAAgB,OAiBP;AAhBlB,qEAA8D;AAiB5D,4FAjBO,4BAAW,OAiBP;AAfb,gBAAgB;AAChB,mEAA6C;AAiB3C,sBAAK"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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": "commonjs"
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,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrRegistry = exports.URRegistryClass = void 0;
4
+ const cbor2_js_1 = require("./wrappers/cbor2.js");
5
+ class URRegistryClass {
6
+ static instance;
7
+ registry = new Map();
8
+ tagMap = new Map();
9
+ loggingEnabled;
10
+ constructor(items = [], loggingEnabled = true) {
11
+ this.loggingEnabled = loggingEnabled;
12
+ this.addItems(items);
13
+ }
14
+ static getInstance(items = [], loggingEnabled = true) {
15
+ if (!URRegistryClass.instance) {
16
+ URRegistryClass.instance = new URRegistryClass(items, loggingEnabled);
17
+ }
18
+ return URRegistryClass.instance;
19
+ }
20
+ setLoggingEnabled(enabled) {
21
+ this.loggingEnabled = enabled;
22
+ }
23
+ log(message) {
24
+ if (this.loggingEnabled) {
25
+ console.warn(message);
26
+ }
27
+ }
28
+ addItem(item) {
29
+ if (this.registry.has(item.URType)) {
30
+ this.log(`Warning: Overwriting existing item with URType: ${item.URType}`);
31
+ }
32
+ if (this.tagMap.has(item.tag)) {
33
+ this.log(`Warning: Tag collision detected for tag: ${item.tag}`);
34
+ }
35
+ this.registry.set(item.URType, item);
36
+ // Register to CBOR decoder only if it has a tag
37
+ if (!Number.isNaN(item.tag)) {
38
+ this.tagMap.set(item.tag, item.URType);
39
+ cbor2_js_1.Tag.registerDecoder(item.tag, (tag, opts) => {
40
+ return item.fromCBORData.bind(item)(tag.contents, item.allowKeysNotInMap, opts);
41
+ });
42
+ }
43
+ }
44
+ addItemOnce(item) {
45
+ // If we already have the item in the registry, do nothing
46
+ if (this.registry.has(item.URType) || this.tagMap.has(item.tag)) {
47
+ // Check if its the same item
48
+ const existingItem = this.registry.get(item.URType);
49
+ if (existingItem !== item) {
50
+ this.log(`Warning: Resgistry already has an item with URType: ${item.URType} but it seems to be a different instance`);
51
+ this.log(`Existing item: ${existingItem}`);
52
+ this.log(`New item: ${item}`);
53
+ }
54
+ return;
55
+ }
56
+ // Otherwise, add the item
57
+ this.addItem(item);
58
+ }
59
+ addItems(items) {
60
+ items.forEach((item) => this.addItem(item));
61
+ }
62
+ queryByTag(tag) {
63
+ const URType = this.tagMap.get(tag);
64
+ return URType ? this.registry.get(URType) : undefined;
65
+ }
66
+ queryByURType(URType) {
67
+ return this.registry.get(URType);
68
+ }
69
+ /**
70
+ * Removes an item from the registry based on its URType, tag, or item instance.
71
+ * @param findItem - The item to be removed. It can be an instance of RegistryItemClass, a URType string, or a tag number.
72
+ */
73
+ removeItem(findItem) {
74
+ let foundItem;
75
+ if (typeof findItem === "string") {
76
+ foundItem = this.queryByURType(findItem);
77
+ if (!foundItem) {
78
+ this.log(`Warning: No item found with URType: ${findItem}`);
79
+ return;
80
+ }
81
+ }
82
+ else if (typeof findItem === "number") {
83
+ foundItem = this.queryByTag(findItem);
84
+ if (!foundItem) {
85
+ this.log(`Warning: No item found with tag: ${findItem}`);
86
+ return;
87
+ }
88
+ }
89
+ else {
90
+ // Check if the item is in the registry
91
+ const URType = findItem.URType;
92
+ if (this.registry.has(URType)) {
93
+ foundItem = findItem;
94
+ }
95
+ else {
96
+ this.log(`Warning: Item not found in registry with type: ${URType}`);
97
+ return;
98
+ }
99
+ }
100
+ // Remove it from registry
101
+ this.registry.delete(foundItem.URType);
102
+ this.tagMap.delete(foundItem.tag);
103
+ cbor2_js_1.Tag.clearDecoder(foundItem.tag);
104
+ }
105
+ clearRegistry() {
106
+ this.registry.forEach((item) => {
107
+ cbor2_js_1.Tag.clearDecoder(item.tag);
108
+ });
109
+ this.registry.clear();
110
+ this.tagMap.clear();
111
+ }
112
+ getRegistry() {
113
+ return this.registry;
114
+ }
115
+ }
116
+ exports.URRegistryClass = URRegistryClass;
117
+ exports.UrRegistry = URRegistryClass.getInstance();
118
+ //# 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,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserCollection = exports.User = void 0;
4
+ const RegistryItem_js_1 = require("./classes/RegistryItem.js");
5
+ class User extends (0, RegistryItem_js_1.registryItemFactory)({
6
+ tag: 111,
7
+ URType: "user",
8
+ CDDL: `
9
+ user = #6.111({
10
+ id: uint,
11
+ name: text,
12
+ ? email: text,
13
+ ? phone: text,
14
+ ? address: text
15
+ })
16
+ `,
17
+ }) {
18
+ user;
19
+ constructor(user) {
20
+ super(user);
21
+ this.user = user;
22
+ }
23
+ verifyInput(input) {
24
+ let reasons = [];
25
+ if (!input.id) {
26
+ reasons.push(new Error("ID is required"));
27
+ }
28
+ else {
29
+ if (typeof input.id !== "number") {
30
+ reasons.push(new Error("ID should be a number"));
31
+ }
32
+ }
33
+ if (!input.name) {
34
+ reasons.push(new Error("Name is required"));
35
+ }
36
+ else {
37
+ if (typeof input.name !== "string") {
38
+ reasons.push(new Error("Name should be a string"));
39
+ }
40
+ }
41
+ const valid = reasons.length === 0;
42
+ return { valid, reasons };
43
+ }
44
+ }
45
+ exports.User = User;
46
+ const UserCollectionType = {
47
+ tag: 112,
48
+ URType: "user-collection",
49
+ CDDL: `
50
+ user-collection = #6.112({
51
+ name: text,
52
+ users: [+ #6.112(user)]
53
+ })
54
+ `,
55
+ };
56
+ class UserCollection extends (0, RegistryItem_js_1.registryItemFactory)(UserCollectionType) {
57
+ userCollection;
58
+ constructor(userCollection) {
59
+ super(userCollection);
60
+ this.userCollection = userCollection;
61
+ }
62
+ verifyInput(input) {
63
+ let reasons = [];
64
+ if (!input.name) {
65
+ reasons.push(new Error("Name is required"));
66
+ }
67
+ if (typeof input.name !== "string") {
68
+ reasons.push(new Error("Name should be a string"));
69
+ }
70
+ if (input.users) {
71
+ // Check its array
72
+ if (!Array.isArray(input.users)) {
73
+ reasons.push(new Error("Users should be an array"));
74
+ }
75
+ else {
76
+ input.users.forEach((user) => {
77
+ if (!(user instanceof User)) {
78
+ reasons.push(new Error("Users should be an array of User"));
79
+ }
80
+ });
81
+ }
82
+ }
83
+ const valid = reasons.length === 0;
84
+ return { valid, reasons };
85
+ }
86
+ }
87
+ exports.UserCollection = UserCollection;
88
+ //# sourceMappingURL=test.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.utils.js","sourceRoot":"","sources":["../../src/test.utils.ts"],"names":[],"mappings":";;;AAAA,+DAAgE;AAWhE,MAAa,IAAK,SAAQ,IAAA,qCAAmB,EAAC;IAC5C,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,MAAM;IACd,IAAI,EAAE;;;;;;;;SAQC;CACR,CAAC;IACQ,IAAI,CAAQ;IAEpB,YAAY,IAAW;QACrB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,KAAU;QACpB,IAAI,OAAO,GAAY,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF;AA1CD,oBA0CC;AAQD,MAAM,kBAAkB,GAAG;IACzB,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,iBAAiB;IACzB,IAAI,EAAE;;;;;SAKC;CACR,CAAC;AAEF,MAAa,cAAe,SAAQ,IAAA,qCAAmB,EAAC,kBAAkB,CAAC;IACrD;IAApB,YAAoB,cAA+B;QACjD,KAAK,CAAC,cAAc,CAAC,CAAC;QADJ,mBAAc,GAAd,cAAc,CAAiB;IAEnD,CAAC;IAED,WAAW,CAAC,KAAU;QACpB,IAAI,OAAO,GAAY,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,kBAAkB;YAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAChC,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;wBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF;AAhCD,wCAgCC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor2-cjs.cjs","sourceRoot":"","sources":["../../../src/wrappers/cbor2-cjs.cts"],"names":[],"mappings":";;;AAAA,8DAA8D;AAC9D,kCAAkC;AAClC,YAAY;AACZ,qDAA4F;AAAnF,yGAAA,MAAM,OAAA;AAAE,yGAAA,MAAM,OAAA;AAAE,sGAAA,GAAG,OAAA;AAAE,kHAAA,eAAe,OAAA;AAAE,0GAAA,OAAO,OAAA;AAAE,2GAAA,QAAQ,OAAA"}
@@ -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,14 @@
1
+ "use strict";
2
+ // ESM consumers should stay entirely within the ESM output tree.
3
+ // The CommonJS build gets its own wrapper entry via `cbor2-cjs.cts`.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.diagnose = exports.comment = exports.registerEncoder = exports.Tag = exports.encode = exports.decode = void 0;
6
+ //@ts-ignore
7
+ var cbor2Wrapper_js_1 = require("./cbor2Wrapper.js");
8
+ Object.defineProperty(exports, "decode", { enumerable: true, get: function () { return cbor2Wrapper_js_1.decode; } });
9
+ Object.defineProperty(exports, "encode", { enumerable: true, get: function () { return cbor2Wrapper_js_1.encode; } });
10
+ Object.defineProperty(exports, "Tag", { enumerable: true, get: function () { return cbor2Wrapper_js_1.Tag; } });
11
+ Object.defineProperty(exports, "registerEncoder", { enumerable: true, get: function () { return cbor2Wrapper_js_1.registerEncoder; } });
12
+ Object.defineProperty(exports, "comment", { enumerable: true, get: function () { return cbor2Wrapper_js_1.comment; } });
13
+ Object.defineProperty(exports, "diagnose", { enumerable: true, get: function () { return cbor2Wrapper_js_1.diagnose; } });
14
+ //# sourceMappingURL=cbor2.js.map
@@ -0,0 +1,14 @@
1
+ import type {
2
+ DecodeOptions,
3
+ EncodeOptions,
4
+ CommentOptions,
5
+ //@ts-ignore
6
+ } from 'cbor2' with { 'resolution-mode': 'import' };
7
+
8
+ //@ts-ignore
9
+ import { decode, encode, Tag, comment, diagnose } from 'cbor2';
10
+ //@ts-ignore
11
+ import { registerEncoder } from 'cbor2/encoder';
12
+
13
+ export { decode, encode, Tag, registerEncoder, comment, diagnose };
14
+ export type { DecodeOptions, EncodeOptions, CommentOptions };