@silvana-one/storage 0.1.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 (110) hide show
  1. package/README.md +1 -0
  2. package/dist/node/base64/bigint.d.ts +6 -0
  3. package/dist/node/base64/bigint.js +83 -0
  4. package/dist/node/base64/bigint.js.map +1 -0
  5. package/dist/node/base64/field.d.ts +5 -0
  6. package/dist/node/base64/field.js +29 -0
  7. package/dist/node/base64/field.js.map +1 -0
  8. package/dist/node/base64/index.d.ts +2 -0
  9. package/dist/node/base64/index.js +3 -0
  10. package/dist/node/base64/index.js.map +1 -0
  11. package/dist/node/index.cjs +735 -0
  12. package/dist/node/index.d.ts +5 -0
  13. package/dist/node/index.js +6 -0
  14. package/dist/node/index.js.map +1 -0
  15. package/dist/node/indexed-map/index.d.ts +1 -0
  16. package/dist/node/indexed-map/index.js +2 -0
  17. package/dist/node/indexed-map/index.js.map +1 -0
  18. package/dist/node/indexed-map/indexed-map.d.ts +39 -0
  19. package/dist/node/indexed-map/indexed-map.js +125 -0
  20. package/dist/node/indexed-map/indexed-map.js.map +1 -0
  21. package/dist/node/storage/index.d.ts +3 -0
  22. package/dist/node/storage/index.js +4 -0
  23. package/dist/node/storage/index.js.map +1 -0
  24. package/dist/node/storage/ipfs.d.ts +5 -0
  25. package/dist/node/storage/ipfs.js +16 -0
  26. package/dist/node/storage/ipfs.js.map +1 -0
  27. package/dist/node/storage/pinata.d.ts +6 -0
  28. package/dist/node/storage/pinata.js +40 -0
  29. package/dist/node/storage/pinata.js.map +1 -0
  30. package/dist/node/storage/storage.d.ts +78 -0
  31. package/dist/node/storage/storage.js +60 -0
  32. package/dist/node/storage/storage.js.map +1 -0
  33. package/dist/node/util/index.d.ts +1 -0
  34. package/dist/node/util/index.js +2 -0
  35. package/dist/node/util/index.js.map +1 -0
  36. package/dist/node/util/sleep.d.ts +1 -0
  37. package/dist/node/util/sleep.js +4 -0
  38. package/dist/node/util/sleep.js.map +1 -0
  39. package/dist/node/whitelist/index.d.ts +2 -0
  40. package/dist/node/whitelist/index.js +3 -0
  41. package/dist/node/whitelist/index.js.map +1 -0
  42. package/dist/node/whitelist/offchain-map.d.ts +352 -0
  43. package/dist/node/whitelist/offchain-map.js +247 -0
  44. package/dist/node/whitelist/offchain-map.js.map +1 -0
  45. package/dist/node/whitelist/whitelist.d.ts +122 -0
  46. package/dist/node/whitelist/whitelist.js +98 -0
  47. package/dist/node/whitelist/whitelist.js.map +1 -0
  48. package/dist/tsconfig.tsbuildinfo +1 -0
  49. package/dist/tsconfig.web.tsbuildinfo +1 -0
  50. package/dist/web/base64/bigint.d.ts +6 -0
  51. package/dist/web/base64/bigint.js +83 -0
  52. package/dist/web/base64/bigint.js.map +1 -0
  53. package/dist/web/base64/field.d.ts +5 -0
  54. package/dist/web/base64/field.js +29 -0
  55. package/dist/web/base64/field.js.map +1 -0
  56. package/dist/web/base64/index.d.ts +2 -0
  57. package/dist/web/base64/index.js +3 -0
  58. package/dist/web/base64/index.js.map +1 -0
  59. package/dist/web/index.d.ts +5 -0
  60. package/dist/web/index.js +6 -0
  61. package/dist/web/index.js.map +1 -0
  62. package/dist/web/indexed-map/index.d.ts +1 -0
  63. package/dist/web/indexed-map/index.js +2 -0
  64. package/dist/web/indexed-map/index.js.map +1 -0
  65. package/dist/web/indexed-map/indexed-map.d.ts +39 -0
  66. package/dist/web/indexed-map/indexed-map.js +125 -0
  67. package/dist/web/indexed-map/indexed-map.js.map +1 -0
  68. package/dist/web/storage/index.d.ts +3 -0
  69. package/dist/web/storage/index.js +4 -0
  70. package/dist/web/storage/index.js.map +1 -0
  71. package/dist/web/storage/ipfs.d.ts +5 -0
  72. package/dist/web/storage/ipfs.js +16 -0
  73. package/dist/web/storage/ipfs.js.map +1 -0
  74. package/dist/web/storage/pinata.d.ts +6 -0
  75. package/dist/web/storage/pinata.js +40 -0
  76. package/dist/web/storage/pinata.js.map +1 -0
  77. package/dist/web/storage/storage.d.ts +78 -0
  78. package/dist/web/storage/storage.js +60 -0
  79. package/dist/web/storage/storage.js.map +1 -0
  80. package/dist/web/util/index.d.ts +1 -0
  81. package/dist/web/util/index.js +2 -0
  82. package/dist/web/util/index.js.map +1 -0
  83. package/dist/web/util/sleep.d.ts +1 -0
  84. package/dist/web/util/sleep.js +4 -0
  85. package/dist/web/util/sleep.js.map +1 -0
  86. package/dist/web/whitelist/index.d.ts +2 -0
  87. package/dist/web/whitelist/index.js +3 -0
  88. package/dist/web/whitelist/index.js.map +1 -0
  89. package/dist/web/whitelist/offchain-map.d.ts +352 -0
  90. package/dist/web/whitelist/offchain-map.js +247 -0
  91. package/dist/web/whitelist/offchain-map.js.map +1 -0
  92. package/dist/web/whitelist/whitelist.d.ts +122 -0
  93. package/dist/web/whitelist/whitelist.js +98 -0
  94. package/dist/web/whitelist/whitelist.js.map +1 -0
  95. package/package.json +60 -0
  96. package/src/base64/bigint.ts +87 -0
  97. package/src/base64/field.ts +34 -0
  98. package/src/base64/index.ts +2 -0
  99. package/src/index.ts +5 -0
  100. package/src/indexed-map/index.ts +1 -0
  101. package/src/indexed-map/indexed-map.ts +189 -0
  102. package/src/storage/index.ts +3 -0
  103. package/src/storage/ipfs.ts +20 -0
  104. package/src/storage/pinata.ts +56 -0
  105. package/src/storage/storage.ts +65 -0
  106. package/src/util/index.ts +1 -0
  107. package/src/util/sleep.ts +3 -0
  108. package/src/whitelist/index.ts +2 -0
  109. package/src/whitelist/offchain-map.ts +341 -0
  110. package/src/whitelist/whitelist.ts +139 -0
