@certik/skynet 0.20.2 → 0.22.0

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 (91) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/abi.ts +2 -4
  3. package/api.ts +7 -7
  4. package/app.ts +6 -12
  5. package/availability.ts +37 -7
  6. package/bun.lockb +0 -0
  7. package/const.ts +1 -1
  8. package/date.ts +1 -1
  9. package/deploy.ts +4 -4
  10. package/dist/abi.d.ts +112 -0
  11. package/dist/abi.d.ts.map +1 -0
  12. package/dist/abi.js +616 -0
  13. package/dist/address.d.ts +3 -0
  14. package/dist/address.d.ts.map +1 -0
  15. package/dist/address.js +69 -0
  16. package/dist/api.d.ts +32 -0
  17. package/dist/api.d.ts.map +1 -0
  18. package/dist/api.js +35174 -0
  19. package/dist/app.d.ts +102 -0
  20. package/dist/app.d.ts.map +1 -0
  21. package/dist/app.js +71714 -0
  22. package/dist/availability.d.ts +24 -0
  23. package/dist/availability.d.ts.map +1 -0
  24. package/dist/availability.js +926 -0
  25. package/dist/cli.d.ts +6 -0
  26. package/dist/cli.d.ts.map +1 -0
  27. package/dist/cli.js +86 -0
  28. package/dist/const.d.ts +35 -0
  29. package/dist/const.d.ts.map +1 -0
  30. package/dist/const.js +207 -0
  31. package/dist/databricks.d.ts +4 -0
  32. package/dist/databricks.d.ts.map +1 -0
  33. package/dist/databricks.js +84920 -0
  34. package/dist/date.d.ts +6 -0
  35. package/dist/date.d.ts.map +1 -0
  36. package/dist/date.js +101 -0
  37. package/dist/deploy.d.ts +76 -0
  38. package/dist/deploy.d.ts.map +1 -0
  39. package/dist/deploy.js +17506 -0
  40. package/dist/dynamodb.d.ts +17 -0
  41. package/dist/dynamodb.d.ts.map +1 -0
  42. package/dist/dynamodb.js +27365 -0
  43. package/dist/env.d.ts +7 -0
  44. package/dist/env.d.ts.map +1 -0
  45. package/dist/env.js +71 -0
  46. package/dist/graphql.d.ts +6 -0
  47. package/dist/graphql.d.ts.map +1 -0
  48. package/dist/graphql.js +73 -0
  49. package/dist/indexer.d.ts +70 -0
  50. package/dist/indexer.d.ts.map +1 -0
  51. package/dist/indexer.js +36979 -0
  52. package/dist/log.d.ts +14 -0
  53. package/dist/log.d.ts.map +1 -0
  54. package/dist/log.js +108 -0
  55. package/dist/object-hash.d.ts +2 -0
  56. package/dist/object-hash.d.ts.map +1 -0
  57. package/dist/object-hash.js +446 -0
  58. package/dist/opsgenie.d.ts +21 -0
  59. package/dist/opsgenie.d.ts.map +1 -0
  60. package/dist/opsgenie.js +320 -0
  61. package/dist/por.d.ts +38 -0
  62. package/dist/por.d.ts.map +1 -0
  63. package/dist/por.js +164 -0
  64. package/dist/s3.d.ts +21 -0
  65. package/dist/s3.d.ts.map +1 -0
  66. package/dist/s3.js +28878 -0
  67. package/dist/search.d.ts +6 -0
  68. package/dist/search.d.ts.map +1 -0
  69. package/dist/search.js +37754 -0
  70. package/dist/selector.d.ts +18 -0
  71. package/dist/selector.d.ts.map +1 -0
  72. package/dist/selector.js +89 -0
  73. package/dist/slack.d.ts +9 -0
  74. package/dist/slack.d.ts.map +1 -0
  75. package/dist/slack.js +16844 -0
  76. package/dist/util.d.ts +5 -0
  77. package/dist/util.d.ts.map +1 -0
  78. package/dist/util.js +72 -0
  79. package/dist/xxhash.win32-x64-msvc-hrdz34v7.node +0 -0
  80. package/examples/api.ts +1 -1
  81. package/examples/indexer.ts +1 -1
  82. package/examples/mode-indexer.ts +1 -1
  83. package/indexer.ts +11 -11
  84. package/log.ts +22 -4
  85. package/object-hash.ts +66 -0
  86. package/package.json +102 -4
  87. package/por.ts +181 -0
  88. package/search.ts +2 -2
  89. package/tsconfig.build.json +24 -0
  90. package/tsconfig.json +5 -5
  91. package/web3.ts +0 -41
