@hashgraphonline/standards-sdk 0.0.63 → 0.0.65
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.
- package/dist/es/fees/fee-config-builder.d.ts.map +1 -0
- package/dist/es/fees/index.d.ts +3 -0
- package/dist/es/fees/index.d.ts.map +1 -0
- package/dist/es/fees/types.d.ts +24 -0
- package/dist/es/fees/types.d.ts.map +1 -0
- package/dist/es/hcs-10/base-client.d.ts +1 -1
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/hcs-10/browser.d.ts +20 -35
- package/dist/es/hcs-10/browser.d.ts.map +1 -1
- package/dist/es/hcs-10/index.d.ts +4 -6
- package/dist/es/hcs-10/index.d.ts.map +1 -1
- package/dist/es/hcs-10/registrations.d.ts.map +1 -1
- package/dist/es/hcs-10/sdk.d.ts +16 -8
- package/dist/es/hcs-10/sdk.d.ts.map +1 -1
- package/dist/es/hcs-10/types.d.ts +2 -62
- package/dist/es/hcs-10/types.d.ts.map +1 -1
- package/dist/es/hcs-11/agent-builder.d.ts +53 -0
- package/dist/es/hcs-11/agent-builder.d.ts.map +1 -0
- package/dist/es/hcs-11/client.d.ts +82 -0
- package/dist/es/hcs-11/client.d.ts.map +1 -0
- package/dist/es/hcs-11/index.d.ts +4 -190
- package/dist/es/hcs-11/index.d.ts.map +1 -1
- package/dist/es/hcs-11/person-builder.d.ts +29 -0
- package/dist/es/hcs-11/person-builder.d.ts.map +1 -0
- package/dist/es/hcs-11/types.d.ts +165 -0
- package/dist/es/hcs-11/types.d.ts.map +1 -0
- package/dist/es/index.d.ts +1 -0
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/services/mirror-node.d.ts +2 -1
- package/dist/es/services/mirror-node.d.ts.map +1 -1
- package/dist/es/services/types.d.ts +0 -1
- package/dist/es/services/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +9 -7
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es10.js +114 -1046
- package/dist/es/standards-sdk.es10.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +13 -36
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +36 -10
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +10 -53
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +47 -1275
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +1282 -25
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +31 -5
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +5 -158
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +147 -781
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +785 -166
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +2 -2
- package/dist/es/standards-sdk.es11.js +80 -71
- package/dist/es/standards-sdk.es11.js.map +1 -1
- package/dist/es/standards-sdk.es110.js +169 -16
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +19 -25
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +24 -23
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +23 -35
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +41 -0
- package/dist/es/standards-sdk.es114.js.map +1 -0
- package/dist/es/standards-sdk.es12.js +650 -7
- package/dist/es/standards-sdk.es12.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +10 -664
- package/dist/es/standards-sdk.es13.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +4 -1
- package/dist/es/standards-sdk.es14.js.map +1 -1
- package/dist/es/standards-sdk.es17.js +1 -1
- package/dist/es/standards-sdk.es18.js +3 -3
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +82 -1754
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es20.js +5 -3
- package/dist/es/standards-sdk.es20.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +1703 -4103
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +3 -36
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +4167 -48
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js +2 -2
- package/dist/es/standards-sdk.es25.js +36 -2
- package/dist/es/standards-sdk.es25.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +46 -1039
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +2 -5
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +1034 -94
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +419 -2
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +2 -16
- package/dist/es/standards-sdk.es30.js.map +1 -1
- package/dist/es/standards-sdk.es31.js +106 -395
- package/dist/es/standards-sdk.es31.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +3 -2282
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es34.js +3 -363
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es35.js +100 -5
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +2 -179
- package/dist/es/standards-sdk.es36.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +15 -80
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es38.js +400 -105
- package/dist/es/standards-sdk.es38.js.map +1 -1
- package/dist/es/standards-sdk.es39.js +2282 -52
- package/dist/es/standards-sdk.es39.js.map +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es40.js +364 -10
- package/dist/es/standards-sdk.es40.js.map +1 -1
- package/dist/es/standards-sdk.es41.js +5 -96
- package/dist/es/standards-sdk.es41.js.map +1 -1
- package/dist/es/standards-sdk.es42.js +178 -3
- package/dist/es/standards-sdk.es42.js.map +1 -1
- package/dist/es/standards-sdk.es43.js +81 -2
- package/dist/es/standards-sdk.es43.js.map +1 -1
- package/dist/es/standards-sdk.es44.js +104 -103
- package/dist/es/standards-sdk.es44.js.map +1 -1
- package/dist/es/standards-sdk.es45.js +49 -71
- package/dist/es/standards-sdk.es45.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +9 -5
- package/dist/es/standards-sdk.es46.js.map +1 -1
- package/dist/es/standards-sdk.es47.js +96 -4
- package/dist/es/standards-sdk.es47.js.map +1 -1
- package/dist/es/standards-sdk.es48.js +3 -220
- package/dist/es/standards-sdk.es48.js.map +1 -1
- package/dist/es/standards-sdk.es49.js +2 -58
- package/dist/es/standards-sdk.es49.js.map +1 -1
- package/dist/es/standards-sdk.es5.js +393 -891
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es50.js +112 -68
- package/dist/es/standards-sdk.es50.js.map +1 -1
- package/dist/es/standards-sdk.es51.js +74 -3
- package/dist/es/standards-sdk.es51.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +5 -31
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +4 -62
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +217 -46
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +57 -9
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +68 -64
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +32 -6
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +61 -13
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +50 -7
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +10 -45
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +65 -2
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +5 -135
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +13 -170
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +4 -10
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +45 -13
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +2 -4
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +134 -30
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +171 -14
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +13 -4
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +959 -94
- package/dist/es/standards-sdk.es7.js.map +1 -1
- package/dist/es/standards-sdk.es70.js +13 -4
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +31 -15
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +14 -4
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +4 -39
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +4 -40
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +15 -36
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +5 -78
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +39 -3
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +40 -2
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +37 -2
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +1049 -393
- package/dist/es/standards-sdk.es8.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +67 -408
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +3 -2
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +2 -120
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +2 -34
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +30 -29
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +33 -9
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +9 -34
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +34 -2
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +2 -84
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +82 -21
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es9.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +21 -146
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +130 -73
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +81 -185
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +163 -406
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +432 -19
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +16 -130
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +131 -10
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +11 -22
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +22 -22
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +21 -13
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/es/utils/logger.d.ts +1 -0
- package/dist/es/utils/logger.d.ts.map +1 -1
- package/dist/es/utils/types.d.ts +2 -0
- package/dist/es/utils/types.d.ts.map +1 -0
- package/dist/umd/fees/fee-config-builder.d.ts.map +1 -0
- package/dist/umd/fees/index.d.ts +3 -0
- package/dist/umd/fees/index.d.ts.map +1 -0
- package/dist/umd/fees/types.d.ts +24 -0
- package/dist/umd/fees/types.d.ts.map +1 -0
- package/dist/umd/hcs-10/base-client.d.ts +1 -1
- package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
- package/dist/umd/hcs-10/browser.d.ts +20 -35
- package/dist/umd/hcs-10/browser.d.ts.map +1 -1
- package/dist/umd/hcs-10/index.d.ts +4 -6
- package/dist/umd/hcs-10/index.d.ts.map +1 -1
- package/dist/umd/hcs-10/registrations.d.ts.map +1 -1
- package/dist/umd/hcs-10/sdk.d.ts +16 -8
- package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
- package/dist/umd/hcs-10/types.d.ts +2 -62
- package/dist/umd/hcs-10/types.d.ts.map +1 -1
- package/dist/umd/hcs-11/agent-builder.d.ts +53 -0
- package/dist/umd/hcs-11/agent-builder.d.ts.map +1 -0
- package/dist/umd/hcs-11/client.d.ts +82 -0
- package/dist/umd/hcs-11/client.d.ts.map +1 -0
- package/dist/umd/hcs-11/index.d.ts +4 -190
- package/dist/umd/hcs-11/index.d.ts.map +1 -1
- package/dist/umd/hcs-11/person-builder.d.ts +29 -0
- package/dist/umd/hcs-11/person-builder.d.ts.map +1 -0
- package/dist/umd/hcs-11/types.d.ts +165 -0
- package/dist/umd/hcs-11/types.d.ts.map +1 -0
- package/dist/umd/index.d.ts +1 -0
- package/dist/umd/index.d.ts.map +1 -1
- package/dist/umd/services/mirror-node.d.ts +2 -1
- package/dist/umd/services/mirror-node.d.ts.map +1 -1
- package/dist/umd/services/types.d.ts +0 -1
- package/dist/umd/services/types.d.ts.map +1 -1
- package/dist/umd/standards-sdk.umd.js +7 -7
- package/dist/umd/standards-sdk.umd.js.map +1 -1
- package/dist/umd/utils/logger.d.ts +1 -0
- package/dist/umd/utils/logger.d.ts.map +1 -1
- package/dist/umd/utils/types.d.ts +2 -0
- package/dist/umd/utils/types.d.ts.map +1 -0
- package/package.json +6 -4
- package/dist/es/hcs-10/agent-builder.d.ts +0 -45
- package/dist/es/hcs-10/agent-builder.d.ts.map +0 -1
- package/dist/es/hcs-10/fee-config-builder.d.ts.map +0 -1
- package/dist/umd/hcs-10/agent-builder.d.ts +0 -45
- package/dist/umd/hcs-10/agent-builder.d.ts.map +0 -1
- package/dist/umd/hcs-10/fee-config-builder.d.ts.map +0 -1
- /package/dist/es/{hcs-10 → fees}/fee-config-builder.d.ts +0 -0
- /package/dist/umd/{hcs-10 → fees}/fee-config-builder.d.ts +0 -0
|
@@ -1,26 +1,87 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
1
|
+
import { keccak256 } from "./standards-sdk.es90.js";
|
|
2
|
+
import { assertArgument } from "./standards-sdk.es91.js";
|
|
3
|
+
import { getBytes } from "./standards-sdk.es92.js";
|
|
4
|
+
const BN_0 = BigInt(0);
|
|
5
|
+
const BN_36 = BigInt(36);
|
|
6
|
+
function getChecksumAddress(address) {
|
|
7
|
+
address = address.toLowerCase();
|
|
8
|
+
const chars = address.substring(2).split("");
|
|
9
|
+
const expanded = new Uint8Array(40);
|
|
10
|
+
for (let i = 0; i < 40; i++) {
|
|
11
|
+
expanded[i] = chars[i].charCodeAt(0);
|
|
12
|
+
}
|
|
13
|
+
const hashed = getBytes(keccak256(expanded));
|
|
14
|
+
for (let i = 0; i < 40; i += 2) {
|
|
15
|
+
if (hashed[i >> 1] >> 4 >= 8) {
|
|
16
|
+
chars[i] = chars[i].toUpperCase();
|
|
17
|
+
}
|
|
18
|
+
if ((hashed[i >> 1] & 15) >= 8) {
|
|
19
|
+
chars[i + 1] = chars[i + 1].toUpperCase();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return "0x" + chars.join("");
|
|
11
23
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
const ibanLookup = {};
|
|
25
|
+
for (let i = 0; i < 10; i++) {
|
|
26
|
+
ibanLookup[String(i)] = String(i);
|
|
27
|
+
}
|
|
28
|
+
for (let i = 0; i < 26; i++) {
|
|
29
|
+
ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);
|
|
30
|
+
}
|
|
31
|
+
const safeDigits = 15;
|
|
32
|
+
function ibanChecksum(address) {
|
|
33
|
+
address = address.toUpperCase();
|
|
34
|
+
address = address.substring(4) + address.substring(0, 2) + "00";
|
|
35
|
+
let expanded = address.split("").map((c) => {
|
|
36
|
+
return ibanLookup[c];
|
|
37
|
+
}).join("");
|
|
38
|
+
while (expanded.length >= safeDigits) {
|
|
39
|
+
let block = expanded.substring(0, safeDigits);
|
|
40
|
+
expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);
|
|
19
41
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
42
|
+
let checksum = String(98 - parseInt(expanded, 10) % 97);
|
|
43
|
+
while (checksum.length < 2) {
|
|
44
|
+
checksum = "0" + checksum;
|
|
45
|
+
}
|
|
46
|
+
return checksum;
|
|
47
|
+
}
|
|
48
|
+
const Base36 = function() {
|
|
49
|
+
const result = {};
|
|
50
|
+
for (let i = 0; i < 36; i++) {
|
|
51
|
+
const key = "0123456789abcdefghijklmnopqrstuvwxyz"[i];
|
|
52
|
+
result[key] = BigInt(i);
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}();
|
|
56
|
+
function fromBase36(value) {
|
|
57
|
+
value = value.toLowerCase();
|
|
58
|
+
let result = BN_0;
|
|
59
|
+
for (let i = 0; i < value.length; i++) {
|
|
60
|
+
result = result * BN_36 + Base36[value[i]];
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
function getAddress(address) {
|
|
65
|
+
assertArgument(typeof address === "string", "invalid address", "address", address);
|
|
66
|
+
if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {
|
|
67
|
+
if (!address.startsWith("0x")) {
|
|
68
|
+
address = "0x" + address;
|
|
69
|
+
}
|
|
70
|
+
const result = getChecksumAddress(address);
|
|
71
|
+
assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, "bad address checksum", "address", address);
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {
|
|
75
|
+
assertArgument(address.substring(2, 4) === ibanChecksum(address), "bad icap checksum", "address", address);
|
|
76
|
+
let result = fromBase36(address.substring(4)).toString(16);
|
|
77
|
+
while (result.length < 40) {
|
|
78
|
+
result = "0" + result;
|
|
79
|
+
}
|
|
80
|
+
return getChecksumAddress("0x" + result);
|
|
81
|
+
}
|
|
82
|
+
assertArgument(false, "invalid address", "address", address);
|
|
83
|
+
}
|
|
23
84
|
export {
|
|
24
|
-
|
|
85
|
+
getAddress
|
|
25
86
|
};
|
|
26
87
|
//# sourceMappingURL=standards-sdk.es89.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es89.js","sources":["../../node_modules/ethers/lib.esm/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es89.js","sources":["../../node_modules/ethers/lib.esm/address/address.js"],"sourcesContent":["import { keccak256 } from \"../crypto/index.js\";\nimport { getBytes, assertArgument } from \"../utils/index.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = getBytes(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\n/**\n * Returns a normalized and checksumed address for %%address%%.\n * This accepts non-checksum addresses, checksum addresses and\n * [[getIcapAddress]] formats.\n *\n * The checksum in Ethereum uses the capitalization (upper-case\n * vs lower-case) of the characters within an address to encode\n * its checksum, which offers, on average, a checksum of 15-bits.\n *\n * If %%address%% contains both upper-case and lower-case, it is\n * assumed to already be a checksum address and its checksum is\n * validated, and if the address fails its expected checksum an\n * error is thrown.\n *\n * If you wish the checksum of %%address%% to be ignore, it should\n * be converted to lower-case (i.e. ``.toLowercase()``) before\n * being passed in. This should be a very rare situation though,\n * that you wish to bypass the safegaurds in place to protect\n * against an address that has been incorrectly copied from another\n * source.\n *\n * @example:\n * // Adds the checksum (via upper-casing specific letters)\n * getAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\")\n * //_result:\n *\n * // Converts ICAP address and adds checksum\n * getAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if an address contains mixed case,\n * // but the checksum fails\n * getAddress(\"0x8Ba1f109551bD432803012645Ac136ddd64DBA72\")\n * //_error:\n */\nexport function getAddress(address) {\n assertArgument(typeof (address) === \"string\", \"invalid address\", \"address\", address);\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n assertArgument(!address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) || result === address, \"bad address checksum\", \"address\", address);\n return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n assertArgument(address.substring(2, 4) === ibanChecksum(address), \"bad icap checksum\", \"address\", address);\n let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n assertArgument(false, \"invalid address\", \"address\", address);\n}\n/**\n * The [ICAP Address format](link-icap) format is an early checksum\n * format which attempts to be compatible with the banking\n * industry [IBAN format](link-wiki-iban) for bank accounts.\n *\n * It is no longer common or a recommended format.\n *\n * @example:\n * getIcapAddress(\"0x8ba1f109551bd432803012645ac136ddd64dba72\");\n * //_result:\n *\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36\");\n * //_result:\n *\n * // Throws an error if the ICAP checksum is wrong\n * getIcapAddress(\"XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK37\");\n * //_error:\n */\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HCS11Client } from "./standards-sdk.
|
|
2
|
-
import { sleep } from "./standards-sdk.
|
|
1
|
+
import { HCS11Client } from "./standards-sdk.es12.js";
|
|
2
|
+
import { sleep } from "./standards-sdk.es27.js";
|
|
3
3
|
class Registration {
|
|
4
4
|
/**
|
|
5
5
|
* Checks the status of a registration request.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es9.js","sources":["../../src/hcs-10/registrations.ts"],"sourcesContent":["import { Logger } from '../utils/logger';\nimport { HCS11Client } from '../hcs-11';\nimport { sleep } from '../utils/sleep';\nimport {\n RegistrationSearchResult,\n AgentMetadata,\n RegistrationResult,\n RegistrationsApiResponse,\n RegistrationSearchOptions,\n} from './types';\n\nexport interface RegistrationStatusResponse {\n status: 'pending' | 'success' | 'failed';\n error?: string;\n}\n\nexport abstract class Registration {\n /**\n * Checks the status of a registration request.\n *\n * @param transactionId - The transaction ID of the registration.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to the registration status response.\n */\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string,\n logger?: Logger\n ): Promise<RegistrationStatusResponse> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n const error = `Failed to confirm registration: ${response.statusText}`;\n if (logger) {\n logger.error(error);\n }\n throw new Error(error);\n }\n\n return (await response.json()) as RegistrationStatusResponse;\n } catch (error: any) {\n if (logger) {\n logger.error(`Error checking registration status: ${error.message}`);\n }\n throw error;\n }\n }\n\n /**\n * Waits for a registration to be confirmed.\n *\n * @param transactionId - The transaction ID of the registration.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param maxAttempts - The maximum number of attempts to check the registration status.\n * @param delayMs - The delay in milliseconds between attempts.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to true if the registration is confirmed, false otherwise.\n */\n async waitForRegistrationConfirmation(\n transactionId: string,\n network: string,\n baseUrl: string,\n maxAttempts: number = 60,\n delayMs: number = 2000,\n logger?: Logger\n ): Promise<boolean> {\n let attempts = 0;\n while (attempts < maxAttempts) {\n if (logger) {\n logger.info(\n `Checking registration status. Attempt ${attempts + 1}/${maxAttempts}`\n );\n }\n\n const status = await this.checkRegistrationStatus(\n transactionId,\n network,\n baseUrl,\n logger\n );\n\n if (status.status === 'success') {\n if (logger) {\n logger.info('Registration confirmed successfully');\n }\n return true;\n }\n\n if (status.status === 'failed') {\n if (logger) {\n logger.error('Registration confirmation failed');\n }\n throw new Error('Registration confirmation failed');\n }\n\n if (logger) {\n logger.info(\n `Registration still pending. Waiting ${delayMs}ms before next attempt`\n );\n }\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n attempts++;\n }\n\n if (logger) {\n logger.warn(`Registration not confirmed after ${maxAttempts} attempts`);\n }\n return false;\n }\n\n /**\n * Executes a registration request for an agent.\n *\n * @param accountId - The account ID of the agent to register.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to the registration result.\n */\n async executeRegistration(\n accountId: string,\n network: string = 'mainnet',\n baseUrl: string = 'https://moonscape.tech',\n logger?: Logger\n ): Promise<RegistrationResult> {\n try {\n if (logger) {\n logger.info('Registering agent with guarded registry');\n }\n\n try {\n const hcs11Client = new HCS11Client({\n network: network as 'mainnet' | 'testnet',\n auth: { operatorId: '0.0.0' },\n });\n logger?.info(\n `Fetching profile by account ID ${accountId} on ${network}`\n );\n await sleep(5000);\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n network\n );\n logger?.info('Profile fetched', profileResult);\n\n if (profileResult?.error) {\n logger?.error('Error fetching profile', profileResult.error);\n return {\n error: profileResult.error,\n success: false,\n };\n }\n if (!profileResult?.success || !profileResult?.profile) {\n if (logger) {\n logger.error('Profile not found for agent registration');\n }\n return {\n error: 'Profile not found for the provided account ID',\n success: false,\n };\n }\n\n if (!profileResult.profile.inboundTopicId) {\n if (logger) {\n logger.error('Missing inbound topic ID in profile');\n }\n return {\n error: 'Profile is missing required inbound topic ID',\n success: false,\n };\n }\n\n if (!profileResult.profile.outboundTopicId) {\n if (logger) {\n logger.error('Missing outbound topic ID in profile');\n }\n return {\n error: 'Profile is missing required outbound topic ID',\n success: false,\n };\n }\n\n if (logger) {\n logger.info(\n `Profile validation successful. Inbound topic: ${profileResult.profile.inboundTopicId}, Outbound topic: ${profileResult.profile.outboundTopicId}`\n );\n }\n } catch (profileError: any) {\n if (logger) {\n logger.error(`Error validating profile: ${profileError.message}`);\n }\n return {\n error: `Error validating profile: ${profileError.message}`,\n success: false,\n };\n }\n\n const response = await fetch(`${baseUrl}/api/request-register`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n 'Accept-Language': 'en;q=0.5',\n Origin: baseUrl,\n Referer: `${baseUrl}/`,\n 'X-Network': network,\n },\n body: JSON.stringify({\n accountId,\n }),\n });\n\n const data = (await response.json()) as RegistrationsApiResponse;\n\n if (!response.ok) {\n if (data.details?.length > 0) {\n return {\n validationErrors: data.details,\n error: data.error || 'Validation failed',\n success: false,\n };\n }\n return {\n error: data.error || 'Failed to register agent',\n success: false,\n };\n }\n\n if (logger) {\n logger.info(\n `Created new registration request. Transaction ID: ${data.transaction_id}`\n );\n }\n\n return {\n transactionId: data.transaction_id,\n transaction: data.transaction,\n success: true,\n };\n } catch (error: any) {\n return {\n error: `Error during registration request: ${error.message}`,\n success: false,\n };\n }\n }\n\n /**\n * Finds registrations based on the provided options.\n *\n * @param options - The options for searching registrations.\n * @param baseUrl - The base URL of the guarded registry.\n * @returns A promise that resolves to the registration search result.\n */\n async findRegistrations(\n options: RegistrationSearchOptions = {},\n baseUrl: string = 'https://moonscape.tech'\n ): Promise<RegistrationSearchResult> {\n try {\n const queryParams = new URLSearchParams();\n options.tags?.forEach((tag) => queryParams.append('tags', tag));\n if (options.accountId) {\n queryParams.append('accountId', options.accountId);\n }\n if (options.network) {\n queryParams.append('network', options.network);\n }\n\n const response = await fetch(\n `${baseUrl}/api/registrations?${queryParams}`,\n {\n headers: {\n Accept: '*/*',\n 'Accept-Language': 'en;q=0.5',\n Origin: baseUrl,\n Referer: `${baseUrl}/`,\n },\n }\n );\n\n if (!response.ok) {\n const error = await response.text();\n return {\n registrations: [],\n error: error || 'Failed to fetch registrations',\n success: false,\n };\n }\n\n const data = (await response.json()) as RegistrationsApiResponse;\n if (data.error) {\n return {\n registrations: [],\n error: data.error,\n success: false,\n };\n }\n\n return {\n registrations: data.registrations || [],\n success: true,\n };\n } catch (e) {\n const error = e as Error;\n return {\n registrations: [],\n error: `Error fetching registrations: ${error.message}`,\n success: false,\n };\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es9.js","sources":["../../src/hcs-10/registrations.ts"],"sourcesContent":["import { Logger } from '../utils/logger';\nimport { HCS11Client } from '../hcs-11/client';\nimport { sleep } from '../utils/sleep';\nimport {\n RegistrationSearchResult,\n RegistrationResult,\n RegistrationsApiResponse,\n RegistrationSearchOptions,\n} from './types';\n\nexport interface RegistrationStatusResponse {\n status: 'pending' | 'success' | 'failed';\n error?: string;\n}\n\nexport abstract class Registration {\n /**\n * Checks the status of a registration request.\n *\n * @param transactionId - The transaction ID of the registration.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to the registration status response.\n */\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string,\n logger?: Logger\n ): Promise<RegistrationStatusResponse> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n const error = `Failed to confirm registration: ${response.statusText}`;\n if (logger) {\n logger.error(error);\n }\n throw new Error(error);\n }\n\n return (await response.json()) as RegistrationStatusResponse;\n } catch (error: any) {\n if (logger) {\n logger.error(`Error checking registration status: ${error.message}`);\n }\n throw error;\n }\n }\n\n /**\n * Waits for a registration to be confirmed.\n *\n * @param transactionId - The transaction ID of the registration.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param maxAttempts - The maximum number of attempts to check the registration status.\n * @param delayMs - The delay in milliseconds between attempts.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to true if the registration is confirmed, false otherwise.\n */\n async waitForRegistrationConfirmation(\n transactionId: string,\n network: string,\n baseUrl: string,\n maxAttempts: number = 60,\n delayMs: number = 2000,\n logger?: Logger\n ): Promise<boolean> {\n let attempts = 0;\n while (attempts < maxAttempts) {\n if (logger) {\n logger.info(\n `Checking registration status. Attempt ${attempts + 1}/${maxAttempts}`\n );\n }\n\n const status = await this.checkRegistrationStatus(\n transactionId,\n network,\n baseUrl,\n logger\n );\n\n if (status.status === 'success') {\n if (logger) {\n logger.info('Registration confirmed successfully');\n }\n return true;\n }\n\n if (status.status === 'failed') {\n if (logger) {\n logger.error('Registration confirmation failed');\n }\n throw new Error('Registration confirmation failed');\n }\n\n if (logger) {\n logger.info(\n `Registration still pending. Waiting ${delayMs}ms before next attempt`\n );\n }\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n attempts++;\n }\n\n if (logger) {\n logger.warn(`Registration not confirmed after ${maxAttempts} attempts`);\n }\n return false;\n }\n\n /**\n * Executes a registration request for an agent.\n *\n * @param accountId - The account ID of the agent to register.\n * @param network - The network to use for the registration.\n * @param baseUrl - The base URL of the guarded registry.\n * @param logger - The logger to use for logging.\n * @returns A promise that resolves to the registration result.\n */\n async executeRegistration(\n accountId: string,\n network: string = 'mainnet',\n baseUrl: string = 'https://moonscape.tech',\n logger?: Logger\n ): Promise<RegistrationResult> {\n try {\n if (logger) {\n logger.info('Registering agent with guarded registry');\n }\n\n try {\n const hcs11Client = new HCS11Client({\n network: network as 'mainnet' | 'testnet',\n auth: { operatorId: '0.0.0' },\n });\n logger?.info(\n `Fetching profile by account ID ${accountId} on ${network}`\n );\n await sleep(5000);\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n network\n );\n logger?.info('Profile fetched', profileResult);\n\n if (profileResult?.error) {\n logger?.error('Error fetching profile', profileResult.error);\n return {\n error: profileResult.error,\n success: false,\n };\n }\n if (!profileResult?.success || !profileResult?.profile) {\n if (logger) {\n logger.error('Profile not found for agent registration');\n }\n return {\n error: 'Profile not found for the provided account ID',\n success: false,\n };\n }\n\n if (!profileResult.profile.inboundTopicId) {\n if (logger) {\n logger.error('Missing inbound topic ID in profile');\n }\n return {\n error: 'Profile is missing required inbound topic ID',\n success: false,\n };\n }\n\n if (!profileResult.profile.outboundTopicId) {\n if (logger) {\n logger.error('Missing outbound topic ID in profile');\n }\n return {\n error: 'Profile is missing required outbound topic ID',\n success: false,\n };\n }\n\n if (logger) {\n logger.info(\n `Profile validation successful. Inbound topic: ${profileResult.profile.inboundTopicId}, Outbound topic: ${profileResult.profile.outboundTopicId}`\n );\n }\n } catch (profileError: any) {\n if (logger) {\n logger.error(`Error validating profile: ${profileError.message}`);\n }\n return {\n error: `Error validating profile: ${profileError.message}`,\n success: false,\n };\n }\n\n const response = await fetch(`${baseUrl}/api/request-register`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n 'Accept-Language': 'en;q=0.5',\n Origin: baseUrl,\n Referer: `${baseUrl}/`,\n 'X-Network': network,\n },\n body: JSON.stringify({\n accountId,\n }),\n });\n\n const data = (await response.json()) as RegistrationsApiResponse;\n\n if (!response.ok) {\n if (data.details?.length > 0) {\n return {\n validationErrors: data.details,\n error: data.error || 'Validation failed',\n success: false,\n };\n }\n return {\n error: data.error || 'Failed to register agent',\n success: false,\n };\n }\n\n if (logger) {\n logger.info(\n `Created new registration request. Transaction ID: ${data.transaction_id}`\n );\n }\n\n return {\n transactionId: data.transaction_id,\n transaction: data.transaction,\n success: true,\n };\n } catch (error: any) {\n return {\n error: `Error during registration request: ${error.message}`,\n success: false,\n };\n }\n }\n\n /**\n * Finds registrations based on the provided options.\n *\n * @param options - The options for searching registrations.\n * @param baseUrl - The base URL of the guarded registry.\n * @returns A promise that resolves to the registration search result.\n */\n async findRegistrations(\n options: RegistrationSearchOptions = {},\n baseUrl: string = 'https://moonscape.tech'\n ): Promise<RegistrationSearchResult> {\n try {\n const queryParams = new URLSearchParams();\n options.tags?.forEach((tag) => queryParams.append('tags', tag));\n if (options.accountId) {\n queryParams.append('accountId', options.accountId);\n }\n if (options.network) {\n queryParams.append('network', options.network);\n }\n\n const response = await fetch(\n `${baseUrl}/api/registrations?${queryParams}`,\n {\n headers: {\n Accept: '*/*',\n 'Accept-Language': 'en;q=0.5',\n Origin: baseUrl,\n Referer: `${baseUrl}/`,\n },\n }\n );\n\n if (!response.ok) {\n const error = await response.text();\n return {\n registrations: [],\n error: error || 'Failed to fetch registrations',\n success: false,\n };\n }\n\n const data = (await response.json()) as RegistrationsApiResponse;\n if (data.error) {\n return {\n registrations: [],\n error: data.error,\n success: false,\n };\n }\n\n return {\n registrations: data.registrations || [],\n success: true,\n };\n } catch (e) {\n const error = e as Error;\n return {\n registrations: [],\n error: `Error fetching registrations: ${error.message}`,\n success: false,\n };\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,151 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const HEX = "0123456789abcdef";
|
|
12
|
-
let result = "0x";
|
|
13
|
-
for (let i = 0; i < value.length; i++) {
|
|
14
|
-
result += HEX[value[i] >> 4];
|
|
15
|
-
result += HEX[value[i] & 15];
|
|
16
|
-
}
|
|
17
|
-
return result;
|
|
18
|
-
}
|
|
19
|
-
if (typeof value === "object" && typeof value.toJSON === "function") {
|
|
20
|
-
return stringify(value.toJSON());
|
|
21
|
-
}
|
|
22
|
-
switch (typeof value) {
|
|
23
|
-
case "boolean":
|
|
24
|
-
case "symbol":
|
|
25
|
-
return value.toString();
|
|
26
|
-
case "bigint":
|
|
27
|
-
return BigInt(value).toString();
|
|
28
|
-
case "number":
|
|
29
|
-
return value.toString();
|
|
30
|
-
case "string":
|
|
31
|
-
return JSON.stringify(value);
|
|
32
|
-
case "object": {
|
|
33
|
-
const keys = Object.keys(value);
|
|
34
|
-
keys.sort();
|
|
35
|
-
return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }";
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return `[ COULD NOT SERIALIZE ]`;
|
|
39
|
-
}
|
|
40
|
-
function isError(error, code) {
|
|
41
|
-
return error && error.code === code;
|
|
42
|
-
}
|
|
43
|
-
function makeError(message, code, info) {
|
|
44
|
-
let shortMessage = message;
|
|
45
|
-
{
|
|
46
|
-
const details = [];
|
|
47
|
-
if (info) {
|
|
48
|
-
if ("message" in info || "code" in info || "name" in info) {
|
|
49
|
-
throw new Error(`value will overwrite populated values: ${stringify(info)}`);
|
|
50
|
-
}
|
|
51
|
-
for (const key in info) {
|
|
52
|
-
if (key === "shortMessage") {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
const value = info[key];
|
|
56
|
-
details.push(key + "=" + stringify(value));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
details.push(`code=${code}`);
|
|
60
|
-
details.push(`version=${version}`);
|
|
61
|
-
if (details.length) {
|
|
62
|
-
message += " (" + details.join(", ") + ")";
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
let error;
|
|
66
|
-
switch (code) {
|
|
67
|
-
case "INVALID_ARGUMENT":
|
|
68
|
-
error = new TypeError(message);
|
|
69
|
-
break;
|
|
70
|
-
case "NUMERIC_FAULT":
|
|
71
|
-
case "BUFFER_OVERRUN":
|
|
72
|
-
error = new RangeError(message);
|
|
73
|
-
break;
|
|
74
|
-
default:
|
|
75
|
-
error = new Error(message);
|
|
76
|
-
}
|
|
77
|
-
defineProperties(error, { code });
|
|
78
|
-
if (info) {
|
|
79
|
-
Object.assign(error, info);
|
|
80
|
-
}
|
|
81
|
-
if (error.shortMessage == null) {
|
|
82
|
-
defineProperties(error, { shortMessage });
|
|
83
|
-
}
|
|
84
|
-
return error;
|
|
85
|
-
}
|
|
86
|
-
function assert(check, message, code, info) {
|
|
87
|
-
if (!check) {
|
|
88
|
-
throw makeError(message, code, info);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function assertArgument(check, message, name, value) {
|
|
92
|
-
assert(check, message, "INVALID_ARGUMENT", { argument: name, value });
|
|
93
|
-
}
|
|
94
|
-
function assertArgumentCount(count, expectedCount, message) {
|
|
95
|
-
if (message == null) {
|
|
96
|
-
message = "";
|
|
97
|
-
}
|
|
98
|
-
if (message) {
|
|
99
|
-
message = ": " + message;
|
|
100
|
-
}
|
|
101
|
-
assert(count >= expectedCount, "missing argument" + message, "MISSING_ARGUMENT", {
|
|
102
|
-
count,
|
|
103
|
-
expectedCount
|
|
104
|
-
});
|
|
105
|
-
assert(count <= expectedCount, "too many arguments" + message, "UNEXPECTED_ARGUMENT", {
|
|
106
|
-
count,
|
|
107
|
-
expectedCount
|
|
108
|
-
});
|
|
1
|
+
import { keccak_256 } from "./standards-sdk.es110.js";
|
|
2
|
+
import { getBytes, hexlify } from "./standards-sdk.es92.js";
|
|
3
|
+
let locked = false;
|
|
4
|
+
const _keccak256 = function(data) {
|
|
5
|
+
return keccak_256(data);
|
|
6
|
+
};
|
|
7
|
+
let __keccak256 = _keccak256;
|
|
8
|
+
function keccak256(_data) {
|
|
9
|
+
const data = getBytes(_data, "data");
|
|
10
|
+
return hexlify(__keccak256(data));
|
|
109
11
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const check = String.fromCharCode(233).normalize("NFD");
|
|
118
|
-
const expected = String.fromCharCode(101, 769);
|
|
119
|
-
if (check !== expected) {
|
|
120
|
-
throw new Error("broken");
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
accum.push(form);
|
|
124
|
-
} catch (error) {
|
|
125
|
-
}
|
|
126
|
-
return accum;
|
|
127
|
-
}, []);
|
|
128
|
-
function assertPrivate(givenGuard, guard, className) {
|
|
129
|
-
if (className == null) {
|
|
130
|
-
className = "";
|
|
131
|
-
}
|
|
132
|
-
if (givenGuard !== guard) {
|
|
133
|
-
let method = className, operation = "new";
|
|
134
|
-
if (className) {
|
|
135
|
-
method += ".";
|
|
136
|
-
operation += " " + className;
|
|
137
|
-
}
|
|
138
|
-
assert(false, `private constructor; use ${method}from* methods`, "UNSUPPORTED_OPERATION", {
|
|
139
|
-
operation
|
|
140
|
-
});
|
|
12
|
+
keccak256._ = _keccak256;
|
|
13
|
+
keccak256.lock = function() {
|
|
14
|
+
locked = true;
|
|
15
|
+
};
|
|
16
|
+
keccak256.register = function(func) {
|
|
17
|
+
if (locked) {
|
|
18
|
+
throw new TypeError("keccak256 is locked");
|
|
141
19
|
}
|
|
142
|
-
|
|
20
|
+
__keccak256 = func;
|
|
21
|
+
};
|
|
22
|
+
Object.freeze(keccak256);
|
|
143
23
|
export {
|
|
144
|
-
|
|
145
|
-
assertArgument,
|
|
146
|
-
assertArgumentCount,
|
|
147
|
-
assertPrivate,
|
|
148
|
-
isError,
|
|
149
|
-
makeError
|
|
24
|
+
keccak256
|
|
150
25
|
};
|
|
151
26
|
//# sourceMappingURL=standards-sdk.es90.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es90.js","sources":["../../node_modules/ethers/lib.esm/utils/errors.js"],"sourcesContent":["/**\n * All errors in ethers include properties to ensure they are both\n * human-readable (i.e. ``.message``) and machine-readable (i.e. ``.code``).\n *\n * The [[isError]] function can be used to check the error ``code`` and\n * provide a type guard for the properties present on that error interface.\n *\n * @_section: api/utils/errors:Errors [about-errors]\n */\nimport { version } from \"../_version.js\";\nimport { defineProperties } from \"./properties.js\";\nfunction stringify(value) {\n if (value == null) {\n return \"null\";\n }\n if (Array.isArray(value)) {\n return \"[ \" + (value.map(stringify)).join(\", \") + \" ]\";\n }\n if (value instanceof Uint8Array) {\n const HEX = \"0123456789abcdef\";\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n result += HEX[value[i] >> 4];\n result += HEX[value[i] & 0xf];\n }\n return result;\n }\n if (typeof (value) === \"object\" && typeof (value.toJSON) === \"function\") {\n return stringify(value.toJSON());\n }\n switch (typeof (value)) {\n case \"boolean\":\n case \"symbol\":\n return value.toString();\n case \"bigint\":\n return BigInt(value).toString();\n case \"number\":\n return (value).toString();\n case \"string\":\n return JSON.stringify(value);\n case \"object\": {\n const keys = Object.keys(value);\n keys.sort();\n return \"{ \" + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(\", \") + \" }\";\n }\n }\n return `[ COULD NOT SERIALIZE ]`;\n}\n/**\n * Returns true if the %%error%% matches an error thrown by ethers\n * that matches the error %%code%%.\n *\n * In TypeScript environments, this can be used to check that %%error%%\n * matches an EthersError type, which means the expected properties will\n * be set.\n *\n * @See [ErrorCodes](api:ErrorCode)\n * @example\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, \"CALL_EXCEPTION\")) {\n * // The Type Guard has validated this object\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\n/**\n * Returns true if %%error%% is a [[CallExceptionError].\n */\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n/**\n * Returns a new Error configured to the format ethers emits errors, with\n * the %%message%%, [[api:ErrorCode]] %%code%% and additional properties\n * for the corresponding EthersError.\n *\n * Each error in ethers includes the version of ethers, a\n * machine-readable [[ErrorCode]], and depending on %%code%%, additional\n * required properties. The error message will also include the %%message%%,\n * ethers version, %%code%% and all additional properties, serialized.\n */\nexport function makeError(message, code, info) {\n let shortMessage = message;\n {\n const details = [];\n if (info) {\n if (\"message\" in info || \"code\" in info || \"name\" in info) {\n throw new Error(`value will overwrite populated values: ${stringify(info)}`);\n }\n for (const key in info) {\n if (key === \"shortMessage\") {\n continue;\n }\n const value = (info[key]);\n // try {\n details.push(key + \"=\" + stringify(value));\n // } catch (error: any) {\n // console.log(\"MMM\", error.message);\n // details.push(key + \"=[could not serialize object]\");\n // }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n let error;\n switch (code) {\n case \"INVALID_ARGUMENT\":\n error = new TypeError(message);\n break;\n case \"NUMERIC_FAULT\":\n case \"BUFFER_OVERRUN\":\n error = new RangeError(message);\n break;\n default:\n error = new Error(message);\n }\n defineProperties(error, { code });\n if (info) {\n Object.assign(error, info);\n }\n if (error.shortMessage == null) {\n defineProperties(error, { shortMessage });\n }\n return error;\n}\n/**\n * Throws an EthersError with %%message%%, %%code%% and additional error\n * %%info%% when %%check%% is falsish..\n *\n * @see [[api:makeError]]\n */\nexport function assert(check, message, code, info) {\n if (!check) {\n throw makeError(message, code, info);\n }\n}\n/**\n * A simple helper to simply ensuring provided arguments match expected\n * constraints, throwing if not.\n *\n * In TypeScript environments, the %%check%% has been asserted true, so\n * any further code does not need additional compile-time checks.\n */\nexport function assertArgument(check, message, name, value) {\n assert(check, message, \"INVALID_ARGUMENT\", { argument: name, value: value });\n}\nexport function assertArgumentCount(count, expectedCount, message) {\n if (message == null) {\n message = \"\";\n }\n if (message) {\n message = \": \" + message;\n }\n assert(count >= expectedCount, \"missing argument\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n assert(count <= expectedCount, \"too many arguments\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n}\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\n/**\n * Throws if the normalization %%form%% is not supported.\n */\nexport function assertNormalize(form) {\n assert(_normalizeForms.indexOf(form) >= 0, \"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n}\n/**\n * Many classes use file-scoped values to guard the constructor,\n * making it effectively private. This facilitates that pattern\n * by ensuring the %%givenGaurd%% matches the file-scoped %%guard%%,\n * throwing if not, indicating the %%className%% if provided.\n */\nexport function assertPrivate(givenGuard, guard, className) {\n if (className == null) {\n className = \"\";\n }\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n assert(false, `private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n}\n//# sourceMappingURL=errors.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es90.js","sources":["../../node_modules/ethers/lib.esm/crypto/keccak.js"],"sourcesContent":["/**\n * Cryptographic hashing functions\n *\n * @_subsection: api/crypto:Hash Functions [about-crypto-hashing]\n */\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { getBytes, hexlify } from \"../utils/index.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\n/**\n * Compute the cryptographic KECCAK256 hash of %%data%%.\n *\n * The %%data%% **must** be a data representation, to compute the\n * hash of UTF-8 data use the [[id]] function.\n *\n * @returns DataHexstring\n * @example:\n * keccak256(\"0x\")\n * //_result:\n *\n * keccak256(\"0x1337\")\n * //_result:\n *\n * keccak256(new Uint8Array([ 0x13, 0x37 ]))\n * //_result:\n *\n * // Strings are assumed to be DataHexString, otherwise it will\n * // throw. To hash UTF-8 data, see the note above.\n * keccak256(\"Hello World\")\n * //_error:\n */\nexport function keccak256(_data) {\n const data = getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map"],"names":[],"mappings":";;AAOA,IAAI,SAAS;AACb,MAAM,aAAa,SAAU,MAAM;AAC/B,SAAO,WAAW,IAAI;AAC1B;AACA,IAAI,cAAc;AAuBX,SAAS,UAAU,OAAO;AAC7B,QAAM,OAAO,SAAS,OAAO,MAAM;AACnC,SAAO,QAAQ,YAAY,IAAI,CAAC;AACpC;AACA,UAAU,IAAI;AACd,UAAU,OAAO,WAAY;AAAE,WAAS;AAAO;AAC/C,UAAU,WAAW,SAAU,MAAM;AACjC,MAAI,QAAQ;AACR,UAAM,IAAI,UAAU,qBAAqB;AAAA,EACjD;AACI,gBAAc;AAClB;AACA,OAAO,OAAO,SAAS;","x_google_ignoreList":[0]}
|
|
@@ -1,94 +1,151 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { version } from "./standards-sdk.es88.js";
|
|
2
|
+
import { defineProperties } from "./standards-sdk.es105.js";
|
|
3
|
+
function stringify(value) {
|
|
4
|
+
if (value == null) {
|
|
5
|
+
return "null";
|
|
6
|
+
}
|
|
7
|
+
if (Array.isArray(value)) {
|
|
8
|
+
return "[ " + value.map(stringify).join(", ") + " ]";
|
|
9
|
+
}
|
|
3
10
|
if (value instanceof Uint8Array) {
|
|
4
|
-
|
|
5
|
-
|
|
11
|
+
const HEX = "0123456789abcdef";
|
|
12
|
+
let result = "0x";
|
|
13
|
+
for (let i = 0; i < value.length; i++) {
|
|
14
|
+
result += HEX[value[i] >> 4];
|
|
15
|
+
result += HEX[value[i] & 15];
|
|
6
16
|
}
|
|
7
|
-
return
|
|
17
|
+
return result;
|
|
8
18
|
}
|
|
9
|
-
if (typeof value === "
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
if (typeof value === "object" && typeof value.toJSON === "function") {
|
|
20
|
+
return stringify(value.toJSON());
|
|
21
|
+
}
|
|
22
|
+
switch (typeof value) {
|
|
23
|
+
case "boolean":
|
|
24
|
+
case "symbol":
|
|
25
|
+
return value.toString();
|
|
26
|
+
case "bigint":
|
|
27
|
+
return BigInt(value).toString();
|
|
28
|
+
case "number":
|
|
29
|
+
return value.toString();
|
|
30
|
+
case "string":
|
|
31
|
+
return JSON.stringify(value);
|
|
32
|
+
case "object": {
|
|
33
|
+
const keys = Object.keys(value);
|
|
34
|
+
keys.sort();
|
|
35
|
+
return "{ " + keys.map((k) => `${stringify(k)}: ${stringify(value[k])}`).join(", ") + " }";
|
|
15
36
|
}
|
|
16
|
-
return result;
|
|
17
37
|
}
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
function getBytes(value, name) {
|
|
21
|
-
return _getBytes(value, name, false);
|
|
38
|
+
return `[ COULD NOT SERIALIZE ]`;
|
|
22
39
|
}
|
|
23
|
-
function
|
|
24
|
-
return
|
|
40
|
+
function isError(error, code) {
|
|
41
|
+
return error && error.code === code;
|
|
25
42
|
}
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
43
|
+
function makeError(message, code, info) {
|
|
44
|
+
let shortMessage = message;
|
|
45
|
+
{
|
|
46
|
+
const details = [];
|
|
47
|
+
if (info) {
|
|
48
|
+
if ("message" in info || "code" in info || "name" in info) {
|
|
49
|
+
throw new Error(`value will overwrite populated values: ${stringify(info)}`);
|
|
50
|
+
}
|
|
51
|
+
for (const key in info) {
|
|
52
|
+
if (key === "shortMessage") {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const value = info[key];
|
|
56
|
+
details.push(key + "=" + stringify(value));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
details.push(`code=${code}`);
|
|
60
|
+
details.push(`version=${version}`);
|
|
61
|
+
if (details.length) {
|
|
62
|
+
message += " (" + details.join(", ") + ")";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let error;
|
|
66
|
+
switch (code) {
|
|
67
|
+
case "INVALID_ARGUMENT":
|
|
68
|
+
error = new TypeError(message);
|
|
69
|
+
break;
|
|
70
|
+
case "NUMERIC_FAULT":
|
|
71
|
+
case "BUFFER_OVERRUN":
|
|
72
|
+
error = new RangeError(message);
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
error = new Error(message);
|
|
29
76
|
}
|
|
30
|
-
|
|
31
|
-
|
|
77
|
+
defineProperties(error, { code });
|
|
78
|
+
if (info) {
|
|
79
|
+
Object.assign(error, info);
|
|
32
80
|
}
|
|
33
|
-
if (
|
|
34
|
-
|
|
81
|
+
if (error.shortMessage == null) {
|
|
82
|
+
defineProperties(error, { shortMessage });
|
|
35
83
|
}
|
|
36
|
-
return
|
|
84
|
+
return error;
|
|
37
85
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let result = "0x";
|
|
42
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
43
|
-
const v = bytes[i];
|
|
44
|
-
result += HexCharacters[(v & 240) >> 4] + HexCharacters[v & 15];
|
|
86
|
+
function assert(check, message, code, info) {
|
|
87
|
+
if (!check) {
|
|
88
|
+
throw makeError(message, code, info);
|
|
45
89
|
}
|
|
46
|
-
return result;
|
|
47
90
|
}
|
|
48
|
-
function
|
|
49
|
-
|
|
91
|
+
function assertArgument(check, message, name, value) {
|
|
92
|
+
assert(check, message, "INVALID_ARGUMENT", { argument: name, value });
|
|
50
93
|
}
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
assert(false, "cannot slice beyond data bounds", "BUFFER_OVERRUN", {
|
|
55
|
-
buffer: bytes,
|
|
56
|
-
length: bytes.length,
|
|
57
|
-
offset: end
|
|
58
|
-
});
|
|
94
|
+
function assertArgumentCount(count, expectedCount, message) {
|
|
95
|
+
if (message == null) {
|
|
96
|
+
message = "";
|
|
59
97
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
function zeroPad(data, length, left) {
|
|
63
|
-
const bytes = getBytes(data);
|
|
64
|
-
assert(length >= bytes.length, "padding exceeds data length", "BUFFER_OVERRUN", {
|
|
65
|
-
buffer: new Uint8Array(bytes),
|
|
66
|
-
length,
|
|
67
|
-
offset: length + 1
|
|
68
|
-
});
|
|
69
|
-
const result = new Uint8Array(length);
|
|
70
|
-
result.fill(0);
|
|
71
|
-
if (left) {
|
|
72
|
-
result.set(bytes, length - bytes.length);
|
|
73
|
-
} else {
|
|
74
|
-
result.set(bytes, 0);
|
|
98
|
+
if (message) {
|
|
99
|
+
message = ": " + message;
|
|
75
100
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
101
|
+
assert(count >= expectedCount, "missing argument" + message, "MISSING_ARGUMENT", {
|
|
102
|
+
count,
|
|
103
|
+
expectedCount
|
|
104
|
+
});
|
|
105
|
+
assert(count <= expectedCount, "too many arguments" + message, "UNEXPECTED_ARGUMENT", {
|
|
106
|
+
count,
|
|
107
|
+
expectedCount
|
|
108
|
+
});
|
|
80
109
|
}
|
|
81
|
-
|
|
82
|
-
|
|
110
|
+
["NFD", "NFC", "NFKD", "NFKC"].reduce((accum, form) => {
|
|
111
|
+
try {
|
|
112
|
+
if ("test".normalize(form) !== "test") {
|
|
113
|
+
throw new Error("bad");
|
|
114
|
+
}
|
|
115
|
+
;
|
|
116
|
+
if (form === "NFD") {
|
|
117
|
+
const check = String.fromCharCode(233).normalize("NFD");
|
|
118
|
+
const expected = String.fromCharCode(101, 769);
|
|
119
|
+
if (check !== expected) {
|
|
120
|
+
throw new Error("broken");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
accum.push(form);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
}
|
|
126
|
+
return accum;
|
|
127
|
+
}, []);
|
|
128
|
+
function assertPrivate(givenGuard, guard, className) {
|
|
129
|
+
if (className == null) {
|
|
130
|
+
className = "";
|
|
131
|
+
}
|
|
132
|
+
if (givenGuard !== guard) {
|
|
133
|
+
let method = className, operation = "new";
|
|
134
|
+
if (className) {
|
|
135
|
+
method += ".";
|
|
136
|
+
operation += " " + className;
|
|
137
|
+
}
|
|
138
|
+
assert(false, `private constructor; use ${method}from* methods`, "UNSUPPORTED_OPERATION", {
|
|
139
|
+
operation
|
|
140
|
+
});
|
|
141
|
+
}
|
|
83
142
|
}
|
|
84
143
|
export {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
zeroPadBytes,
|
|
92
|
-
zeroPadValue
|
|
144
|
+
assert,
|
|
145
|
+
assertArgument,
|
|
146
|
+
assertArgumentCount,
|
|
147
|
+
assertPrivate,
|
|
148
|
+
isError,
|
|
149
|
+
makeError
|
|
93
150
|
};
|
|
94
151
|
//# sourceMappingURL=standards-sdk.es91.js.map
|