@@ -0,0 +1,6 @@
1
+ export declare function bigintToBase56(value: bigint): string;
2
+ export declare function bigintFromBase56(str: string): bigint;
3
+ export declare function bigintToBase64(value: bigint): string;
4
+ export declare function bigintFromBase64(str: string): bigint;
5
+ export declare function fromBase(digits: bigint[], base: bigint): bigint;
6
+ export declare function toBase(x: bigint, base: bigint): bigint[];
@@ -0,0 +1,83 @@
1
+ // URL friendly base64 encoding
2
+ const TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
3
+ export function bigintToBase56(value) {
4
+ const digits = toBase(value, 56n);
5
+ //console.log("digits:", digits);
6
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
7
+ //console.log("str:", str);
8
+ return str;
9
+ }
10
+ export function bigintFromBase56(str) {
11
+ const base56Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
12
+ const x = fromBase(base56Digits, 56n);
13
+ return x;
14
+ }
15
+ export function bigintToBase64(value) {
16
+ const digits = toBase(value, 64n);
17
+ //console.log("digits:", digits);
18
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
19
+ //console.log("str:", str);
20
+ return str;
21
+ }
22
+ export function bigintFromBase64(str) {
23
+ const base64Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
24
+ const x = fromBase(base64Digits, 64n);
25
+ return x;
26
+ }
27
+ export function fromBase(digits, base) {
28
+ if (base <= 0n)
29
+ throw Error("fromBase: base must be positive");
30
+ // compute powers base, base^2, base^4, ..., base^(2^k)
31
+ // with largest k s.t. n = 2^k < digits.length
32
+ let basePowers = [];
33
+ for (let power = base, n = 1; n < digits.length; power **= 2n, n *= 2) {
34
+ basePowers.push(power);
35
+ }
36
+ let k = basePowers.length;
37
+ // pad digits array with zeros s.t. digits.length === 2^k
38
+ digits = digits.concat(Array(2 ** k - digits.length).fill(0n));
39
+ // accumulate [x0, x1, x2, x3, ...] -> [x0 + base*x1, x2 + base*x3, ...] -> [x0 + base*x1 + base^2*(x2 + base*x3), ...] -> ...
40
+ // until we end up with a single element
41
+ for (let i = 0; i < k; i++) {
42
+ let newDigits = Array(digits.length >> 1);
43
+ let basePower = basePowers[i];
44
+ for (let j = 0; j < newDigits.length; j++) {
45
+ newDigits[j] = digits[2 * j] + basePower * digits[2 * j + 1];
46
+ }
47
+ digits = newDigits;
48
+ }
49
+ console.assert(digits.length === 1);
50
+ let [digit] = digits;
51
+ return digit;
52
+ }
53
+ export function toBase(x, base) {
54
+ if (base <= 0n)
55
+ throw Error("toBase: base must be positive");
56
+ // compute powers base, base^2, base^4, ..., base^(2^k)
57
+ // with largest k s.t. base^(2^k) < x
58
+ let basePowers = [];
59
+ for (let power = base; power <= x; power **= 2n) {
60
+ basePowers.push(power);
61
+ }
62
+ let digits = [x]; // single digit w.r.t base^(2^(k+1))
63
+ // successively split digits w.r.t. base^(2^j) into digits w.r.t. base^(2^(j-1))
64
+ // until we arrive at digits w.r.t. base
65
+ let k = basePowers.length;
66
+ for (let i = 0; i < k; i++) {
67
+ let newDigits = Array(2 * digits.length);
68
+ let basePower = basePowers[k - 1 - i];
69
+ for (let j = 0; j < digits.length; j++) {
70
+ let x = digits[j];
71
+ let high = x / basePower;
72
+ newDigits[2 * j + 1] = high;
73
+ newDigits[2 * j] = x - high * basePower;
74
+ }
75
+ digits = newDigits;
76
+ }
77
+ // pop "leading" zero digits
78
+ while (digits[digits.length - 1] === 0n) {
79
+ digits.pop();
80
+ }
81
+ return digits;
82
+ }
83
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../../src/base64/bigint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Field } from "o1js";
2
+ export declare function fieldToBase56(field: Field): string;
3
+ export declare function fieldFromBase56(str: string): Field;
4
+ export declare function fieldToBase64(field: Field): string;
5
+ export declare function fieldFromBase64(str: string): Field;
@@ -0,0 +1,29 @@
1
+ import { Field } from "o1js";
2
+ import { toBase, fromBase } from "./bigint.js";
3
+ // URL friendly base64 encoding
4
+ const TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
5
+ export function fieldToBase56(field) {
6
+ const digits = toBase(field.toBigInt(), 56n);
7
+ //console.log("digits:", digits);
8
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
9
+ //console.log("str:", str);
10
+ return str;
11
+ }
12
+ export function fieldFromBase56(str) {
13
+ const base56Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
14
+ const x = fromBase(base56Digits, 56n);
15
+ return Field(x);
16
+ }
17
+ export function fieldToBase64(field) {
18
+ const digits = toBase(field.toBigInt(), 64n);
19
+ //console.log("digits:", digits);
20
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
21
+ //console.log("str:", str);
22
+ return str;
23
+ }
24
+ export function fieldFromBase64(str) {
25
+ const base64Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
26
+ const x = fromBase(base64Digits, 64n);
27
+ return Field(x);
28
+ }
29
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/base64/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,+BAA+B;AAC/B,MAAM,KAAK,GACT,kEAAkE,CAAC;AAErE,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,iCAAiC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,2BAA2B;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,iCAAiC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,2BAA2B;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./bigint.js";
2
+ export * from "./field.js";
@@ -0,0 +1,3 @@
1
+ export * from "./bigint.js";
2
+ export * from "./field.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base64/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./base64/index.js";
2
+ export * from "./indexed-map/index.js";
3
+ export * from "./storage/index.js";
4
+ export * from "./util/index.js";
5
+ export * from "./whitelist/index.js";
@@ -0,0 +1,6 @@
1
+ export * from "./base64/index.js";
2
+ export * from "./indexed-map/index.js";
3
+ export * from "./storage/index.js";
4
+ export * from "./util/index.js";
5
+ export * from "./whitelist/index.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./indexed-map.js";
@@ -0,0 +1,2 @@
1
+ export * from "./indexed-map.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexed-map/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Experimental } from "o1js";
2
+ declare const IndexedMerkleMap: typeof import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMap;
3
+ type IndexedMerkleMap = Experimental.IndexedMerkleMap;
4
+ export interface IndexedMapSerialized {
5
+ height: number;
6
+ root: string;
7
+ length: string;
8
+ nodes: string;
9
+ sortedLeaves: string;
10
+ }
11
+ export type IndexedMapSerializedJson = {
12
+ [key: string]: {
13
+ map: IndexedMapSerialized;
14
+ };
15
+ };
16
+ export declare function loadIndexedMerkleMap(params: {
17
+ url: string;
18
+ type: ReturnType<typeof IndexedMerkleMap>;
19
+ name?: string;
20
+ timeout?: number;
21
+ attempts?: number;
22
+ }): Promise<import("node_modules/o1js/dist/node/lib/provable/merkle-tree-indexed.js").IndexedMerkleMapBase>;
23
+ export declare function saveIndexedMerkleMap(params: {
24
+ map: IndexedMerkleMap;
25
+ name?: string;
26
+ filename?: string;
27
+ keyvalues?: {
28
+ key: string;
29
+ value: string;
30
+ }[];
31
+ auth: string;
32
+ }): Promise<string | undefined>;
33
+ export declare function serializeIndexedMap(map: IndexedMerkleMap): IndexedMapSerialized;
34
+ export declare function deserializeIndexedMerkleMap(params: {
35
+ serializedIndexedMap: IndexedMapSerialized;
36
+ type?: ReturnType<typeof IndexedMerkleMap>;
37
+ }): InstanceType<ReturnType<typeof IndexedMerkleMap>> | undefined;
38
+ export declare function parseIndexedMapSerialized(serializedMap: string): IndexedMapSerialized;
39
+ export {};
@@ -0,0 +1,125 @@
1
+ import { Experimental, Field } from "o1js";
2
+ import { bigintToBase64, bigintFromBase64 } from "../base64/bigint.js";
3
+ import { sleep } from "../util/sleep.js";
4
+ import { pinJSON } from "../storage/pinata.js";
5
+ const { IndexedMerkleMap } = Experimental;
6
+ export async function loadIndexedMerkleMap(params) {
7
+ const { url, type, name = "indexed-map", timeout = 60000, attempts = 5, } = params;
8
+ let attempt = 0;
9
+ const start = Date.now();
10
+ let response = await fetch(url);
11
+ while (!response.ok && attempt < attempts && Date.now() - start < timeout) {
12
+ attempt++;
13
+ await sleep(5000 * attempt); // handle rate limiting
14
+ response = await fetch(url);
15
+ }
16
+ if (!response.ok) {
17
+ throw new Error("Failed to fetch IndexedMerkleMap");
18
+ }
19
+ const json = await response.json();
20
+ const serializedIndexedMap = json[name].map;
21
+ if (!serializedIndexedMap)
22
+ throw new Error("wrong IndexedMerkleMap json format");
23
+ const map = deserializeIndexedMerkleMapInternal({
24
+ serializedIndexedMap,
25
+ type,
26
+ });
27
+ if (!map) {
28
+ throw new Error("Failed to deserialize whitelist");
29
+ }
30
+ return map;
31
+ }
32
+ export async function saveIndexedMerkleMap(params) {
33
+ const { map, name = "indexed-map", keyvalues, auth, filename = "indexed-map", } = params;
34
+ const serialized = serializeIndexedMap(map);
35
+ const json = { [name]: { map: serialized } };
36
+ const ipfsHash = await pinJSON({
37
+ data: json,
38
+ name: filename,
39
+ keyvalues,
40
+ auth,
41
+ });
42
+ return ipfsHash;
43
+ }
44
+ export function serializeIndexedMap(map) {
45
+ return {
46
+ height: map.height,
47
+ root: map.root.toJSON(),
48
+ length: map.length.toJSON(),
49
+ nodes: JSON.stringify(map.data.get().nodes, (_, v) => typeof v === "bigint" ? "n" + bigintToBase64(v) : v),
50
+ sortedLeaves: JSON.stringify(map.data
51
+ .get()
52
+ .sortedLeaves.map((v) => [
53
+ bigintToBase64(v.key),
54
+ bigintToBase64(v.nextKey),
55
+ bigintToBase64(v.value),
56
+ bigintToBase64(BigInt(v.index)),
57
+ ])),
58
+ };
59
+ }
60
+ export function deserializeIndexedMerkleMap(params) {
61
+ try {
62
+ const { serializedIndexedMap, type } = params;
63
+ return deserializeIndexedMerkleMapInternal({
64
+ serializedIndexedMap,
65
+ type: type ?? IndexedMerkleMap(serializedIndexedMap.height),
66
+ });
67
+ }
68
+ catch (error) {
69
+ console.error("Error deserializing map:", error?.message ?? error);
70
+ return undefined;
71
+ }
72
+ }
73
+ export function parseIndexedMapSerialized(serializedMap) {
74
+ const json = JSON.parse(serializedMap);
75
+ if (json.height === undefined ||
76
+ json.root === undefined ||
77
+ json.length === undefined ||
78
+ json.nodes === undefined ||
79
+ json.sortedLeaves === undefined)
80
+ throw new Error("wrong IndexedMerkleMap json format");
81
+ if (typeof json.height !== "number")
82
+ throw new Error("wrong IndexedMerkleMap height format");
83
+ if (typeof json.root !== "string")
84
+ throw new Error("wrong IndexedMerkleMap root format");
85
+ if (typeof json.length !== "string")
86
+ throw new Error("wrong IndexedMerkleMap length format");
87
+ if (typeof json.nodes !== "string")
88
+ throw new Error("wrong IndexedMerkleMap nodes format");
89
+ if (typeof json.sortedLeaves !== "string")
90
+ throw new Error("wrong IndexedMerkleMap sortedLeaves format");
91
+ return json;
92
+ }
93
+ function deserializeIndexedMerkleMapInternal(params) {
94
+ const { serializedIndexedMap, type } = params;
95
+ const map = new type();
96
+ if (serializedIndexedMap.height !== map.height) {
97
+ throw new Error("wrong IndexedMap height");
98
+ }
99
+ const nodes = JSON.parse(serializedIndexedMap.nodes, (_, v) => {
100
+ // Check if the value is a string that represents a BigInt
101
+ if (typeof v === "string" && v[0] === "n") {
102
+ // Remove the first 'n' and convert the string to a BigInt
103
+ return bigintFromBase64(v.slice(1));
104
+ }
105
+ return v;
106
+ });
107
+ const sortedLeaves = JSON.parse(serializedIndexedMap.sortedLeaves).map((row) => {
108
+ return {
109
+ key: bigintFromBase64(row[0]),
110
+ nextKey: bigintFromBase64(row[1]),
111
+ value: bigintFromBase64(row[2]),
112
+ index: Number(bigintFromBase64(row[3])),
113
+ };
114
+ });
115
+ map.root = Field.fromJSON(serializedIndexedMap.root);
116
+ map.length = Field.fromJSON(serializedIndexedMap.length);
117
+ map.data.updateAsProver(() => {
118
+ return {
119
+ nodes: nodes.map((row) => [...row]),
120
+ sortedLeaves: [...sortedLeaves],
121
+ };
122
+ });
123
+ return map;
124
+ }
125
+ //# sourceMappingURL=indexed-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-map.js","sourceRoot":"","sources":["../../../src/indexed-map/indexed-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC;AAe1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAM1C;IACC,MAAM,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,GAAG,aAAa,EACpB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,CAAC,GACb,GAAG,MAAM,CAAC;IACX,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;QAC1E,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,uBAAuB;QACpD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,oBAAoB,GAAI,IAA4C,CACxE,IAAI,CACL,CAAC,GAAG,CAAC;IACN,IAAI,CAAC,oBAAoB;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,mCAAmC,CAAC;QAC9C,oBAAoB;QACpB,IAAI;KACL,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAM1C;IACC,MAAM,EACJ,GAAG,EACH,IAAI,GAAG,aAAa,EACpB,SAAS,EACT,IAAI,EACJ,QAAQ,GAAG,aAAa,GACzB,GAAG,MAAM,CAAC;IACX,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GAA6B,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,QAAQ;QACd,SAAS;QACT,IAAI;KACL,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAqB;IAErB,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;QAC3B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD;QACD,YAAY,EAAE,IAAI,CAAC,SAAS,CAC1B,GAAG,CAAC,IAAI;aACL,GAAG,EAAE;aACL,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;YACrB,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;YACzB,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;YACvB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAChC,CAAC,CACL;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAG3C;IACC,IAAI,CAAC;QACH,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAC9C,OAAO,mCAAmC,CAAC;YACzC,oBAAoB;YACpB,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,aAAqB;IAErB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvC,IACE,IAAI,CAAC,MAAM,KAAK,SAAS;QACzB,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,IAAI,CAAC,MAAM,KAAK,SAAS;QACzB,IAAI,CAAC,KAAK,KAAK,SAAS;QACxB,IAAI,CAAC,YAAY,KAAK,SAAS;QAE/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mCAAmC,CAAC,MAG5C;IACC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,oBAAoB,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5D,0DAA0D;QAC1D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1C,0DAA0D;YAC1D,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,GAAG,CACpE,CAAC,GAAQ,EAAE,EAAE;QACX,OAAO;YACL,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACzD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;QAC3B,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACxC,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;SAChC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./ipfs.js";
2
+ export * from "./pinata.js";
3
+ export * from "./storage.js";
@@ -0,0 +1,4 @@
1
+ export * from "./ipfs.js";
2
+ export * from "./pinata.js";
3
+ export * from "./storage.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function createIpfsURL(params: {
2
+ hash: string;
3
+ gateway?: string;
4
+ apiToken?: string;
5
+ }): string;
@@ -0,0 +1,16 @@
1
+ export function createIpfsURL(params) {
2
+ let { hash, gateway, apiToken } = params;
3
+ gateway ??=
4
+ process.env.PINATA_IPFS_GATEWAY ??
5
+ process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ??
6
+ process.env.REACT_APP_PINATA_IPFS_GATEWAY;
7
+ apiToken ??=
8
+ process.env.PINATA_GATEWAY_TOKEN ??
9
+ process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ??
10
+ process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
11
+ if (!gateway) {
12
+ gateway = "https://gateway.pinata.cloud/ipfs/";
13
+ }
14
+ return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
15
+ }
16
+ //# sourceMappingURL=ipfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/storage/ipfs.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACzC,OAAO;QACL,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,OAAO,CAAC,GAAG,CAAC,+BAA+B;YAC3C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IAC5C,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAChC,OAAO,CAAC,GAAG,CAAC,gCAAgC;YAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,oCAAoC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function pinJSON(params: {
2
+ data: string | object;
3
+ name?: string;
4
+ keyvalues?: object;
5
+ auth?: string;
6
+ }): Promise<string | undefined>;
@@ -0,0 +1,40 @@
1
+ export async function pinJSON(params) {
2
+ const { data, name = "data.json", keyvalues = { library: "zkcloudworker" }, } = params;
3
+ const auth = params.auth ??
4
+ process.env.PINATA_JWT ??
5
+ process.env.NEXT_PUBLIC_PINATA_JWT ??
6
+ process.env.REACT_APP_PINATA_JWT;
7
+ if (!auth)
8
+ throw new Error("pinJSON: auth, PINATA_JWT, NEXT_PUBLIC_PINATA_JWT or REACT_APP_PINATA_JWT should be defined");
9
+ try {
10
+ const pinataData = {
11
+ pinataOptions: {
12
+ cidVersion: 1,
13
+ },
14
+ pinataMetadata: {
15
+ name,
16
+ keyvalues,
17
+ },
18
+ pinataContent: data,
19
+ };
20
+ const res = await fetch("https://api.pinata.cloud/pinning/pinJSONToIPFS", {
21
+ method: "POST",
22
+ headers: {
23
+ "Content-Type": "application/json",
24
+ Authorization: "Bearer " + auth,
25
+ },
26
+ body: JSON.stringify(pinataData),
27
+ });
28
+ if (!res.ok) {
29
+ throw new Error(`Pinata error: status: ${res.status} ${res.statusText}`);
30
+ }
31
+ const responseData = await res.json();
32
+ console.log("saveToIPFS result:", responseData);
33
+ return responseData?.IpfsHash;
34
+ }
35
+ catch (error) {
36
+ console.error("saveToIPFS error:", error?.message);
37
+ return undefined;
38
+ }
39
+ }
40
+ //# sourceMappingURL=pinata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinata.js","sourceRoot":"","sources":["../../../src/storage/pinata.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAK7B;IACC,MAAM,EACJ,IAAI,EACJ,IAAI,GAAG,WAAW,EAClB,SAAS,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,GACzC,GAAG,MAAM,CAAC;IACX,MAAM,IAAI,GACR,MAAM,CAAC,IAAI;QACX,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACnC,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IAEJ,IAAI,CAAC;QACH,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE;gBACb,UAAU,EAAE,CAAC;aACd;YACD,cAAc,EAAE;gBACd,IAAI;gBACJ,SAAS;aACV;YACD,aAAa,EAAE,IAAI;SACpB,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gDAAgD,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,GAAG,IAAI;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QAChD,OACE,YACD,EAAE,QAAQ,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { Field, Bool } from "o1js";
2
+ export type IpfsHash = string;
3
+ declare const Storage_base: (new (value: {
4
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
5
+ }) => {
6
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
7
+ }) & {
8
+ _isStruct: true;
9
+ } & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
10
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
11
+ }, {
12
+ url: bigint[];
13
+ }>, "fromFields"> & {
14
+ fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
15
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
16
+ };
17
+ } & {
18
+ fromValue: (value: {
19
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[];
20
+ }) => {
21
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
22
+ };
23
+ toInput: (x: {
24
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
25
+ }) => {
26
+ fields?: Field[] | undefined;
27
+ packed?: [Field, number][] | undefined;
28
+ };
29
+ toJSON: (x: {
30
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
31
+ }) => {
32
+ url: string[];
33
+ };
34
+ fromJSON: (x: {
35
+ url: string[];
36
+ }) => {
37
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
38
+ };
39
+ empty: () => {
40
+ url: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
41
+ };
42
+ };
43
+ /**
44
+ * Represents the off-chain storage information,
45
+ * such as an IPFS hash.
46
+ */
47
+ export declare class Storage extends Storage_base {
48
+ constructor(value: {
49
+ url: [Field, Field];
50
+ });
51
+ /**
52
+ * Asserts that two Storage instances are equal.
53
+ * @param a The first Storage instance.
54
+ * @param b The second Storage instance.
55
+ */
56
+ static assertEquals(a: Storage, b: Storage): void;
57
+ /**
58
+ * Checks if two Storage instances are equal.
59
+ * @param a The first Storage instance.
60
+ * @param b The second Storage instance.
61
+ * @returns A Bool indicating whether the two instances are equal.
62
+ */
63
+ static equals(a: Storage, b: Storage): Bool;
64
+ /**
65
+ * Creates a Storage instance from a string.
66
+ * @param url The string representing the storage URL.
67
+ * @returns A new Storage instance.
68
+ */
69
+ static fromString(url: IpfsHash): Storage;
70
+ /**
71
+ * Converts the Storage instance to a string.
72
+ * @returns The string representation of the storage URL.
73
+ */
74
+ toString(): IpfsHash;
75
+ static empty(): Storage;
76
+ isEmpty(): Bool;
77
+ }
78
+ export {};
@@ -0,0 +1,60 @@
1
+ import { Field, Struct, Encoding, Provable } from "o1js";
2
+ /**
3
+ * Represents the off-chain storage information,
4
+ * such as an IPFS hash.
5
+ */
6
+ export class Storage extends Struct({
7
+ url: Provable.Array(Field, 2),
8
+ }) {
9
+ constructor(value) {
10
+ super(value);
11
+ }
12
+ /**
13
+ * Asserts that two Storage instances are equal.
14
+ * @param a The first Storage instance.
15
+ * @param b The second Storage instance.
16
+ */
17
+ static assertEquals(a, b) {
18
+ a.url[0].assertEquals(b.url[0]);
19
+ a.url[1].assertEquals(b.url[1]);
20
+ }
21
+ /**
22
+ * Checks if two Storage instances are equal.
23
+ * @param a The first Storage instance.
24
+ * @param b The second Storage instance.
25
+ * @returns A Bool indicating whether the two instances are equal.
26
+ */
27
+ static equals(a, b) {
28
+ return a.url[0].equals(b.url[0]).and(a.url[1].equals(b.url[1]));
29
+ }
30
+ /**
31
+ * Creates a Storage instance from a string.
32
+ * @param url The string representing the storage URL.
33
+ * @returns A new Storage instance.
34
+ */
35
+ static fromString(url) {
36
+ if (url === "")
37
+ return Storage.empty();
38
+ const fields = Encoding.stringToFields(url);
39
+ if (fields.length !== 2)
40
+ throw new Error("Invalid string length");
41
+ return new Storage({ url: [fields[0], fields[1]] });
42
+ }
43
+ /**
44
+ * Converts the Storage instance to a string.
45
+ * @returns The string representation of the storage URL.
46
+ */
47
+ toString() {
48
+ if (this.isEmpty().toBoolean()) {
49
+ return "";
50
+ }
51
+ return Encoding.stringFromFields([this.url[0], this.url[1]]);
52
+ }
53
+ static empty() {
54
+ return new Storage({ url: [Field(0), Field(0)] });
55
+ }
56
+ isEmpty() {
57
+ return this.url[0].equals(Field(0)).and(this.url[1].equals(Field(0)));
58
+ }
59
+ }
60
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAQ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAG/D;;;GAGG;AACH,MAAM,OAAO,OAAQ,SAAQ,MAAM,CAAC;IAClC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;CAC9B,CAAC;IACA,YAAY,KAA8B;QACxC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAU,EAAE,CAAU;QACxC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,CAAU,EAAE,CAAU;QAClC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,GAAa;QAC7B,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAClE,OAAO,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export * from "./sleep.js";
@@ -0,0 +1,2 @@
1
+ export * from "./sleep.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function sleep(ms: number): Promise<unknown>;
@@ -0,0 +1,4 @@
1
+ export function sleep(ms) {
2
+ return new Promise((resolve) => setTimeout(resolve, ms));
3
+ }
4
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/util/sleep.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./whitelist.js";
2
+ export * from "./offchain-map.js";
@@ -0,0 +1,3 @@
1
+ export * from "./whitelist.js";
2
+ export * from "./offchain-map.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/whitelist/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}