@@ -0,0 +1,320 @@
1
+ // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __toESM = (mod, isNodeMode, target) => {
9
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
10
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
11
+ for (let key of __getOwnPropNames(mod))
12
+ if (!__hasOwnProp.call(to, key))
13
+ __defProp(to, key, {
14
+ get: () => mod[key],
15
+ enumerable: true
16
+ });
17
+ return to;
18
+ };
19
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
20
+ var __toCommonJS = (from) => {
21
+ var entry = __moduleCache.get(from), desc;
22
+ if (entry)
23
+ return entry;
24
+ entry = __defProp({}, "__esModule", { value: true });
25
+ if (from && typeof from === "object" || typeof from === "function")
26
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
27
+ get: () => from[key],
28
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
29
+ }));
30
+ __moduleCache.set(from, entry);
31
+ return entry;
32
+ };
33
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
+ var __export = (target, all) => {
35
+ for (var name in all)
36
+ __defProp(target, name, {
37
+ get: all[name],
38
+ enumerable: true,
39
+ configurable: true,
40
+ set: (newValue) => all[name] = () => newValue
41
+ });
42
+ };
43
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
44
+ var __require = import.meta.require;
45
+
46
+ // node_modules/crypt/crypt.js
47
+ var require_crypt = __commonJS((exports, module) => {
48
+ (function() {
49
+ var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
50
+ rotl: function(n, b) {
51
+ return n << b | n >>> 32 - b;
52
+ },
53
+ rotr: function(n, b) {
54
+ return n << 32 - b | n >>> b;
55
+ },
56
+ endian: function(n) {
57
+ if (n.constructor == Number) {
58
+ return crypt.rotl(n, 8) & 16711935 | crypt.rotl(n, 24) & 4278255360;
59
+ }
60
+ for (var i = 0;i < n.length; i++)
61
+ n[i] = crypt.endian(n[i]);
62
+ return n;
63
+ },
64
+ randomBytes: function(n) {
65
+ for (var bytes = [];n > 0; n--)
66
+ bytes.push(Math.floor(Math.random() * 256));
67
+ return bytes;
68
+ },
69
+ bytesToWords: function(bytes) {
70
+ for (var words = [], i = 0, b = 0;i < bytes.length; i++, b += 8)
71
+ words[b >>> 5] |= bytes[i] << 24 - b % 32;
72
+ return words;
73
+ },
74
+ wordsToBytes: function(words) {
75
+ for (var bytes = [], b = 0;b < words.length * 32; b += 8)
76
+ bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
77
+ return bytes;
78
+ },
79
+ bytesToHex: function(bytes) {
80
+ for (var hex = [], i = 0;i < bytes.length; i++) {
81
+ hex.push((bytes[i] >>> 4).toString(16));
82
+ hex.push((bytes[i] & 15).toString(16));
83
+ }
84
+ return hex.join("");
85
+ },
86
+ hexToBytes: function(hex) {
87
+ for (var bytes = [], c = 0;c < hex.length; c += 2)
88
+ bytes.push(parseInt(hex.substr(c, 2), 16));
89
+ return bytes;
90
+ },
91
+ bytesToBase64: function(bytes) {
92
+ for (var base64 = [], i = 0;i < bytes.length; i += 3) {
93
+ var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];
94
+ for (var j = 0;j < 4; j++)
95
+ if (i * 8 + j * 6 <= bytes.length * 8)
96
+ base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
97
+ else
98
+ base64.push("=");
99
+ }
100
+ return base64.join("");
101
+ },
102
+ base64ToBytes: function(base64) {
103
+ base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
104
+ for (var bytes = [], i = 0, imod4 = 0;i < base64.length; imod4 = ++i % 4) {
105
+ if (imod4 == 0)
106
+ continue;
107
+ bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);
108
+ }
109
+ return bytes;
110
+ }
111
+ };
112
+ module.exports = crypt;
113
+ })();
114
+ });
115
+
116
+ // node_modules/charenc/charenc.js
117
+ var require_charenc = __commonJS((exports, module) => {
118
+ var charenc = {
119
+ utf8: {
120
+ stringToBytes: function(str) {
121
+ return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
122
+ },
123
+ bytesToString: function(bytes) {
124
+ return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
125
+ }
126
+ },
127
+ bin: {
128
+ stringToBytes: function(str) {
129
+ for (var bytes = [], i = 0;i < str.length; i++)
130
+ bytes.push(str.charCodeAt(i) & 255);
131
+ return bytes;
132
+ },
133
+ bytesToString: function(bytes) {
134
+ for (var str = [], i = 0;i < bytes.length; i++)
135
+ str.push(String.fromCharCode(bytes[i]));
136
+ return str.join("");
137
+ }
138
+ }
139
+ };
140
+ module.exports = charenc;
141
+ });
142
+
143
+ // node_modules/is-buffer/index.js
144
+ var require_is_buffer = __commonJS((exports, module) => {
145
+ /*!
146
+ * Determine if an object is a Buffer
147
+ *
148
+ * @author Feross Aboukhadijeh <https://feross.org>
149
+ * @license MIT
150
+ */
151
+ module.exports = function(obj) {
152
+ return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
153
+ };
154
+ function isBuffer(obj) {
155
+ return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
156
+ }
157
+ function isSlowBuffer(obj) {
158
+ return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer(obj.slice(0, 0));
159
+ }
160
+ });
161
+
162
+ // node_modules/md5/md5.js
163
+ var require_md5 = __commonJS((exports, module) => {
164
+ (function() {
165
+ var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer = require_is_buffer(), bin = require_charenc().bin, md5 = function(message, options) {
166
+ if (message.constructor == String)
167
+ if (options && options.encoding === "binary")
168
+ message = bin.stringToBytes(message);
169
+ else
170
+ message = utf8.stringToBytes(message);
171
+ else if (isBuffer(message))
172
+ message = Array.prototype.slice.call(message, 0);
173
+ else if (!Array.isArray(message) && message.constructor !== Uint8Array)
174
+ message = message.toString();
175
+ var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
176
+ for (var i = 0;i < m.length; i++) {
177
+ m[i] = (m[i] << 8 | m[i] >>> 24) & 16711935 | (m[i] << 24 | m[i] >>> 8) & 4278255360;
178
+ }
179
+ m[l >>> 5] |= 128 << l % 32;
180
+ m[(l + 64 >>> 9 << 4) + 14] = l;
181
+ var { _ff: FF, _gg: GG, _hh: HH, _ii: II } = md5;
182
+ for (var i = 0;i < m.length; i += 16) {
183
+ var aa = a, bb = b, cc = c, dd = d;
184
+ a = FF(a, b, c, d, m[i + 0], 7, -680876936);
185
+ d = FF(d, a, b, c, m[i + 1], 12, -389564586);
186
+ c = FF(c, d, a, b, m[i + 2], 17, 606105819);
187
+ b = FF(b, c, d, a, m[i + 3], 22, -1044525330);
188
+ a = FF(a, b, c, d, m[i + 4], 7, -176418897);
189
+ d = FF(d, a, b, c, m[i + 5], 12, 1200080426);
190
+ c = FF(c, d, a, b, m[i + 6], 17, -1473231341);
191
+ b = FF(b, c, d, a, m[i + 7], 22, -45705983);
192
+ a = FF(a, b, c, d, m[i + 8], 7, 1770035416);
193
+ d = FF(d, a, b, c, m[i + 9], 12, -1958414417);
194
+ c = FF(c, d, a, b, m[i + 10], 17, -42063);
195
+ b = FF(b, c, d, a, m[i + 11], 22, -1990404162);
196
+ a = FF(a, b, c, d, m[i + 12], 7, 1804603682);
197
+ d = FF(d, a, b, c, m[i + 13], 12, -40341101);
198
+ c = FF(c, d, a, b, m[i + 14], 17, -1502002290);
199
+ b = FF(b, c, d, a, m[i + 15], 22, 1236535329);
200
+ a = GG(a, b, c, d, m[i + 1], 5, -165796510);
201
+ d = GG(d, a, b, c, m[i + 6], 9, -1069501632);
202
+ c = GG(c, d, a, b, m[i + 11], 14, 643717713);
203
+ b = GG(b, c, d, a, m[i + 0], 20, -373897302);
204
+ a = GG(a, b, c, d, m[i + 5], 5, -701558691);
205
+ d = GG(d, a, b, c, m[i + 10], 9, 38016083);
206
+ c = GG(c, d, a, b, m[i + 15], 14, -660478335);
207
+ b = GG(b, c, d, a, m[i + 4], 20, -405537848);
208
+ a = GG(a, b, c, d, m[i + 9], 5, 568446438);
209
+ d = GG(d, a, b, c, m[i + 14], 9, -1019803690);
210
+ c = GG(c, d, a, b, m[i + 3], 14, -187363961);
211
+ b = GG(b, c, d, a, m[i + 8], 20, 1163531501);
212
+ a = GG(a, b, c, d, m[i + 13], 5, -1444681467);
213
+ d = GG(d, a, b, c, m[i + 2], 9, -51403784);
214
+ c = GG(c, d, a, b, m[i + 7], 14, 1735328473);
215
+ b = GG(b, c, d, a, m[i + 12], 20, -1926607734);
216
+ a = HH(a, b, c, d, m[i + 5], 4, -378558);
217
+ d = HH(d, a, b, c, m[i + 8], 11, -2022574463);
218
+ c = HH(c, d, a, b, m[i + 11], 16, 1839030562);
219
+ b = HH(b, c, d, a, m[i + 14], 23, -35309556);
220
+ a = HH(a, b, c, d, m[i + 1], 4, -1530992060);
221
+ d = HH(d, a, b, c, m[i + 4], 11, 1272893353);
222
+ c = HH(c, d, a, b, m[i + 7], 16, -155497632);
223
+ b = HH(b, c, d, a, m[i + 10], 23, -1094730640);
224
+ a = HH(a, b, c, d, m[i + 13], 4, 681279174);
225
+ d = HH(d, a, b, c, m[i + 0], 11, -358537222);
226
+ c = HH(c, d, a, b, m[i + 3], 16, -722521979);
227
+ b = HH(b, c, d, a, m[i + 6], 23, 76029189);
228
+ a = HH(a, b, c, d, m[i + 9], 4, -640364487);
229
+ d = HH(d, a, b, c, m[i + 12], 11, -421815835);
230
+ c = HH(c, d, a, b, m[i + 15], 16, 530742520);
231
+ b = HH(b, c, d, a, m[i + 2], 23, -995338651);
232
+ a = II(a, b, c, d, m[i + 0], 6, -198630844);
233
+ d = II(d, a, b, c, m[i + 7], 10, 1126891415);
234
+ c = II(c, d, a, b, m[i + 14], 15, -1416354905);
235
+ b = II(b, c, d, a, m[i + 5], 21, -57434055);
236
+ a = II(a, b, c, d, m[i + 12], 6, 1700485571);
237
+ d = II(d, a, b, c, m[i + 3], 10, -1894986606);
238
+ c = II(c, d, a, b, m[i + 10], 15, -1051523);
239
+ b = II(b, c, d, a, m[i + 1], 21, -2054922799);
240
+ a = II(a, b, c, d, m[i + 8], 6, 1873313359);
241
+ d = II(d, a, b, c, m[i + 15], 10, -30611744);
242
+ c = II(c, d, a, b, m[i + 6], 15, -1560198380);
243
+ b = II(b, c, d, a, m[i + 13], 21, 1309151649);
244
+ a = II(a, b, c, d, m[i + 4], 6, -145523070);
245
+ d = II(d, a, b, c, m[i + 11], 10, -1120210379);
246
+ c = II(c, d, a, b, m[i + 2], 15, 718787259);
247
+ b = II(b, c, d, a, m[i + 9], 21, -343485551);
248
+ a = a + aa >>> 0;
249
+ b = b + bb >>> 0;
250
+ c = c + cc >>> 0;
251
+ d = d + dd >>> 0;
252
+ }
253
+ return crypt.endian([a, b, c, d]);
254
+ };
255
+ md5._ff = function(a, b, c, d, x, s, t) {
256
+ var n = a + (b & c | ~b & d) + (x >>> 0) + t;
257
+ return (n << s | n >>> 32 - s) + b;
258
+ };
259
+ md5._gg = function(a, b, c, d, x, s, t) {
260
+ var n = a + (b & d | c & ~d) + (x >>> 0) + t;
261
+ return (n << s | n >>> 32 - s) + b;
262
+ };
263
+ md5._hh = function(a, b, c, d, x, s, t) {
264
+ var n = a + (b ^ c ^ d) + (x >>> 0) + t;
265
+ return (n << s | n >>> 32 - s) + b;
266
+ };
267
+ md5._ii = function(a, b, c, d, x, s, t) {
268
+ var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
269
+ return (n << s | n >>> 32 - s) + b;
270
+ };
271
+ md5._blocksize = 16;
272
+ md5._digestsize = 16;
273
+ module.exports = function(message, options) {
274
+ if (message === undefined || message === null)
275
+ throw new Error("Illegal argument " + message);
276
+ var digestbytes = crypt.wordsToBytes(md5(message, options));
277
+ return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
278
+ };
279
+ })();
280
+ });
281
+
282
+ // opsgenie.ts
283
+ var import_md5 = __toESM(require_md5(), 1);
284
+ function getGenieKey(key) {
285
+ return key || process.env["SKYNET_OPSGENIE_API_KEY"];
286
+ }
287
+ function getGenieEndPoint() {
288
+ return process.env["SKYNET_OPSGENIE_END_POINT"] || "https://api.opsgenie.com/v2/alerts";
289
+ }
290
+ async function postGenieMessage(body, apiKey, verbose) {
291
+ try {
292
+ const genieKey = apiKey || getGenieKey();
293
+ const genieEndPoint = getGenieEndPoint();
294
+ if (!body.alias) {
295
+ body.alias = import_md5.default(body.message);
296
+ }
297
+ if (verbose) {
298
+ console.log(`Making API call to Opsgenie`, JSON.stringify(body, null, 2));
299
+ }
300
+ const response = await fetch(genieEndPoint, {
301
+ method: "POST",
302
+ headers: {
303
+ "Content-Type": "application/json",
304
+ Authorization: `GenieKey ${genieKey}`
305
+ },
306
+ body: JSON.stringify(body)
307
+ });
308
+ const result = await response.json();
309
+ if (verbose) {
310
+ console.log(`Result of API call to Opsgenie... ${result}`);
311
+ }
312
+ return result;
313
+ } catch (error) {
314
+ console.error("Failed to make opsgenie API call", error);
315
+ throw error;
316
+ }
317
+ }
318
+ export {
319
+ postGenieMessage
320
+ };
package/dist/por.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ export interface UserLiability {
2
+ userHash: string;
3
+ balance: number;
4
+ token?: string;
5
+ }
6
+ export interface MerkleProof {
7
+ userHash: string;
8
+ balance: number;
9
+ token?: string;
10
+ proof: string[];
11
+ positions: ('left' | 'right')[];
12
+ rootHash: string;
13
+ leafIndex: number;
14
+ hashFunction?: (data: string) => string;
15
+ }
16
+ export interface MerkleNode {
17
+ hash: string;
18
+ left?: MerkleNode;
19
+ right?: MerkleNode;
20
+ data?: UserLiability;
21
+ }
22
+ export declare class MerkleTreePoR {
23
+ private leaves;
24
+ private tree;
25
+ private userMap;
26
+ private userData;
27
+ private hashFunction;
28
+ constructor(users: UserLiability[], hashFunction?: (data: string) => string);
29
+ private static defaultSHA256Hash;
30
+ private defaultSHA256Hash;
31
+ private hash;
32
+ private createLeafHash;
33
+ private buildTree;
34
+ getRootHash(): string;
35
+ generateProof(userHash: string, token?: string): MerkleProof;
36
+ static verifyProof(merkleProof: MerkleProof): boolean;
37
+ }
38
+ //# sourceMappingURL=por.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"por.d.ts","sourceRoot":"","sources":["../por.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,YAAY,CAA2B;gBAEnC,KAAK,EAAE,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;IAO3E,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,SAAS;IAgDjB,WAAW,IAAI,MAAM;IAQrB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW;IA4C5D,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;CAkBtD"}
package/dist/por.js ADDED
@@ -0,0 +1,164 @@
1
+ // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __toESM = (mod, isNodeMode, target) => {
9
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
10
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
11
+ for (let key of __getOwnPropNames(mod))
12
+ if (!__hasOwnProp.call(to, key))
13
+ __defProp(to, key, {
14
+ get: () => mod[key],
15
+ enumerable: true
16
+ });
17
+ return to;
18
+ };
19
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
20
+ var __toCommonJS = (from) => {
21
+ var entry = __moduleCache.get(from), desc;
22
+ if (entry)
23
+ return entry;
24
+ entry = __defProp({}, "__esModule", { value: true });
25
+ if (from && typeof from === "object" || typeof from === "function")
26
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
27
+ get: () => from[key],
28
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
29
+ }));
30
+ __moduleCache.set(from, entry);
31
+ return entry;
32
+ };
33
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
+ var __export = (target, all) => {
35
+ for (var name in all)
36
+ __defProp(target, name, {
37
+ get: all[name],
38
+ enumerable: true,
39
+ configurable: true,
40
+ set: (newValue) => all[name] = () => newValue
41
+ });
42
+ };
43
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
44
+ var __require = import.meta.require;
45
+
46
+ // por.ts
47
+ var {CryptoHasher } = globalThis.Bun;
48
+
49
+ class MerkleTreePoR {
50
+ leaves = [];
51
+ tree = [];
52
+ userMap = new Map;
53
+ userData = [];
54
+ hashFunction;
55
+ constructor(users, hashFunction) {
56
+ this.userData = [...users];
57
+ this.hashFunction = hashFunction || this.defaultSHA256Hash;
58
+ this.buildTree();
59
+ }
60
+ static defaultSHA256Hash(data) {
61
+ const hasher = new CryptoHasher("sha256");
62
+ hasher.update(data);
63
+ return hasher.digest("hex");
64
+ }
65
+ defaultSHA256Hash(data) {
66
+ return MerkleTreePoR.defaultSHA256Hash(data);
67
+ }
68
+ hash(data) {
69
+ return this.hashFunction(data);
70
+ }
71
+ createLeafHash(user) {
72
+ const leafData = `${user.userHash}:${user.balance}:${user.token || ""}`;
73
+ return this.hash(leafData);
74
+ }
75
+ buildTree() {
76
+ if (this.userData.length === 0) {
77
+ throw new Error("Cannot build tree with empty user data");
78
+ }
79
+ this.leaves = this.userData.map((user, index) => {
80
+ const leafHash = this.createLeafHash(user);
81
+ this.userMap.set(`${user.userHash}:${user.token || ""}`, index);
82
+ return leafHash;
83
+ });
84
+ let currentLevel = this.leaves;
85
+ this.tree.push(currentLevel.map((hash) => ({ hash })));
86
+ while (currentLevel.length > 1) {
87
+ const nextLevel = [];
88
+ const nextLevelNodes = [];
89
+ for (let i = 0;i < currentLevel.length; i += 2) {
90
+ const left = currentLevel[i];
91
+ const right = i + 1 < currentLevel.length ? currentLevel[i + 1] : left;
92
+ const parentHash = this.hash(left + right);
93
+ nextLevel.push(parentHash);
94
+ const leftNode = this.tree[this.tree.length - 1][i];
95
+ const rightNode = i + 1 < currentLevel.length ? this.tree[this.tree.length - 1][i + 1] : leftNode;
96
+ nextLevelNodes.push({
97
+ hash: parentHash,
98
+ left: leftNode,
99
+ right: rightNode
100
+ });
101
+ }
102
+ currentLevel = nextLevel;
103
+ this.tree.push(nextLevelNodes);
104
+ }
105
+ }
106
+ getRootHash() {
107
+ if (this.tree.length === 0) {
108
+ throw new Error("Merkle tree not built");
109
+ }
110
+ return this.tree[this.tree.length - 1][0].hash;
111
+ }
112
+ generateProof(userHash, token) {
113
+ const key = `${userHash}:${token || ""}`;
114
+ const leafIndex = this.userMap.get(key);
115
+ if (leafIndex === undefined) {
116
+ throw new Error(`${userHash} not found in merkle tree for token ${token}`);
117
+ }
118
+ const user = this.userData[leafIndex];
119
+ const proof = [];
120
+ const positions = [];
121
+ let currentIndex = leafIndex;
122
+ for (let level = 0;level < this.tree.length - 1; level++) {
123
+ const currentLevelSize = this.tree[level].length;
124
+ const isRightNode = currentIndex % 2 === 1;
125
+ const siblingIndex = isRightNode ? currentIndex - 1 : currentIndex + 1;
126
+ if (siblingIndex < currentLevelSize) {
127
+ proof.push(this.tree[level][siblingIndex].hash);
128
+ positions.push(isRightNode ? "left" : "right");
129
+ } else {
130
+ proof.push(this.tree[level][currentIndex].hash);
131
+ positions.push(isRightNode ? "left" : "right");
132
+ }
133
+ currentIndex = Math.floor(currentIndex / 2);
134
+ }
135
+ return {
136
+ userHash: user.userHash,
137
+ balance: user.balance,
138
+ token: user.token,
139
+ proof,
140
+ positions,
141
+ rootHash: this.getRootHash(),
142
+ leafIndex,
143
+ hashFunction: this.hashFunction !== this.defaultSHA256Hash ? this.hashFunction : undefined
144
+ };
145
+ }
146
+ static verifyProof(merkleProof) {
147
+ const leafData = `${merkleProof.userHash}:${merkleProof.balance}:${merkleProof.token || ""}`;
148
+ const hashFunction = merkleProof.hashFunction || MerkleTreePoR.defaultSHA256Hash;
149
+ let currentHash = hashFunction(leafData);
150
+ for (let i = 0;i < merkleProof.proof.length; i++) {
151
+ const siblingHash = merkleProof.proof[i];
152
+ const position = merkleProof.positions[i];
153
+ if (position === "left") {
154
+ currentHash = hashFunction(siblingHash + currentHash);
155
+ } else {
156
+ currentHash = hashFunction(currentHash + siblingHash);
157
+ }
158
+ }
159
+ return currentHash === merkleProof.rootHash;
160
+ }
161
+ }
162
+ export {
163
+ MerkleTreePoR
164
+ };
package/dist/s3.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { S3Client, ObjectCannedACL } from "@aws-sdk/client-s3";
2
+ declare function getS3(forceNew?: boolean): S3Client;
3
+ declare function readFile(bucketName: string, key: string, verbose?: boolean): Promise<string>;
4
+ declare function hasFile(bucketName: string, key: string): Promise<boolean>;
5
+ declare function getFileSize(bucketName: string, key: string): Promise<number>;
6
+ declare function writeFile(bucketName: string, key: string, body: string, options?: {
7
+ verbose?: boolean;
8
+ skipIfExists?: boolean;
9
+ acl?: ObjectCannedACL;
10
+ contentType?: string;
11
+ }): Promise<void>;
12
+ declare function deleteFile(bucketName: string, key: string, verbose?: boolean): Promise<any>;
13
+ declare function listKeys(bucketName: string, prefix?: string, continuationToken?: string): Promise<{
14
+ keys: any[];
15
+ continuationToken?: undefined;
16
+ } | {
17
+ keys: string[];
18
+ continuationToken: string;
19
+ }>;
20
+ export { getS3, hasFile, readFile, writeFile, deleteFile, getFileSize, listKeys };
21
+ //# sourceMappingURL=s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../s3.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAQR,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAK5B,iBAAS,KAAK,CAAC,QAAQ,UAAQ,YAK9B;AAED,iBAAe,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,mBAmBvE;AAED,iBAAe,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,oBAcrD;AAED,iBAAe,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAUzD;AAED,iBAAe,SAAS,CACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,iBA2BP;AAED,iBAAe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,gBAkBzE;AAED,iBAAe,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;;;;;;GA4BtF;AAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}