@hashgraphonline/standards-sdk 0.1.183 → 0.1.185
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/browser/hcs-25/identifiers.d.ts +24 -0
- package/dist/browser/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/browser/hcs-25/index.d.ts +4 -0
- package/dist/browser/hcs-25/index.d.ts.map +1 -0
- package/dist/browser/hcs-25/scoring.d.ts +32 -0
- package/dist/browser/hcs-25/scoring.d.ts.map +1 -0
- package/dist/browser/hcs-25/types.d.ts +363 -0
- package/dist/browser/hcs-25/types.d.ts.map +1 -0
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/index.d.ts +1 -0
- package/dist/browser/services/registry-broker/index.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/schemas.d.ts +6 -0
- package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/types.d.ts +7 -1
- package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/hcs-25/identifiers.d.ts +24 -0
- package/dist/browser-root/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/index.d.ts +4 -0
- package/dist/browser-root/hcs-25/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/scoring.d.ts +32 -0
- package/dist/browser-root/hcs-25/scoring.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/types.d.ts +363 -0
- package/dist/browser-root/hcs-25/types.d.ts.map +1 -0
- package/dist/browser-root/index.d.ts +1 -0
- package/dist/browser-root/index.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/index.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/index.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/schemas.d.ts +6 -0
- package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/types.d.ts +7 -1
- package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +8 -1
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/hcs-25/identifiers.d.ts +24 -0
- package/dist/cjs/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/cjs/hcs-25/index.d.ts +4 -0
- package/dist/cjs/hcs-25/index.d.ts.map +1 -0
- package/dist/cjs/hcs-25/scoring.d.ts +32 -0
- package/dist/cjs/hcs-25/scoring.d.ts.map +1 -0
- package/dist/cjs/hcs-25/types.d.ts +363 -0
- package/dist/cjs/hcs-25/types.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/index.d.ts +1 -0
- package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/schemas.d.ts +6 -0
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +7 -1
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-25/identifiers.d.ts +24 -0
- package/dist/es/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/es/hcs-25/index.d.ts +4 -0
- package/dist/es/hcs-25/index.d.ts.map +1 -0
- package/dist/es/hcs-25/scoring.d.ts +32 -0
- package/dist/es/hcs-25/scoring.d.ts.map +1 -0
- package/dist/es/hcs-25/types.d.ts +363 -0
- package/dist/es/hcs-25/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/registry-broker/index.d.ts +1 -0
- package/dist/es/services/registry-broker/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/schemas.d.ts +6 -0
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +7 -1
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +69 -39
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +2 -2
- package/dist/es/standards-sdk.es103.js +2 -2
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +2 -2
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es111.js +2 -2
- package/dist/es/standards-sdk.es115.js +3 -3
- package/dist/es/standards-sdk.es116.js +4 -4
- package/dist/es/standards-sdk.es117.js +19 -251
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +60 -475
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +217 -86
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +242 -150
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +470 -26
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +103 -10
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +145 -167
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +30 -25
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +10 -20
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +159 -137
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +27 -199
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +15 -783
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +157 -10
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +198 -564
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +703 -539
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +12 -12
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +567 -2
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +610 -71
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +12 -39
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +2 -2
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +42 -190
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +39 -1139
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +2 -306
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +231 -418
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +1135 -350
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +268 -1084
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +418 -204
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +350 -1562
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +1061 -1096
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +204 -13
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +1541 -233
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +1157 -4
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +15 -79
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +250 -78
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +4 -60
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +75 -153
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +87 -7
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +54 -80
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +2547 -65
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +159 -30
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +7 -34
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +86 -48
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +52 -125
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +5 -5
- package/dist/es/standards-sdk.es160.js +30 -42
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +32 -2538
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +48 -12482
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +12479 -53
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +124 -97
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +35 -74
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +14 -197
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +54 -15
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +96 -58
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +69 -660
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +188 -160
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +657 -307
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +64 -337
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +129 -410
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +200 -209
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +334 -64
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +438 -124
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +310 -496
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +60 -243
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +118 -175
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +12 -12
- package/dist/es/standards-sdk.es180.js +465 -67
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +250 -143
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +172 -160
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +65 -630
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +128 -161
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +144 -195
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +668 -223
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +188 -0
- package/dist/es/standards-sdk.es187.js.map +1 -0
- package/dist/es/standards-sdk.es188.js +238 -0
- package/dist/es/standards-sdk.es188.js.map +1 -0
- package/dist/es/standards-sdk.es189.js +242 -0
- package/dist/es/standards-sdk.es189.js.map +1 -0
- package/dist/es/standards-sdk.es19.js +9 -9
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +12 -12
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +6 -6
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +7 -7
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +3 -3
- package/dist/es/standards-sdk.es75.js +5 -5
- package/dist/es/standards-sdk.es76.js +3 -3
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es81.js +2 -2
- package/dist/es/standards-sdk.es83.js +2 -2
- package/dist/es/standards-sdk.es84.js +4 -4
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es89.js +2 -2
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +4 -4
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es96.js +2 -2
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +3 -3
- package/package.json +1 -1
|
@@ -1,570 +1,204 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { Logger } from "./standards-sdk.es126.js";
|
|
3
|
+
import { HederaMirrorNode } from "./standards-sdk.es147.js";
|
|
4
|
+
import "buffer";
|
|
5
|
+
import "@noble/curves/secp256k1.js";
|
|
6
|
+
import "zod";
|
|
7
|
+
import "./standards-sdk.es155.js";
|
|
8
|
+
import "./standards-sdk.es153.js";
|
|
9
|
+
class HRLResolver {
|
|
10
|
+
constructor(logLevel = "info") {
|
|
11
|
+
this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
|
|
12
|
+
this.logger = Logger.getInstance({
|
|
13
|
+
level: logLevel,
|
|
14
|
+
module: "HRLResolver"
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determines if a MIME type represents binary content
|
|
19
|
+
*/
|
|
20
|
+
isBinaryContentType(mimeType) {
|
|
21
|
+
const binaryTypes = [
|
|
22
|
+
"image/",
|
|
23
|
+
"audio/",
|
|
24
|
+
"video/",
|
|
25
|
+
"application/octet-stream",
|
|
26
|
+
"application/pdf",
|
|
27
|
+
"application/zip",
|
|
28
|
+
"application/gzip",
|
|
29
|
+
"application/x-binary",
|
|
30
|
+
"application/vnd.ms-",
|
|
31
|
+
"application/x-msdownload",
|
|
32
|
+
"application/x-shockwave-flash",
|
|
33
|
+
"font/",
|
|
34
|
+
"application/wasm"
|
|
35
|
+
];
|
|
36
|
+
return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parses an HRL string into its components
|
|
40
|
+
*/
|
|
41
|
+
parseHRL(hrl) {
|
|
42
|
+
if (!hrl) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
|
|
46
|
+
const match = hrl.match(hrlPattern);
|
|
47
|
+
if (!match) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
standard: match[1],
|
|
52
|
+
topicId: match[2]
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Validates if a string is a valid HRL
|
|
57
|
+
*/
|
|
58
|
+
isValidHRL(hrl) {
|
|
59
|
+
if (!hrl || typeof hrl !== "string") {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const parsed = this.parseHRL(hrl);
|
|
63
|
+
if (!parsed) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
67
|
+
if (!topicIdPattern.test(parsed.topicId)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Validates if a string is a valid topic ID
|
|
74
|
+
*/
|
|
75
|
+
isValidTopicId(topicId) {
|
|
76
|
+
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
77
|
+
return topicIdPattern.test(topicId);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolves content from either an HRL or a topic ID
|
|
81
|
+
* If a topic ID is provided, it queries the topic memo to determine the HCS standard
|
|
82
|
+
*/
|
|
83
|
+
async resolve(hrlOrTopicId, options) {
|
|
84
|
+
if (this.isValidHRL(hrlOrTopicId)) {
|
|
85
|
+
return this.resolveHRL(hrlOrTopicId, options);
|
|
86
|
+
}
|
|
87
|
+
if (!this.isValidTopicId(hrlOrTopicId)) {
|
|
88
|
+
throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const mirrorNode = new HederaMirrorNode(options.network, this.logger);
|
|
92
|
+
const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);
|
|
93
|
+
const memo = topicInfo?.memo || "";
|
|
94
|
+
let standard = "1";
|
|
95
|
+
if (memo) {
|
|
96
|
+
const hcsMatch = memo.match(/^hcs-(\d+)/);
|
|
97
|
+
if (hcsMatch && hcsMatch[1]) {
|
|
98
|
+
standard = hcsMatch[1];
|
|
99
|
+
}
|
|
30
100
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
101
|
+
const hrl = `hcs://${standard}/${hrlOrTopicId}`;
|
|
102
|
+
return this.resolveHRL(hrl, options);
|
|
103
|
+
} catch (error) {
|
|
104
|
+
this.logger.error(
|
|
105
|
+
`Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
|
|
106
|
+
);
|
|
107
|
+
const hrl = `hcs://1/${hrlOrTopicId}`;
|
|
108
|
+
return this.resolveHRL(hrl, options);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async getContentWithType(hrl, options) {
|
|
112
|
+
if (!this.isValidHRL(hrl)) {
|
|
113
|
+
return {
|
|
114
|
+
content: hrl,
|
|
115
|
+
contentType: "text/plain",
|
|
116
|
+
isBinary: false
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const result = await this.resolveHRL(hrl, options);
|
|
121
|
+
return {
|
|
122
|
+
content: result.content,
|
|
123
|
+
contentType: result.contentType,
|
|
124
|
+
isBinary: result.isBinary
|
|
125
|
+
};
|
|
126
|
+
} catch (e) {
|
|
127
|
+
const error = e;
|
|
128
|
+
const logMessage = `Error resolving HRL for content and type: ${error.message}`;
|
|
129
|
+
this.logger.error(logMessage);
|
|
130
|
+
throw new Error(logMessage);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolves HRL content with proper content type detection
|
|
135
|
+
*/
|
|
136
|
+
async resolveHRL(hrl, options) {
|
|
137
|
+
const parsed = this.parseHRL(hrl);
|
|
138
|
+
if (!parsed) {
|
|
139
|
+
throw new Error(`Invalid HRL format: ${hrl}`);
|
|
140
|
+
}
|
|
141
|
+
const { standard, topicId } = parsed;
|
|
142
|
+
this.logger.debug(
|
|
143
|
+
`Resolving HRL reference: standard=${standard}, topicId=${topicId}`
|
|
144
|
+
);
|
|
145
|
+
try {
|
|
146
|
+
const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
|
|
147
|
+
const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
|
|
148
|
+
this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
|
|
149
|
+
const headResponse = await axios.head(cdnUrl);
|
|
150
|
+
const contentType = headResponse.headers["content-type"] || "";
|
|
151
|
+
const isBinary = this.isBinaryContentType(contentType);
|
|
152
|
+
if (isBinary || options.returnRaw) {
|
|
153
|
+
const response2 = await axios.get(cdnUrl, {
|
|
154
|
+
responseType: "arraybuffer"
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
content: response2.data,
|
|
158
|
+
contentType,
|
|
159
|
+
topicId,
|
|
160
|
+
isBinary: true
|
|
161
|
+
};
|
|
36
162
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
groups[t.tokenId].push(t);
|
|
51
|
-
}
|
|
52
|
-
return groups;
|
|
53
|
-
};
|
|
54
|
-
const summarizeTokenTransfers = (tx) => {
|
|
55
|
-
const tokenSummaries = [];
|
|
56
|
-
const groups = groupTokenTransfers(tx.tokenTransfers || []);
|
|
57
|
-
for (const [tokenId, transfers] of Object.entries(groups)) {
|
|
58
|
-
const tokenSenders = [];
|
|
59
|
-
const tokenReceivers = [];
|
|
60
|
-
for (const t of transfers) {
|
|
61
|
-
const amt = parseFloat(String(t.amount));
|
|
62
|
-
if (amt < 0) {
|
|
63
|
-
tokenSenders.push(`${t.accountId} (${Math.abs(amt)})`);
|
|
64
|
-
} else if (amt > 0) {
|
|
65
|
-
tokenReceivers.push(`${t.accountId} (${amt})`);
|
|
163
|
+
if (contentType === "application/json") {
|
|
164
|
+
const response2 = await axios.get(cdnUrl, {
|
|
165
|
+
responseType: "json"
|
|
166
|
+
});
|
|
167
|
+
if (!response2.data) {
|
|
168
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
content: response2.data,
|
|
172
|
+
contentType,
|
|
173
|
+
topicId,
|
|
174
|
+
isBinary: false
|
|
175
|
+
};
|
|
66
176
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
};
|
|
92
|
-
const summarizeTokenMint = (tx) => {
|
|
93
|
-
if (tx.tokenMint) {
|
|
94
|
-
return `Mint ${tx.tokenMint.amount} tokens for token ${tx.tokenMint.tokenId}`;
|
|
95
|
-
}
|
|
96
|
-
return tx.humanReadableType;
|
|
97
|
-
};
|
|
98
|
-
const summarizeTokenBurn = (tx) => {
|
|
99
|
-
if (tx.tokenBurn) {
|
|
100
|
-
return `Burn ${tx.tokenBurn.amount} tokens for token ${tx.tokenBurn.tokenId}`;
|
|
101
|
-
}
|
|
102
|
-
return tx.humanReadableType;
|
|
103
|
-
};
|
|
104
|
-
const summarizeTokenCreate = (tx) => {
|
|
105
|
-
if (!tx.tokenCreation) {
|
|
106
|
-
return tx.humanReadableType;
|
|
107
|
-
}
|
|
108
|
-
let summary = `Create token ${tx.tokenCreation.tokenName || "(No Name)"} (${tx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
|
|
109
|
-
if (tx.tokenCreation.initialSupply) {
|
|
110
|
-
summary += ` with initial supply ${tx.tokenCreation.initialSupply}`;
|
|
111
|
-
}
|
|
112
|
-
if (tx.tokenCreation.customFees && tx.tokenCreation.customFees.length > 0) {
|
|
113
|
-
summary += ` including ${tx.tokenCreation.customFees.length} custom fee(s)`;
|
|
114
|
-
}
|
|
115
|
-
return summary;
|
|
116
|
-
};
|
|
117
|
-
const summarizeConsensusCreateTopic = (tx) => {
|
|
118
|
-
if (!tx.consensusCreateTopic) {
|
|
119
|
-
return tx.humanReadableType;
|
|
120
|
-
}
|
|
121
|
-
let summary = "Create new topic";
|
|
122
|
-
if (tx.consensusCreateTopic.memo) {
|
|
123
|
-
summary += ` with memo "${tx.consensusCreateTopic.memo}"`;
|
|
124
|
-
}
|
|
125
|
-
if (tx.consensusCreateTopic.autoRenewAccountId) {
|
|
126
|
-
summary += `, auto-renew by ${tx.consensusCreateTopic.autoRenewAccountId}`;
|
|
127
|
-
}
|
|
128
|
-
return summary;
|
|
129
|
-
};
|
|
130
|
-
const summarizeConsensusSubmitMessage = (tx) => {
|
|
131
|
-
if (!tx.consensusSubmitMessage) {
|
|
132
|
-
return tx.humanReadableType;
|
|
133
|
-
}
|
|
134
|
-
let summary = "Submit message";
|
|
135
|
-
if (tx.consensusSubmitMessage.topicId) {
|
|
136
|
-
summary += ` to topic ${tx.consensusSubmitMessage.topicId}`;
|
|
137
|
-
}
|
|
138
|
-
if (tx.consensusSubmitMessage.message) {
|
|
139
|
-
if (tx.consensusSubmitMessage.messageEncoding === "utf8") {
|
|
140
|
-
const preview = tx.consensusSubmitMessage.message.substring(0, 70);
|
|
141
|
-
const needsEllipsis = tx.consensusSubmitMessage.message.length > 70;
|
|
142
|
-
summary += `: "${preview}${needsEllipsis ? "..." : ""}"`;
|
|
143
|
-
} else {
|
|
144
|
-
const byteLength = Buffer.from(
|
|
145
|
-
tx.consensusSubmitMessage.message,
|
|
146
|
-
"base64"
|
|
147
|
-
).length;
|
|
148
|
-
summary += ` (binary message data, length: ${byteLength} bytes)`;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
if (tx.consensusSubmitMessage.chunkInfoNumber && tx.consensusSubmitMessage.chunkInfoTotal) {
|
|
152
|
-
summary += ` (chunk ${tx.consensusSubmitMessage.chunkInfoNumber}/${tx.consensusSubmitMessage.chunkInfoTotal})`;
|
|
153
|
-
}
|
|
154
|
-
return summary;
|
|
155
|
-
};
|
|
156
|
-
const summarizeFileCreate = (tx) => {
|
|
157
|
-
if (!tx.fileCreate) {
|
|
158
|
-
return tx.humanReadableType;
|
|
159
|
-
}
|
|
160
|
-
let summary = "Create File";
|
|
161
|
-
if (tx.fileCreate.memo) {
|
|
162
|
-
summary += ` with memo "${tx.fileCreate.memo}"`;
|
|
163
|
-
}
|
|
164
|
-
if (tx.fileCreate.contents) {
|
|
165
|
-
summary += " (includes content)";
|
|
166
|
-
}
|
|
167
|
-
return summary;
|
|
168
|
-
};
|
|
169
|
-
const summarizeFileAppend = (tx) => {
|
|
170
|
-
if (tx.fileAppend) {
|
|
171
|
-
return `Append to File ${tx.fileAppend.fileId || "(Unknown ID)"}`;
|
|
172
|
-
}
|
|
173
|
-
return tx.humanReadableType;
|
|
174
|
-
};
|
|
175
|
-
const summarizeFileUpdate = (tx) => {
|
|
176
|
-
if (tx.fileUpdate) {
|
|
177
|
-
return `Update File ${tx.fileUpdate.fileId || "(Unknown ID)"}`;
|
|
178
|
-
}
|
|
179
|
-
return tx.humanReadableType;
|
|
180
|
-
};
|
|
181
|
-
const summarizeFileDelete = (tx) => {
|
|
182
|
-
if (tx.fileDelete) {
|
|
183
|
-
return `Delete File ${tx.fileDelete.fileId || "(Unknown ID)"}`;
|
|
184
|
-
}
|
|
185
|
-
return tx.humanReadableType;
|
|
186
|
-
};
|
|
187
|
-
const summarizeConsensusUpdateTopic = (tx) => {
|
|
188
|
-
if (tx.consensusUpdateTopic) {
|
|
189
|
-
return `Update Topic ${tx.consensusUpdateTopic.topicId || "(Unknown ID)"}`;
|
|
190
|
-
}
|
|
191
|
-
return tx.humanReadableType;
|
|
192
|
-
};
|
|
193
|
-
const summarizeConsensusDeleteTopic = (tx) => {
|
|
194
|
-
if (tx.consensusDeleteTopic) {
|
|
195
|
-
return `Delete Topic ${tx.consensusDeleteTopic.topicId || "(Unknown ID)"}`;
|
|
196
|
-
}
|
|
197
|
-
return tx.humanReadableType;
|
|
198
|
-
};
|
|
199
|
-
const summarizeTokenFreeze = (tx) => {
|
|
200
|
-
if (tx.tokenFreeze) {
|
|
201
|
-
return `Freeze Token ${tx.tokenFreeze.tokenId} for Account ${tx.tokenFreeze.accountId}`;
|
|
202
|
-
}
|
|
203
|
-
return tx.humanReadableType;
|
|
204
|
-
};
|
|
205
|
-
const summarizeTokenUnfreeze = (tx) => {
|
|
206
|
-
if (tx.tokenUnfreeze) {
|
|
207
|
-
return `Unfreeze Token ${tx.tokenUnfreeze.tokenId} for Account ${tx.tokenUnfreeze.accountId}`;
|
|
208
|
-
}
|
|
209
|
-
return tx.humanReadableType;
|
|
210
|
-
};
|
|
211
|
-
const summarizeTokenGrantKyc = (tx) => {
|
|
212
|
-
if (tx.tokenGrantKyc) {
|
|
213
|
-
return `Grant KYC for Token ${tx.tokenGrantKyc.tokenId} to Account ${tx.tokenGrantKyc.accountId}`;
|
|
214
|
-
}
|
|
215
|
-
return tx.humanReadableType;
|
|
216
|
-
};
|
|
217
|
-
const summarizeTokenRevokeKyc = (tx) => {
|
|
218
|
-
if (tx.tokenRevokeKyc) {
|
|
219
|
-
return `Revoke KYC for Token ${tx.tokenRevokeKyc.tokenId} from Account ${tx.tokenRevokeKyc.accountId}`;
|
|
220
|
-
}
|
|
221
|
-
return tx.humanReadableType;
|
|
222
|
-
};
|
|
223
|
-
const summarizeTokenPause = (tx) => {
|
|
224
|
-
if (tx.tokenPause) {
|
|
225
|
-
return `Pause Token ${tx.tokenPause.tokenId}`;
|
|
226
|
-
}
|
|
227
|
-
return tx.humanReadableType;
|
|
228
|
-
};
|
|
229
|
-
const summarizeTokenUnpause = (tx) => {
|
|
230
|
-
if (tx.tokenUnpause) {
|
|
231
|
-
return `Unpause Token ${tx.tokenUnpause.tokenId}`;
|
|
232
|
-
}
|
|
233
|
-
return tx.humanReadableType;
|
|
234
|
-
};
|
|
235
|
-
const summarizeTokenWipe = (tx) => {
|
|
236
|
-
if (tx.tokenWipeAccount) {
|
|
237
|
-
let summary = `Wipe Token ${tx.tokenWipeAccount.tokenId} from Account ${tx.tokenWipeAccount.accountId}`;
|
|
238
|
-
if (tx.tokenWipeAccount.serialNumbers && tx.tokenWipeAccount.serialNumbers.length > 0) {
|
|
239
|
-
summary += ` (Serials: ${tx.tokenWipeAccount.serialNumbers.join(", ")})`;
|
|
240
|
-
}
|
|
241
|
-
if (tx.tokenWipeAccount.amount) {
|
|
242
|
-
summary += ` (Amount: ${tx.tokenWipeAccount.amount})`;
|
|
243
|
-
}
|
|
244
|
-
return summary;
|
|
245
|
-
}
|
|
246
|
-
return tx.humanReadableType;
|
|
247
|
-
};
|
|
248
|
-
const summarizeTokenDelete = (tx) => {
|
|
249
|
-
if (tx.tokenDelete) {
|
|
250
|
-
return `Delete Token ${tx.tokenDelete.tokenId}`;
|
|
251
|
-
}
|
|
252
|
-
return tx.humanReadableType;
|
|
253
|
-
};
|
|
254
|
-
const summarizeTokenAssociate = (tx) => {
|
|
255
|
-
if (tx.tokenAssociate) {
|
|
256
|
-
return `Associate Account ${tx.tokenAssociate.accountId} with Tokens: ${(tx.tokenAssociate.tokenIds || []).join(", ")}`;
|
|
257
|
-
}
|
|
258
|
-
return tx.humanReadableType;
|
|
259
|
-
};
|
|
260
|
-
const summarizeTokenDissociate = (tx) => {
|
|
261
|
-
if (tx.tokenDissociate) {
|
|
262
|
-
return `Dissociate Account ${tx.tokenDissociate.accountId} from Tokens: ${(tx.tokenDissociate.tokenIds || []).join(", ")}`;
|
|
263
|
-
}
|
|
264
|
-
return tx.humanReadableType;
|
|
265
|
-
};
|
|
266
|
-
const summarizeAccountDelete = (tx) => {
|
|
267
|
-
if (tx.cryptoDelete) {
|
|
268
|
-
return `Delete Account ${tx.cryptoDelete.deleteAccountId}`;
|
|
269
|
-
}
|
|
270
|
-
return tx.humanReadableType;
|
|
271
|
-
};
|
|
272
|
-
const summarizeAccountCreate = (tx) => {
|
|
273
|
-
if (!tx.cryptoCreateAccount) {
|
|
274
|
-
return tx.humanReadableType;
|
|
275
|
-
}
|
|
276
|
-
let summary = "Create Account";
|
|
277
|
-
if (tx.cryptoCreateAccount.initialBalance && tx.cryptoCreateAccount.initialBalance !== "0") {
|
|
278
|
-
summary += ` with balance ${tx.cryptoCreateAccount.initialBalance}`;
|
|
279
|
-
}
|
|
280
|
-
if (tx.cryptoCreateAccount.alias) {
|
|
281
|
-
summary += ` (Alias: ${tx.cryptoCreateAccount.alias})`;
|
|
282
|
-
}
|
|
283
|
-
return summary;
|
|
284
|
-
};
|
|
285
|
-
const summarizeAccountUpdate = (tx) => {
|
|
286
|
-
if (tx.cryptoUpdateAccount) {
|
|
287
|
-
return `Update Account ${tx.cryptoUpdateAccount.accountIdToUpdate || "(Unknown ID)"}`;
|
|
288
|
-
}
|
|
289
|
-
return tx.humanReadableType;
|
|
290
|
-
};
|
|
291
|
-
const summarizeApproveAllowance = (tx) => {
|
|
292
|
-
if (tx.cryptoApproveAllowance) {
|
|
293
|
-
let count = 0;
|
|
294
|
-
if (tx.cryptoApproveAllowance.hbarAllowances) {
|
|
295
|
-
count += tx.cryptoApproveAllowance.hbarAllowances.length;
|
|
296
|
-
}
|
|
297
|
-
if (tx.cryptoApproveAllowance.tokenAllowances) {
|
|
298
|
-
count += tx.cryptoApproveAllowance.tokenAllowances.length;
|
|
299
|
-
}
|
|
300
|
-
if (tx.cryptoApproveAllowance.nftAllowances) {
|
|
301
|
-
count += tx.cryptoApproveAllowance.nftAllowances.length;
|
|
302
|
-
}
|
|
303
|
-
return `Approve ${count} Crypto Allowance(s)`;
|
|
304
|
-
}
|
|
305
|
-
return tx.humanReadableType;
|
|
306
|
-
};
|
|
307
|
-
const summarizeDeleteAllowance = (tx) => {
|
|
308
|
-
if (tx.cryptoDeleteAllowance) {
|
|
309
|
-
const count = (tx.cryptoDeleteAllowance.nftAllowancesToRemove || []).length;
|
|
310
|
-
return `Delete ${count} NFT Crypto Allowance(s)`;
|
|
311
|
-
}
|
|
312
|
-
return tx.humanReadableType;
|
|
313
|
-
};
|
|
314
|
-
const summarizeContractCreate = (tx) => {
|
|
315
|
-
if (tx.contractCreate) {
|
|
316
|
-
let summary = "Create Contract";
|
|
317
|
-
if (tx.contractCreate.memo) {
|
|
318
|
-
summary += ` (Memo: ${tx.contractCreate.memo})`;
|
|
319
|
-
}
|
|
320
|
-
return summary;
|
|
321
|
-
}
|
|
322
|
-
return tx.humanReadableType;
|
|
323
|
-
};
|
|
324
|
-
const summarizeContractUpdate = (tx) => {
|
|
325
|
-
if (tx.contractUpdate) {
|
|
326
|
-
return `Update Contract ${tx.contractUpdate.contractIdToUpdate || "(Unknown ID)"}`;
|
|
327
|
-
}
|
|
328
|
-
return tx.humanReadableType;
|
|
329
|
-
};
|
|
330
|
-
const summarizeContractDelete = (tx) => {
|
|
331
|
-
if (tx.contractDelete) {
|
|
332
|
-
let summary = `Delete Contract ${tx.contractDelete.contractIdToDelete || "(Unknown ID)"}`;
|
|
333
|
-
if (tx.contractDelete.transferAccountId) {
|
|
334
|
-
summary += ` (Transfer to Account: ${tx.contractDelete.transferAccountId})`;
|
|
335
|
-
} else if (tx.contractDelete.transferContractId) {
|
|
336
|
-
summary += ` (Transfer to Contract: ${tx.contractDelete.transferContractId})`;
|
|
337
|
-
}
|
|
338
|
-
return summary;
|
|
339
|
-
}
|
|
340
|
-
return tx.humanReadableType;
|
|
341
|
-
};
|
|
342
|
-
const summarizeTokenUpdate = (tx) => {
|
|
343
|
-
if (tx.tokenUpdate) {
|
|
344
|
-
return `Update Token ${tx.tokenUpdate.tokenId || "(Unknown ID)"}`;
|
|
345
|
-
}
|
|
346
|
-
return tx.humanReadableType;
|
|
347
|
-
};
|
|
348
|
-
const summarizeTokenFeeScheduleUpdate = (tx) => {
|
|
349
|
-
if (tx.tokenFeeScheduleUpdate) {
|
|
350
|
-
return `Update Fee Schedule for Token ${tx.tokenFeeScheduleUpdate.tokenId || "(Unknown ID)"}`;
|
|
351
|
-
}
|
|
352
|
-
return tx.humanReadableType;
|
|
353
|
-
};
|
|
354
|
-
const summarizeTokenAirdrop = (tx) => {
|
|
355
|
-
if (!tx.tokenAirdrop || !tx.tokenAirdrop.tokenTransfers) {
|
|
356
|
-
return tx.humanReadableType;
|
|
357
|
-
}
|
|
358
|
-
let tokenTypes = 0;
|
|
359
|
-
let totalTransfers = 0;
|
|
360
|
-
for (const t of tx.tokenAirdrop.tokenTransfers) {
|
|
361
|
-
tokenTypes += 1;
|
|
362
|
-
totalTransfers += Array.isArray(t.transfers) ? t.transfers.length : 0;
|
|
363
|
-
}
|
|
364
|
-
return `Token Airdrop across ${tokenTypes} token(s), ${totalTransfers} transfer(s)`;
|
|
365
|
-
};
|
|
366
|
-
const summarizeScheduleCreate = (tx) => {
|
|
367
|
-
if (!tx.scheduleCreate) {
|
|
368
|
-
return tx.humanReadableType;
|
|
369
|
-
}
|
|
370
|
-
let summary = "Create Schedule";
|
|
371
|
-
if (tx.scheduleCreate.memo) {
|
|
372
|
-
summary += ` (Memo: ${tx.scheduleCreate.memo})`;
|
|
373
|
-
}
|
|
374
|
-
return summary;
|
|
375
|
-
};
|
|
376
|
-
const summarizeScheduleSign = (tx) => {
|
|
377
|
-
if (tx.scheduleSign) {
|
|
378
|
-
return "Sign Schedule";
|
|
379
|
-
}
|
|
380
|
-
return tx.humanReadableType;
|
|
381
|
-
};
|
|
382
|
-
const summarizeScheduleDelete = (tx) => {
|
|
383
|
-
if (tx.scheduleDelete) {
|
|
384
|
-
return "Delete Schedule";
|
|
385
|
-
}
|
|
386
|
-
return tx.humanReadableType;
|
|
387
|
-
};
|
|
388
|
-
const summarizeSystemDelete = (tx) => {
|
|
389
|
-
if (!tx.systemDelete) {
|
|
390
|
-
return tx.humanReadableType;
|
|
391
|
-
}
|
|
392
|
-
if (tx.systemDelete.fileId) {
|
|
393
|
-
return `System Delete File ${tx.systemDelete.fileId}`;
|
|
394
|
-
}
|
|
395
|
-
if (tx.systemDelete.contractId) {
|
|
396
|
-
return `System Delete Contract ${tx.systemDelete.contractId}`;
|
|
397
|
-
}
|
|
398
|
-
return "System Delete";
|
|
399
|
-
};
|
|
400
|
-
const summarizeSystemUndelete = (tx) => {
|
|
401
|
-
if (!tx.systemUndelete) {
|
|
402
|
-
return tx.humanReadableType;
|
|
403
|
-
}
|
|
404
|
-
if (tx.systemUndelete.fileId) {
|
|
405
|
-
return `System Undelete File ${tx.systemUndelete.fileId}`;
|
|
406
|
-
}
|
|
407
|
-
if (tx.systemUndelete.contractId) {
|
|
408
|
-
return `System Undelete Contract ${tx.systemUndelete.contractId}`;
|
|
409
|
-
}
|
|
410
|
-
return "System Undelete";
|
|
411
|
-
};
|
|
412
|
-
const summarizeFreeze = (tx) => {
|
|
413
|
-
return "Network Freeze";
|
|
414
|
-
};
|
|
415
|
-
const summarizeEthereumTransaction = (tx) => {
|
|
416
|
-
return "Ethereum Transaction";
|
|
417
|
-
};
|
|
418
|
-
const summarizeUncheckedSubmit = (tx) => {
|
|
419
|
-
if (tx.uncheckedSubmit && tx.uncheckedSubmit.topicId) {
|
|
420
|
-
return `Unchecked Submit to topic ${tx.uncheckedSubmit.topicId}`;
|
|
421
|
-
}
|
|
422
|
-
return "Unchecked Submit";
|
|
423
|
-
};
|
|
424
|
-
const summarizeNodeCreate = (tx) => {
|
|
425
|
-
return "Create Node";
|
|
426
|
-
};
|
|
427
|
-
const summarizeNodeUpdate = (tx) => {
|
|
428
|
-
return "Update Node";
|
|
429
|
-
};
|
|
430
|
-
const summarizeNodeDelete = (tx) => {
|
|
431
|
-
return "Delete Node";
|
|
432
|
-
};
|
|
433
|
-
const summarizeAtomicBatch = (tx) => {
|
|
434
|
-
const count = Array.isArray(tx.atomicBatch?.transactions) ? tx.atomicBatch.transactions.length : 0;
|
|
435
|
-
return `Atomic Batch (${count} transaction(s))`;
|
|
436
|
-
};
|
|
437
|
-
const transactionSummaryRegistry = {
|
|
438
|
-
CRYPTOTRANSFER: { fn: summarizeCryptoTransfer },
|
|
439
|
-
cryptoTransfer: { fn: summarizeCryptoTransfer },
|
|
440
|
-
CONTRACTCALL: { fn: summarizeContractCall },
|
|
441
|
-
contractCall: { fn: summarizeContractCall },
|
|
442
|
-
TOKENMINT: { fn: summarizeTokenMint },
|
|
443
|
-
tokenMint: { fn: summarizeTokenMint },
|
|
444
|
-
TOKENBURN: { fn: summarizeTokenBurn },
|
|
445
|
-
tokenBurn: { fn: summarizeTokenBurn },
|
|
446
|
-
TOKENCREATE: { fn: summarizeTokenCreate },
|
|
447
|
-
tokenCreation: { fn: summarizeTokenCreate },
|
|
448
|
-
TOPICCREATE: { fn: summarizeConsensusCreateTopic },
|
|
449
|
-
consensusCreateTopic: { fn: summarizeConsensusCreateTopic },
|
|
450
|
-
CONSENSUSSUBMITMESSAGE: { fn: summarizeConsensusSubmitMessage },
|
|
451
|
-
consensusSubmitMessage: { fn: summarizeConsensusSubmitMessage },
|
|
452
|
-
TOPICUPDATE: { fn: summarizeConsensusUpdateTopic },
|
|
453
|
-
consensusUpdateTopic: { fn: summarizeConsensusUpdateTopic },
|
|
454
|
-
TOPICDELETE: { fn: summarizeConsensusDeleteTopic },
|
|
455
|
-
consensusDeleteTopic: { fn: summarizeConsensusDeleteTopic },
|
|
456
|
-
FILECREATE: { fn: summarizeFileCreate },
|
|
457
|
-
fileCreate: { fn: summarizeFileCreate },
|
|
458
|
-
FILEAPPEND: { fn: summarizeFileAppend },
|
|
459
|
-
fileAppend: { fn: summarizeFileAppend },
|
|
460
|
-
FILEUPDATE: { fn: summarizeFileUpdate },
|
|
461
|
-
fileUpdate: { fn: summarizeFileUpdate },
|
|
462
|
-
FILEDELETE: { fn: summarizeFileDelete },
|
|
463
|
-
fileDelete: { fn: summarizeFileDelete },
|
|
464
|
-
TOKENUPDATE: { fn: summarizeTokenUpdate },
|
|
465
|
-
tokenUpdate: { fn: summarizeTokenUpdate },
|
|
466
|
-
TOKENFEESCHEDULEUPDATE: { fn: summarizeTokenFeeScheduleUpdate },
|
|
467
|
-
tokenFeeScheduleUpdate: { fn: summarizeTokenFeeScheduleUpdate },
|
|
468
|
-
TOKENFREEZE: { fn: summarizeTokenFreeze },
|
|
469
|
-
tokenFreeze: { fn: summarizeTokenFreeze },
|
|
470
|
-
TOKENUNFREEZE: { fn: summarizeTokenUnfreeze },
|
|
471
|
-
tokenUnfreeze: { fn: summarizeTokenUnfreeze },
|
|
472
|
-
TOKENGRANTKYC: { fn: summarizeTokenGrantKyc },
|
|
473
|
-
tokenGrantKyc: { fn: summarizeTokenGrantKyc },
|
|
474
|
-
TOKENREVOKEKYC: { fn: summarizeTokenRevokeKyc },
|
|
475
|
-
tokenRevokeKyc: { fn: summarizeTokenRevokeKyc },
|
|
476
|
-
TOKENPAUSE: { fn: summarizeTokenPause },
|
|
477
|
-
tokenPause: { fn: summarizeTokenPause },
|
|
478
|
-
TOKENUNPAUSE: { fn: summarizeTokenUnpause },
|
|
479
|
-
tokenUnpause: { fn: summarizeTokenUnpause },
|
|
480
|
-
TOKENWIPE: { fn: summarizeTokenWipe },
|
|
481
|
-
TOKENWIPEACCOUNT: { fn: summarizeTokenWipe },
|
|
482
|
-
tokenWipe: { fn: summarizeTokenWipe },
|
|
483
|
-
tokenWipeAccount: { fn: summarizeTokenWipe },
|
|
484
|
-
TOKENDELETE: { fn: summarizeTokenDelete },
|
|
485
|
-
tokenDelete: { fn: summarizeTokenDelete },
|
|
486
|
-
TOKENASSOCIATE: { fn: summarizeTokenAssociate },
|
|
487
|
-
tokenAssociate: { fn: summarizeTokenAssociate },
|
|
488
|
-
TOKENDISSOCIATE: { fn: summarizeTokenDissociate },
|
|
489
|
-
tokenDissociate: { fn: summarizeTokenDissociate },
|
|
490
|
-
ACCOUNTDELETE: { fn: summarizeAccountDelete },
|
|
491
|
-
cryptoDelete: { fn: summarizeAccountDelete },
|
|
492
|
-
ACCOUNTCREATE: { fn: summarizeAccountCreate },
|
|
493
|
-
cryptoCreateAccount: { fn: summarizeAccountCreate },
|
|
494
|
-
ACCOUNTUPDATE: { fn: summarizeAccountUpdate },
|
|
495
|
-
cryptoUpdateAccount: { fn: summarizeAccountUpdate },
|
|
496
|
-
APPROVEALLOWANCE: { fn: summarizeApproveAllowance },
|
|
497
|
-
cryptoApproveAllowance: { fn: summarizeApproveAllowance },
|
|
498
|
-
DELETEALLOWANCE: { fn: summarizeDeleteAllowance },
|
|
499
|
-
cryptoDeleteAllowance: { fn: summarizeDeleteAllowance },
|
|
500
|
-
CONTRACTCREATE: { fn: summarizeContractCreate },
|
|
501
|
-
contractCreate: { fn: summarizeContractCreate },
|
|
502
|
-
CONTRACTUPDATE: { fn: summarizeContractUpdate },
|
|
503
|
-
contractUpdate: { fn: summarizeContractUpdate },
|
|
504
|
-
CONTRACTDELETE: { fn: summarizeContractDelete },
|
|
505
|
-
contractDelete: { fn: summarizeContractDelete },
|
|
506
|
-
TOKENAIRDROP: { fn: summarizeTokenAirdrop },
|
|
507
|
-
tokenAirdrop: { fn: summarizeTokenAirdrop },
|
|
508
|
-
SCHEDULECREATE: { fn: summarizeScheduleCreate },
|
|
509
|
-
scheduleCreate: { fn: summarizeScheduleCreate },
|
|
510
|
-
SCHEDULESIGN: { fn: summarizeScheduleSign },
|
|
511
|
-
scheduleSign: { fn: summarizeScheduleSign },
|
|
512
|
-
SCHEDULEDELETE: { fn: summarizeScheduleDelete },
|
|
513
|
-
scheduleDelete: { fn: summarizeScheduleDelete },
|
|
514
|
-
SYSTEMDELETE: { fn: summarizeSystemDelete },
|
|
515
|
-
systemDelete: { fn: summarizeSystemDelete },
|
|
516
|
-
SYSTEMUNDELETE: { fn: summarizeSystemUndelete },
|
|
517
|
-
systemUndelete: { fn: summarizeSystemUndelete },
|
|
518
|
-
FREEZE: { fn: summarizeFreeze },
|
|
519
|
-
freeze: { fn: summarizeFreeze },
|
|
520
|
-
ETHEREUMTRANSACTION: { fn: summarizeEthereumTransaction },
|
|
521
|
-
ethereumTransaction: { fn: summarizeEthereumTransaction },
|
|
522
|
-
UNCHECKEDSUBMIT: { fn: summarizeUncheckedSubmit },
|
|
523
|
-
uncheckedSubmit: { fn: summarizeUncheckedSubmit },
|
|
524
|
-
NODECREATE: { fn: summarizeNodeCreate },
|
|
525
|
-
nodeCreate: { fn: summarizeNodeCreate },
|
|
526
|
-
NODEUPDATE: { fn: summarizeNodeUpdate },
|
|
527
|
-
nodeUpdate: { fn: summarizeNodeUpdate },
|
|
528
|
-
NODEDELETE: { fn: summarizeNodeDelete },
|
|
529
|
-
nodeDelete: { fn: summarizeNodeDelete },
|
|
530
|
-
ATOMICBATCH: { fn: summarizeAtomicBatch },
|
|
531
|
-
atomicBatch: { fn: summarizeAtomicBatch }
|
|
532
|
-
};
|
|
533
|
-
const resolveTransactionSummary = (tx) => {
|
|
534
|
-
const spec = transactionSummaryRegistry[tx.type];
|
|
535
|
-
if (spec) {
|
|
536
|
-
if (spec.fn) {
|
|
537
|
-
return spec.fn(tx);
|
|
538
|
-
}
|
|
539
|
-
if (spec.template) {
|
|
540
|
-
return renderTemplate(spec.template, tx);
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
const hrSpec = transactionSummaryRegistry[tx.humanReadableType];
|
|
544
|
-
if (hrSpec) {
|
|
545
|
-
if (hrSpec.fn) {
|
|
546
|
-
return hrSpec.fn(tx);
|
|
547
|
-
}
|
|
548
|
-
if (hrSpec.template) {
|
|
549
|
-
return renderTemplate(hrSpec.template, tx);
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
if (tx.type === "cryptoTransfer" || tx.type === "CRYPTOTRANSFER") {
|
|
553
|
-
return summarizeCryptoTransfer(tx);
|
|
554
|
-
}
|
|
555
|
-
if (tx.contractCall) {
|
|
556
|
-
return summarizeContractCall(tx);
|
|
557
|
-
}
|
|
558
|
-
if (Array.isArray(tx.tokenTransfers) && tx.tokenTransfers.length > 0) {
|
|
559
|
-
return summarizeTokenTransfers(tx);
|
|
560
|
-
}
|
|
561
|
-
if (tx.humanReadableType && tx.humanReadableType !== "Unknown Transaction") {
|
|
562
|
-
return tx.humanReadableType;
|
|
563
|
-
}
|
|
564
|
-
return "Unknown Transaction";
|
|
565
|
-
};
|
|
177
|
+
const response = await axios.get(cdnUrl);
|
|
178
|
+
if (!response.data) {
|
|
179
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
180
|
+
}
|
|
181
|
+
let content;
|
|
182
|
+
if (typeof response.data === "object") {
|
|
183
|
+
content = response.data.content || response.data.text || JSON.stringify(response.data);
|
|
184
|
+
} else {
|
|
185
|
+
content = response.data;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
content,
|
|
189
|
+
contentType,
|
|
190
|
+
topicId,
|
|
191
|
+
isBinary: false
|
|
192
|
+
};
|
|
193
|
+
} catch (e) {
|
|
194
|
+
const error = e;
|
|
195
|
+
const logMessage = `Error resolving HRL reference: ${error.message}`;
|
|
196
|
+
this.logger.error(logMessage);
|
|
197
|
+
throw new Error(logMessage);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
566
201
|
export {
|
|
567
|
-
|
|
568
|
-
transactionSummaryRegistry
|
|
202
|
+
HRLResolver
|
|
569
203
|
};
|
|
570
204
|
//# sourceMappingURL=standards-sdk.es130.js.map
|