@hashgraphonline/standards-sdk 0.1.190 → 0.1.191
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/adapters/ans-trust-discovery.d.ts +22 -0
- package/dist/browser/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser/hcs-25/adapters/index.d.ts +1 -0
- package/dist/browser/hcs-25/adapters/index.d.ts.map +1 -1
- package/dist/browser/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
- package/dist/browser/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/catalog.d.ts +9 -2
- package/dist/browser/hcs-25/collectors/catalog.d.ts.map +1 -1
- package/dist/browser/hcs-25/collectors/index.d.ts +1 -0
- package/dist/browser/hcs-25/collectors/index.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
- package/dist/browser/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser/hcs-25/signals/index.d.ts +1 -0
- package/dist/browser/hcs-25/signals/index.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
- package/dist/browser-root/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/adapters/index.d.ts +1 -0
- package/dist/browser-root/hcs-25/adapters/index.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
- package/dist/browser-root/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts +9 -2
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/collectors/index.d.ts +1 -0
- package/dist/browser-root/hcs-25/collectors/index.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
- package/dist/browser-root/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/signals/index.d.ts +1 -0
- package/dist/browser-root/hcs-25/signals/index.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
- package/dist/cjs/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
- package/dist/cjs/hcs-25/adapters/index.d.ts +1 -0
- package/dist/cjs/hcs-25/adapters/index.d.ts.map +1 -1
- package/dist/cjs/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
- package/dist/cjs/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/catalog.d.ts +9 -2
- package/dist/cjs/hcs-25/collectors/catalog.d.ts.map +1 -1
- package/dist/cjs/hcs-25/collectors/index.d.ts +1 -0
- package/dist/cjs/hcs-25/collectors/index.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
- package/dist/cjs/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
- package/dist/cjs/hcs-25/signals/index.d.ts +1 -0
- package/dist/cjs/hcs-25/signals/index.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +1 -1
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
- package/dist/es/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
- package/dist/es/hcs-25/adapters/index.d.ts +1 -0
- package/dist/es/hcs-25/adapters/index.d.ts.map +1 -1
- package/dist/es/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
- package/dist/es/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/catalog.d.ts +9 -2
- package/dist/es/hcs-25/collectors/catalog.d.ts.map +1 -1
- package/dist/es/hcs-25/collectors/index.d.ts +1 -0
- package/dist/es/hcs-25/collectors/index.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
- package/dist/es/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
- package/dist/es/hcs-25/signals/index.d.ts +1 -0
- package/dist/es/hcs-25/signals/index.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +78 -71
- 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.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +22 -4
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +15 -12
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +6 -5
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +6 -5
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +6 -5
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +110 -136
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +133 -141
- 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 +135 -345
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +332 -344
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +338 -178
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +200 -196
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +216 -364
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +358 -100
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +91 -220
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +173 -1250
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +1295 -98
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +109 -246
- 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 +263 -97
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +107 -248
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +246 -472
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +458 -85
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +96 -151
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +155 -29
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +26 -4
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +10 -180
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +179 -26
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +27 -20
- 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 +18 -156
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +148 -190
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +159 -747
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +786 -9
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +13 -567
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +541 -600
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +625 -12
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +13 -2
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +2 -87
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +84 -37
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +6 -6
- package/dist/es/standards-sdk.es160.js +40 -2
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +2 -235
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +204 -1109
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +1059 -225
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +303 -419
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +418 -351
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +347 -1114
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +1094 -180
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +153 -1512
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +1457 -1056
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +1163 -14
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +15 -449
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +440 -248
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +259 -4
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +4 -81
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +71 -77
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +80 -53
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +59 -2546
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +2547 -159
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +159 -7
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +13 -13
- package/dist/es/standards-sdk.es180.js +7 -86
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +65 -44
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +57 -188
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +27 -26
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +191 -53
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +21 -109
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +49 -47
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +89 -205
- package/dist/es/standards-sdk.es187.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +35 -58
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +48 -39
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +10 -10
- package/dist/es/standards-sdk.es190.js +218 -48
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es191.js +66 -42
- package/dist/es/standards-sdk.es191.js.map +1 -1
- package/dist/es/standards-sdk.es192.js +33 -105
- package/dist/es/standards-sdk.es192.js.map +1 -1
- package/dist/es/standards-sdk.es193.js +49 -43
- package/dist/es/standards-sdk.es193.js.map +1 -1
- package/dist/es/standards-sdk.es194.js +33 -42
- package/dist/es/standards-sdk.es194.js.map +1 -1
- package/dist/es/standards-sdk.es195.js +123 -72
- package/dist/es/standards-sdk.es195.js.map +1 -1
- package/dist/es/standards-sdk.es196.js +58 -75
- package/dist/es/standards-sdk.es196.js.map +1 -1
- package/dist/es/standards-sdk.es197.js +60 -44
- package/dist/es/standards-sdk.es197.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +72 -36
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +75 -30
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es200.js +44 -34
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +36 -48
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +30 -138
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +34 -42
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +48 -12482
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +134 -13
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +36 -50
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +12449 -78
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +15 -79
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +48 -192
- package/dist/es/standards-sdk.es209.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es210.js +90 -651
- package/dist/es/standards-sdk.es210.js.map +1 -1
- package/dist/es/standards-sdk.es211.js +71 -63
- package/dist/es/standards-sdk.es211.js.map +1 -1
- package/dist/es/standards-sdk.es212.js +188 -160
- package/dist/es/standards-sdk.es212.js.map +1 -1
- package/dist/es/standards-sdk.es213.js +65 -314
- package/dist/es/standards-sdk.es213.js.map +1 -1
- package/dist/es/standards-sdk.es214.js +661 -335
- package/dist/es/standards-sdk.es214.js.map +1 -1
- package/dist/es/standards-sdk.es215.js +129 -410
- package/dist/es/standards-sdk.es215.js.map +1 -1
- package/dist/es/standards-sdk.es216.js +200 -209
- package/dist/es/standards-sdk.es216.js.map +1 -1
- package/dist/es/standards-sdk.es217.js +334 -64
- package/dist/es/standards-sdk.es217.js.map +1 -1
- package/dist/es/standards-sdk.es218.js +438 -124
- package/dist/es/standards-sdk.es218.js.map +1 -1
- package/dist/es/standards-sdk.es219.js +310 -496
- package/dist/es/standards-sdk.es219.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es220.js +60 -243
- package/dist/es/standards-sdk.es220.js.map +1 -1
- package/dist/es/standards-sdk.es221.js +118 -175
- package/dist/es/standards-sdk.es221.js.map +1 -1
- package/dist/es/standards-sdk.es222.js +465 -67
- package/dist/es/standards-sdk.es222.js.map +1 -1
- package/dist/es/standards-sdk.es223.js +250 -143
- package/dist/es/standards-sdk.es223.js.map +1 -1
- package/dist/es/standards-sdk.es224.js +172 -160
- package/dist/es/standards-sdk.es224.js.map +1 -1
- package/dist/es/standards-sdk.es225.js +65 -630
- package/dist/es/standards-sdk.es225.js.map +1 -1
- package/dist/es/standards-sdk.es226.js +128 -161
- package/dist/es/standards-sdk.es226.js.map +1 -1
- package/dist/es/standards-sdk.es227.js +144 -195
- package/dist/es/standards-sdk.es227.js.map +1 -1
- package/dist/es/standards-sdk.es228.js +668 -223
- package/dist/es/standards-sdk.es228.js.map +1 -1
- package/dist/es/standards-sdk.es229.js +188 -0
- package/dist/es/standards-sdk.es229.js.map +1 -0
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es230.js +238 -0
- package/dist/es/standards-sdk.es230.js.map +1 -0
- package/dist/es/standards-sdk.es231.js +242 -0
- package/dist/es/standards-sdk.es231.js.map +1 -0
- 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 +13 -13
- 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 +7 -7
- 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 +8 -8
- 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 +5 -5
- 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,793 +1,205 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { Logger } from "./standards-sdk.es148.js";
|
|
3
|
+
import { HederaMirrorNode } from "./standards-sdk.es169.js";
|
|
4
|
+
import "buffer";
|
|
5
|
+
import "@noble/curves/secp256k1.js";
|
|
6
|
+
import "zod";
|
|
7
|
+
import "./standards-sdk.es178.js";
|
|
8
|
+
import "./standards-sdk.es172.js";
|
|
9
|
+
import "./standards-sdk.es176.js";
|
|
10
|
+
class HRLResolver {
|
|
11
|
+
constructor(logLevel = "info") {
|
|
12
|
+
this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
|
|
13
|
+
this.logger = Logger.getInstance({
|
|
14
|
+
level: logLevel,
|
|
15
|
+
module: "HRLResolver"
|
|
16
|
+
});
|
|
17
|
+
}
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
void 0,
|
|
38
|
-
transactionBytes
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
let lastError;
|
|
42
|
-
let retryCount = 0;
|
|
43
|
-
while (retryCount <= maxRetries) {
|
|
44
|
-
try {
|
|
45
|
-
const result = await this.parseTransaction(transactionBytes, options);
|
|
46
|
-
result.formatDetection = {
|
|
47
|
-
originalFormat: validation.format || "base64",
|
|
48
|
-
wasConverted: validation.format === "hex",
|
|
49
|
-
length: transactionBytes.length
|
|
50
|
-
};
|
|
51
|
-
return result;
|
|
52
|
-
} catch (error) {
|
|
53
|
-
lastError = error instanceof Error ? error : new Error(String(error));
|
|
54
|
-
retryCount++;
|
|
55
|
-
if (!enableFallback || retryCount > maxRetries) {
|
|
56
|
-
if (strictMode) {
|
|
57
|
-
throw new TransactionParsingError(
|
|
58
|
-
"Failed to parse transaction after all attempts",
|
|
59
|
-
"PARSING_FAILED",
|
|
60
|
-
lastError,
|
|
61
|
-
transactionBytes
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
const result = this.parseScheduledTransaction(
|
|
68
|
-
transactionBytes,
|
|
69
|
-
options
|
|
70
|
-
);
|
|
71
|
-
result.formatDetection = {
|
|
72
|
-
originalFormat: validation.format || "base64",
|
|
73
|
-
wasConverted: false,
|
|
74
|
-
length: transactionBytes.length
|
|
75
|
-
};
|
|
76
|
-
return result;
|
|
77
|
-
} catch (scheduledError) {
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const fallbackResult = this.createFallbackResult(
|
|
82
|
-
transactionBytes,
|
|
83
|
-
lastError,
|
|
84
|
-
void 0
|
|
85
|
-
);
|
|
86
|
-
if (fallbackResult.details) {
|
|
87
|
-
fallbackResult.details.parseAttempts = Math.max(retryCount, 1);
|
|
88
|
-
}
|
|
89
|
-
return fallbackResult;
|
|
19
|
+
* Determines if a MIME type represents binary content
|
|
20
|
+
*/
|
|
21
|
+
isBinaryContentType(mimeType) {
|
|
22
|
+
const binaryTypes = [
|
|
23
|
+
"image/",
|
|
24
|
+
"audio/",
|
|
25
|
+
"video/",
|
|
26
|
+
"application/octet-stream",
|
|
27
|
+
"application/pdf",
|
|
28
|
+
"application/zip",
|
|
29
|
+
"application/gzip",
|
|
30
|
+
"application/x-binary",
|
|
31
|
+
"application/vnd.ms-",
|
|
32
|
+
"application/x-msdownload",
|
|
33
|
+
"application/x-shockwave-flash",
|
|
34
|
+
"font/",
|
|
35
|
+
"application/wasm"
|
|
36
|
+
];
|
|
37
|
+
return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
|
|
90
38
|
}
|
|
91
39
|
/**
|
|
92
|
-
*
|
|
93
|
-
* This method delegates to specialized parsers for clean separation of concerns
|
|
94
|
-
*
|
|
95
|
-
* @param transaction - The Transaction object to parse
|
|
96
|
-
* @param originalBytes - The original transaction bytes (optional, for protobuf parsing)
|
|
97
|
-
* @param options - Parsing options
|
|
98
|
-
* @returns Parsed transaction data
|
|
40
|
+
* Parses an HRL string into its components
|
|
99
41
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (originalBytesOrOptions && !Buffer.isBuffer(originalBytesOrOptions) && !(originalBytesOrOptions instanceof Uint8Array)) {
|
|
104
|
-
actualOptions = originalBytesOrOptions;
|
|
105
|
-
originalBytes = void 0;
|
|
106
|
-
} else {
|
|
107
|
-
originalBytes = originalBytesOrOptions;
|
|
108
|
-
actualOptions = options;
|
|
42
|
+
parseHRL(hrl) {
|
|
43
|
+
if (!hrl) {
|
|
44
|
+
return null;
|
|
109
45
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const hcsResult = HCSParser.parseFromTransactionObject(transaction);
|
|
115
|
-
const fileResult = FileParser.parseFromTransactionObject(transaction);
|
|
116
|
-
const scsResult = SCSParser.parseFromTransactionObject(transaction);
|
|
117
|
-
const scheduleResult = ScheduleParser.parseFromTransactionObject(transaction);
|
|
118
|
-
const utilResult = UtilParser.parseFromTransactionObject(transaction);
|
|
119
|
-
const results = [
|
|
120
|
-
htsResult,
|
|
121
|
-
cryptoResult,
|
|
122
|
-
hcsResult,
|
|
123
|
-
fileResult,
|
|
124
|
-
scsResult,
|
|
125
|
-
scheduleResult,
|
|
126
|
-
utilResult
|
|
127
|
-
];
|
|
128
|
-
const primaryResult = results.find((result2) => result2.type && result2.type !== "UNKNOWN") || {};
|
|
129
|
-
let finalType = "UNKNOWN";
|
|
130
|
-
let finalHumanReadableType = "Unknown Transaction";
|
|
131
|
-
let parsedTokenCreation;
|
|
132
|
-
let protoParsingResult = {};
|
|
133
|
-
if (originalBytes || transaction.toBytes) {
|
|
134
|
-
try {
|
|
135
|
-
const bytesToParse = originalBytes || transaction.toBytes();
|
|
136
|
-
const decoded = proto.TransactionList.decode(bytesToParse);
|
|
137
|
-
if (decoded.transactionList && decoded.transactionList.length > 0) {
|
|
138
|
-
const tx = decoded.transactionList[0];
|
|
139
|
-
if (tx.bodyBytes && tx.bodyBytes.length > 0) {
|
|
140
|
-
const txBody = proto.TransactionBody.decode(tx.bodyBytes);
|
|
141
|
-
const typeResult = this.detectTransactionTypeFromBody(txBody);
|
|
142
|
-
finalType = typeResult.type;
|
|
143
|
-
finalHumanReadableType = typeResult.humanReadableType;
|
|
144
|
-
protoParsingResult = this.parseTransactionBodyDetails(
|
|
145
|
-
txBody,
|
|
146
|
-
finalType
|
|
147
|
-
);
|
|
148
|
-
if (protoParsingResult.tokenCreation) {
|
|
149
|
-
parsedTokenCreation = protoParsingResult.tokenCreation;
|
|
150
|
-
}
|
|
151
|
-
} else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
|
|
152
|
-
const signedTx = proto.SignedTransaction.decode(
|
|
153
|
-
tx.signedTransactionBytes
|
|
154
|
-
);
|
|
155
|
-
if (signedTx.bodyBytes) {
|
|
156
|
-
const txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
|
|
157
|
-
const typeResult = this.detectTransactionTypeFromBody(txBody);
|
|
158
|
-
finalType = typeResult.type;
|
|
159
|
-
finalHumanReadableType = typeResult.humanReadableType;
|
|
160
|
-
protoParsingResult = this.parseTransactionBodyDetails(
|
|
161
|
-
txBody,
|
|
162
|
-
finalType
|
|
163
|
-
);
|
|
164
|
-
if (protoParsingResult.tokenCreation) {
|
|
165
|
-
parsedTokenCreation = protoParsingResult.tokenCreation;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
} catch (protoError) {
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (finalType === "UNKNOWN" && primaryResult.type) {
|
|
174
|
-
finalType = primaryResult.type;
|
|
175
|
-
finalHumanReadableType = primaryResult.humanReadableType || finalHumanReadableType;
|
|
176
|
-
}
|
|
177
|
-
const result = {
|
|
178
|
-
type: finalType,
|
|
179
|
-
humanReadableType: finalHumanReadableType,
|
|
180
|
-
transfers: [],
|
|
181
|
-
tokenTransfers: [],
|
|
182
|
-
...metadata,
|
|
183
|
-
...primaryResult,
|
|
184
|
-
raw: actualOptions.includeRaw ? transaction._transactionBody || {} : void 0
|
|
185
|
-
};
|
|
186
|
-
this.mergeProtoParsingResults(
|
|
187
|
-
result,
|
|
188
|
-
protoParsingResult,
|
|
189
|
-
htsResult,
|
|
190
|
-
transaction,
|
|
191
|
-
originalBytes
|
|
192
|
-
);
|
|
193
|
-
result.transfers = cryptoResult.transfers || result.transfers || [];
|
|
194
|
-
result.tokenTransfers = cryptoResult.tokenTransfers || result.tokenTransfers || [];
|
|
195
|
-
return result;
|
|
196
|
-
} catch (error) {
|
|
197
|
-
return {
|
|
198
|
-
type: "UNKNOWN",
|
|
199
|
-
humanReadableType: "Unknown Transaction",
|
|
200
|
-
transfers: [],
|
|
201
|
-
tokenTransfers: [],
|
|
202
|
-
raw: actualOptions.includeRaw ? {} : void 0,
|
|
203
|
-
details: {
|
|
204
|
-
error: `Failed to parse Transaction object: ${error instanceof Error ? error.message : String(error)}`
|
|
205
|
-
}
|
|
206
|
-
};
|
|
46
|
+
const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
|
|
47
|
+
const match = hrl.match(hrlPattern);
|
|
48
|
+
if (!match) {
|
|
49
|
+
return null;
|
|
207
50
|
}
|
|
51
|
+
return {
|
|
52
|
+
standard: match[1],
|
|
53
|
+
topicId: match[2]
|
|
54
|
+
};
|
|
208
55
|
}
|
|
209
56
|
/**
|
|
210
|
-
*
|
|
211
|
-
* @param transactionBodyBase64 - The base64 encoded transaction body
|
|
212
|
-
* @returns The parsed transaction
|
|
57
|
+
* Validates if a string is a valid HRL
|
|
213
58
|
*/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const txBody = proto.SchedulableTransactionBody.decode(buffer);
|
|
218
|
-
const transactionType = this.getTransactionType(txBody);
|
|
219
|
-
const result = {
|
|
220
|
-
type: transactionType,
|
|
221
|
-
humanReadableType: this.getHumanReadableType(transactionType),
|
|
222
|
-
transfers: [],
|
|
223
|
-
tokenTransfers: [],
|
|
224
|
-
raw: txBody
|
|
225
|
-
};
|
|
226
|
-
if (txBody.memo) {
|
|
227
|
-
result.memo = txBody.memo;
|
|
228
|
-
}
|
|
229
|
-
if (txBody.transactionFee) {
|
|
230
|
-
const hbarAmount = Hbar.fromTinybars(
|
|
231
|
-
Long.fromValue(txBody.transactionFee)
|
|
232
|
-
);
|
|
233
|
-
result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);
|
|
234
|
-
}
|
|
235
|
-
this.applySchedulableTransactionParsing(txBody, result);
|
|
236
|
-
return result;
|
|
237
|
-
} catch (error) {
|
|
238
|
-
return {
|
|
239
|
-
type: "UNKNOWN",
|
|
240
|
-
humanReadableType: "Unknown Transaction",
|
|
241
|
-
transfers: [],
|
|
242
|
-
tokenTransfers: [],
|
|
243
|
-
raw: void 0,
|
|
244
|
-
details: {
|
|
245
|
-
error: `Failed to parse transaction body: ${error instanceof Error ? error.message : String(error)}`
|
|
246
|
-
}
|
|
247
|
-
};
|
|
59
|
+
isValidHRL(hrl) {
|
|
60
|
+
if (!hrl || typeof hrl !== "string") {
|
|
61
|
+
return false;
|
|
248
62
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
* Uses registry pattern to eliminate massive if-else chain
|
|
253
|
-
*/
|
|
254
|
-
static detectTransactionTypeFromBody(txBody) {
|
|
255
|
-
return getTransactionTypeFromBody(txBody);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Parse details from a complete schedule response
|
|
259
|
-
* @param scheduleResponse - The schedule response to parse
|
|
260
|
-
* @returns The parsed transaction
|
|
261
|
-
*/
|
|
262
|
-
static parseScheduleResponse(scheduleResponse) {
|
|
263
|
-
if (!scheduleResponse.transaction_body) {
|
|
264
|
-
return {
|
|
265
|
-
type: "UNKNOWN",
|
|
266
|
-
humanReadableType: "Unknown Transaction",
|
|
267
|
-
transfers: [],
|
|
268
|
-
tokenTransfers: [],
|
|
269
|
-
raw: void 0,
|
|
270
|
-
details: {
|
|
271
|
-
error: "Schedule response missing transaction_body"
|
|
272
|
-
}
|
|
273
|
-
};
|
|
63
|
+
const parsed = this.parseHRL(hrl);
|
|
64
|
+
if (!parsed) {
|
|
65
|
+
return false;
|
|
274
66
|
}
|
|
275
|
-
const
|
|
276
|
-
if (
|
|
277
|
-
|
|
67
|
+
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
68
|
+
if (!topicIdPattern.test(parsed.topicId)) {
|
|
69
|
+
return false;
|
|
278
70
|
}
|
|
279
|
-
return
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Determine the transaction type using registry pattern
|
|
283
|
-
* @param txBody - The transaction body to determine the type of
|
|
284
|
-
* @returns The type of the transaction
|
|
285
|
-
*/
|
|
286
|
-
static getTransactionType(txBody) {
|
|
287
|
-
return getTransactionTypeFromBody(txBody).type;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Convert technical transaction type to human-readable format using registry pattern
|
|
291
|
-
* @param type - The technical transaction type
|
|
292
|
-
* @returns The human-readable transaction type
|
|
293
|
-
*/
|
|
294
|
-
static getHumanReadableType(type) {
|
|
295
|
-
return getHumanReadableTransactionType(type);
|
|
71
|
+
return true;
|
|
296
72
|
}
|
|
297
73
|
/**
|
|
298
|
-
*
|
|
299
|
-
* @param parsedTx - The parsed transaction
|
|
300
|
-
* @returns The human-readable summary of the transaction
|
|
74
|
+
* Validates if a string is a valid topic ID
|
|
301
75
|
*/
|
|
302
|
-
|
|
303
|
-
|
|
76
|
+
isValidTopicId(topicId) {
|
|
77
|
+
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
78
|
+
return topicIdPattern.test(topicId);
|
|
304
79
|
}
|
|
305
80
|
/**
|
|
306
|
-
*
|
|
307
|
-
*
|
|
81
|
+
* Resolves content from either an HRL or a topic ID
|
|
82
|
+
* If a topic ID is provided, it queries the topic memo to determine the HCS standard
|
|
308
83
|
*/
|
|
309
|
-
|
|
310
|
-
if (
|
|
311
|
-
return
|
|
312
|
-
isValid: false,
|
|
313
|
-
error: "Transaction bytes must be a non-empty string"
|
|
314
|
-
};
|
|
84
|
+
async resolve(hrlOrTopicId, options) {
|
|
85
|
+
if (this.isValidHRL(hrlOrTopicId)) {
|
|
86
|
+
return this.resolveHRL(hrlOrTopicId, options);
|
|
315
87
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
const hexRegex = /^0x[0-9a-fA-F]+$/;
|
|
319
|
-
let isValid = false;
|
|
320
|
-
let error;
|
|
321
|
-
if (format === "hex") {
|
|
322
|
-
isValid = hexRegex.test(transactionBytes) && transactionBytes.length > 2;
|
|
323
|
-
if (!isValid) {
|
|
324
|
-
error = "Invalid hex format";
|
|
325
|
-
}
|
|
326
|
-
} else {
|
|
327
|
-
isValid = base64Regex.test(transactionBytes) && transactionBytes.length > 0;
|
|
328
|
-
if (!isValid) {
|
|
329
|
-
error = "Invalid base64 format";
|
|
330
|
-
}
|
|
88
|
+
if (!this.isValidTopicId(hrlOrTopicId)) {
|
|
89
|
+
throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);
|
|
331
90
|
}
|
|
332
|
-
return {
|
|
333
|
-
isValid,
|
|
334
|
-
format,
|
|
335
|
-
error,
|
|
336
|
-
length: transactionBytes.length
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Detects the format of transaction bytes
|
|
341
|
-
* @param transactionBytes - The transaction bytes to analyze
|
|
342
|
-
* @returns The detected format ('base64' or 'hex')
|
|
343
|
-
*/
|
|
344
|
-
static detectTransactionFormat(transactionBytes) {
|
|
345
|
-
return transactionBytes.startsWith("0x") ? "hex" : "base64";
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Decodes transaction bytes from string to Uint8Array
|
|
349
|
-
* @param transactionBytes - The transaction bytes string (base64 or hex)
|
|
350
|
-
* @returns Decoded Uint8Array
|
|
351
|
-
* @throws TransactionParsingError if decoding fails
|
|
352
|
-
*/
|
|
353
|
-
static decodeTransactionBytes(transactionBytes) {
|
|
354
91
|
try {
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
92
|
+
const mirrorNode = new HederaMirrorNode(options.network, this.logger);
|
|
93
|
+
const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);
|
|
94
|
+
const memo = topicInfo?.memo || "";
|
|
95
|
+
let standard = "1";
|
|
96
|
+
if (memo) {
|
|
97
|
+
const hcsMatch = memo.match(/^hcs-(\d+)/);
|
|
98
|
+
if (hcsMatch && hcsMatch[1]) {
|
|
99
|
+
standard = hcsMatch[1];
|
|
100
|
+
}
|
|
361
101
|
}
|
|
102
|
+
const hrl = `hcs://${standard}/${hrlOrTopicId}`;
|
|
103
|
+
return this.resolveHRL(hrl, options);
|
|
362
104
|
} catch (error) {
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
"DECODE_ERROR",
|
|
366
|
-
error instanceof Error ? error : void 0,
|
|
367
|
-
transactionBytes
|
|
105
|
+
this.logger.error(
|
|
106
|
+
`Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
|
|
368
107
|
);
|
|
108
|
+
const hrl = `hcs://1/${hrlOrTopicId}`;
|
|
109
|
+
return this.resolveHRL(hrl, options);
|
|
369
110
|
}
|
|
370
111
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
return false;
|
|
378
|
-
}
|
|
379
|
-
const bytes = this.decodeTransactionBytes(transactionBytes);
|
|
380
|
-
Transaction.fromBytes(bytes);
|
|
381
|
-
return true;
|
|
382
|
-
} catch {
|
|
383
|
-
return false;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Legacy alias for decodeTransactionBytes - keeping for backward compatibility
|
|
388
|
-
*/
|
|
389
|
-
static decodeBytesLegacy(transactionBytes) {
|
|
390
|
-
return this.decodeTransactionBytes(transactionBytes);
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Parse transaction bytes into structured data using thin orchestration
|
|
394
|
-
* Delegates to specialized parsers for clean separation of concerns
|
|
395
|
-
*/
|
|
396
|
-
static async parseTransaction(transactionBytes, options = {}) {
|
|
397
|
-
try {
|
|
398
|
-
const bytes = this.decodeTransactionBytes(transactionBytes);
|
|
399
|
-
const transaction = Transaction.fromBytes(bytes);
|
|
400
|
-
const metadata = this.extractTransactionMetadataEnhanced(transaction);
|
|
401
|
-
const parserResults = this.runAllParsers(transaction);
|
|
402
|
-
const primaryResult = parserResults.find(
|
|
403
|
-
(result2) => result2.type && result2.type !== "UNKNOWN"
|
|
404
|
-
) || {};
|
|
405
|
-
const protoParsingResult = this.parseFromProtobuf(bytes);
|
|
406
|
-
const finalType = protoParsingResult.type || primaryResult.type || "UNKNOWN";
|
|
407
|
-
const finalHumanReadableType = protoParsingResult.humanReadableType || primaryResult.humanReadableType || "Unknown Transaction";
|
|
408
|
-
const result = {
|
|
409
|
-
type: finalType,
|
|
410
|
-
humanReadableType: finalHumanReadableType,
|
|
411
|
-
transfers: [],
|
|
412
|
-
tokenTransfers: [],
|
|
413
|
-
details: { ...metadata },
|
|
414
|
-
memo: typeof metadata.memo === "string" ? metadata.memo : void 0,
|
|
415
|
-
transactionId: typeof metadata.transactionId === "string" ? metadata.transactionId : void 0,
|
|
416
|
-
nodeAccountIds: Array.isArray(metadata.nodeAccountIds) ? metadata.nodeAccountIds : [],
|
|
417
|
-
maxTransactionFee: typeof metadata.maxTransactionFee === "string" ? metadata.maxTransactionFee : void 0,
|
|
418
|
-
validStart: typeof metadata.validStart === "string" ? metadata.validStart : void 0,
|
|
419
|
-
validDuration: typeof metadata.validDuration === "string" ? metadata.validDuration : void 0,
|
|
420
|
-
raw: options.includeRaw ? {} : void 0
|
|
112
|
+
async getContentWithType(hrl, options) {
|
|
113
|
+
if (!this.isValidHRL(hrl)) {
|
|
114
|
+
return {
|
|
115
|
+
content: hrl,
|
|
116
|
+
contentType: "text/plain",
|
|
117
|
+
isBinary: false
|
|
421
118
|
};
|
|
422
|
-
this.mergeAllResults(
|
|
423
|
-
result,
|
|
424
|
-
protoParsingResult,
|
|
425
|
-
primaryResult,
|
|
426
|
-
parserResults
|
|
427
|
-
);
|
|
428
|
-
return result;
|
|
429
|
-
} catch (error) {
|
|
430
|
-
throw new TransactionParsingError(
|
|
431
|
-
"Failed to parse as regular transaction",
|
|
432
|
-
"REGULAR_PARSING_FAILED",
|
|
433
|
-
error instanceof Error ? error : void 0,
|
|
434
|
-
transactionBytes
|
|
435
|
-
);
|
|
436
119
|
}
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Parse scheduled transaction body
|
|
440
|
-
*/
|
|
441
|
-
static parseScheduledTransaction(transactionBytes, options = {}) {
|
|
442
120
|
try {
|
|
443
|
-
const
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
...parsedTx.details || {},
|
|
449
|
-
parseMethod: "scheduled",
|
|
450
|
-
validation,
|
|
451
|
-
parseAttempts: parsedTx.details?.parseAttempts || 1
|
|
452
|
-
},
|
|
453
|
-
formatDetection: {
|
|
454
|
-
originalFormat: validation.format || "base64",
|
|
455
|
-
wasConverted: false,
|
|
456
|
-
length: transactionBytes.length
|
|
457
|
-
}
|
|
121
|
+
const result = await this.resolveHRL(hrl, options);
|
|
122
|
+
return {
|
|
123
|
+
content: result.content,
|
|
124
|
+
contentType: result.contentType,
|
|
125
|
+
isBinary: result.isBinary
|
|
458
126
|
};
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
error instanceof Error ? error : void 0,
|
|
465
|
-
transactionBytes
|
|
466
|
-
);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
const error = e;
|
|
129
|
+
const logMessage = `Error resolving HRL for content and type: ${error.message}`;
|
|
130
|
+
this.logger.error(logMessage);
|
|
131
|
+
throw new Error(logMessage);
|
|
467
132
|
}
|
|
468
133
|
}
|
|
469
134
|
/**
|
|
470
|
-
*
|
|
471
|
-
*/
|
|
472
|
-
static extractTransactionMetadata(transaction) {
|
|
473
|
-
return {
|
|
474
|
-
transactionId: transaction.transactionId?.toString(),
|
|
475
|
-
nodeAccountIds: transaction.nodeAccountIds?.map((id) => id.toString()) || [],
|
|
476
|
-
maxTransactionFee: transaction.maxTransactionFee?.toTinybars().toString() || "0",
|
|
477
|
-
memo: transaction._transactionMemo || void 0,
|
|
478
|
-
transfers: [],
|
|
479
|
-
tokenTransfers: []
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
/**
|
|
483
|
-
* Extract enhanced metadata from Transaction object
|
|
135
|
+
* Resolves HRL content with proper content type detection
|
|
484
136
|
*/
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
maxTransactionFee: transaction.maxTransactionFee?.toTinybars().toString() || "0",
|
|
490
|
-
memo: transaction._transactionMemo || void 0,
|
|
491
|
-
validStart: transaction._transactionValidStart?.toString(),
|
|
492
|
-
validDuration: transaction._transactionValidDuration?.toString()
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
/**
|
|
496
|
-
* Run all available parsers on a transaction
|
|
497
|
-
*/
|
|
498
|
-
static runAllParsers(transaction) {
|
|
499
|
-
return [
|
|
500
|
-
HTSParser.parseFromTransactionObject(transaction),
|
|
501
|
-
CryptoParser.parseFromTransactionObject(transaction),
|
|
502
|
-
HCSParser.parseFromTransactionObject(transaction),
|
|
503
|
-
FileParser.parseFromTransactionObject(transaction),
|
|
504
|
-
SCSParser.parseFromTransactionObject(transaction),
|
|
505
|
-
ScheduleParser.parseFromTransactionObject(transaction),
|
|
506
|
-
UtilParser.parseFromTransactionObject(transaction)
|
|
507
|
-
];
|
|
508
|
-
}
|
|
509
|
-
/**
|
|
510
|
-
* Parse transaction from protobuf bytes
|
|
511
|
-
*/
|
|
512
|
-
static parseFromProtobuf(bytes) {
|
|
513
|
-
const result = {};
|
|
514
|
-
try {
|
|
515
|
-
const decoded = proto.TransactionList.decode(bytes);
|
|
516
|
-
if (decoded.transactionList && decoded.transactionList.length > 0) {
|
|
517
|
-
const tx = decoded.transactionList[0];
|
|
518
|
-
let txBody = null;
|
|
519
|
-
if (tx.bodyBytes && tx.bodyBytes.length > 0) {
|
|
520
|
-
txBody = proto.TransactionBody.decode(tx.bodyBytes);
|
|
521
|
-
} else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
|
|
522
|
-
const signedTx = proto.SignedTransaction.decode(
|
|
523
|
-
tx.signedTransactionBytes
|
|
524
|
-
);
|
|
525
|
-
if (signedTx.bodyBytes) {
|
|
526
|
-
txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
if (txBody) {
|
|
530
|
-
const typeResult = this.detectTransactionTypeFromBody(txBody);
|
|
531
|
-
result.type = typeResult.type;
|
|
532
|
-
result.humanReadableType = typeResult.humanReadableType;
|
|
533
|
-
const details = this.parseTransactionBodyDetails(
|
|
534
|
-
txBody,
|
|
535
|
-
typeResult.type
|
|
536
|
-
);
|
|
537
|
-
Object.assign(result, details);
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
} catch (error) {
|
|
137
|
+
async resolveHRL(hrl, options) {
|
|
138
|
+
const parsed = this.parseHRL(hrl);
|
|
139
|
+
if (!parsed) {
|
|
140
|
+
throw new Error(`Invalid HRL format: ${hrl}`);
|
|
541
141
|
}
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
142
|
+
const { standard, topicId } = parsed;
|
|
143
|
+
this.logger.debug(
|
|
144
|
+
`Resolving HRL reference: standard=${standard}, topicId=${topicId}`
|
|
145
|
+
);
|
|
146
|
+
try {
|
|
147
|
+
const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
|
|
148
|
+
const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
|
|
149
|
+
this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
|
|
150
|
+
const headResponse = await axios.head(cdnUrl);
|
|
151
|
+
const contentType = headResponse.headers["content-type"] || "";
|
|
152
|
+
const isBinary = this.isBinaryContentType(contentType);
|
|
153
|
+
if (isBinary || options.returnRaw) {
|
|
154
|
+
const response2 = await axios.get(cdnUrl, {
|
|
155
|
+
responseType: "arraybuffer"
|
|
156
|
+
});
|
|
157
|
+
return {
|
|
158
|
+
content: response2.data,
|
|
159
|
+
contentType,
|
|
160
|
+
topicId,
|
|
161
|
+
isBinary: true
|
|
162
|
+
};
|
|
559
163
|
}
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
static applySchedulableTransactionParsing(txBody, result) {
|
|
567
|
-
if (txBody.cryptoTransfer) {
|
|
568
|
-
CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);
|
|
569
|
-
}
|
|
570
|
-
if (txBody.cryptoDelete) {
|
|
571
|
-
result.cryptoDelete = CryptoParser.parseCryptoDelete(txBody.cryptoDelete);
|
|
572
|
-
}
|
|
573
|
-
if (txBody.cryptoCreateAccount) {
|
|
574
|
-
result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(
|
|
575
|
-
txBody.cryptoCreateAccount
|
|
576
|
-
);
|
|
577
|
-
}
|
|
578
|
-
if (txBody.cryptoUpdateAccount) {
|
|
579
|
-
result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(
|
|
580
|
-
txBody.cryptoUpdateAccount
|
|
581
|
-
);
|
|
582
|
-
}
|
|
583
|
-
if (txBody.cryptoApproveAllowance) {
|
|
584
|
-
result.cryptoApproveAllowance = CryptoParser.parseCryptoApproveAllowance(
|
|
585
|
-
txBody.cryptoApproveAllowance
|
|
586
|
-
);
|
|
587
|
-
}
|
|
588
|
-
if (txBody.cryptoDeleteAllowance) {
|
|
589
|
-
result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(
|
|
590
|
-
txBody.cryptoDeleteAllowance
|
|
591
|
-
);
|
|
592
|
-
}
|
|
593
|
-
if (txBody.contractCall) {
|
|
594
|
-
result.contractCall = SCSParser.parseContractCall(txBody.contractCall);
|
|
595
|
-
}
|
|
596
|
-
if (txBody.contractCreateInstance) {
|
|
597
|
-
result.contractCreate = SCSParser.parseContractCreate(
|
|
598
|
-
txBody.contractCreateInstance
|
|
599
|
-
);
|
|
600
|
-
}
|
|
601
|
-
if (txBody.contractUpdateInstance) {
|
|
602
|
-
result.contractUpdate = SCSParser.parseContractUpdate(
|
|
603
|
-
txBody.contractUpdateInstance
|
|
604
|
-
);
|
|
605
|
-
}
|
|
606
|
-
if (txBody.contractDeleteInstance) {
|
|
607
|
-
result.contractDelete = SCSParser.parseContractDelete(
|
|
608
|
-
txBody.contractDeleteInstance
|
|
609
|
-
);
|
|
610
|
-
}
|
|
611
|
-
if (txBody.tokenCreation) {
|
|
612
|
-
result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);
|
|
613
|
-
}
|
|
614
|
-
if (txBody.tokenMint) {
|
|
615
|
-
result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);
|
|
616
|
-
}
|
|
617
|
-
if (txBody.tokenBurn) {
|
|
618
|
-
result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);
|
|
619
|
-
}
|
|
620
|
-
if (txBody.tokenUpdate) {
|
|
621
|
-
result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);
|
|
622
|
-
}
|
|
623
|
-
if (txBody.tokenFeeScheduleUpdate) {
|
|
624
|
-
result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(
|
|
625
|
-
txBody.tokenFeeScheduleUpdate
|
|
626
|
-
);
|
|
627
|
-
}
|
|
628
|
-
if (txBody.tokenFreeze) {
|
|
629
|
-
result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);
|
|
630
|
-
}
|
|
631
|
-
if (txBody.tokenUnfreeze) {
|
|
632
|
-
result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(txBody.tokenUnfreeze);
|
|
633
|
-
}
|
|
634
|
-
if (txBody.tokenGrantKyc) {
|
|
635
|
-
result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(txBody.tokenGrantKyc);
|
|
636
|
-
}
|
|
637
|
-
if (txBody.tokenRevokeKyc) {
|
|
638
|
-
result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(
|
|
639
|
-
txBody.tokenRevokeKyc
|
|
640
|
-
);
|
|
641
|
-
}
|
|
642
|
-
if (txBody.tokenPause) {
|
|
643
|
-
result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);
|
|
644
|
-
}
|
|
645
|
-
if (txBody.tokenUnpause) {
|
|
646
|
-
result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);
|
|
647
|
-
}
|
|
648
|
-
if (txBody.tokenWipe) {
|
|
649
|
-
result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(
|
|
650
|
-
txBody.tokenWipe
|
|
651
|
-
);
|
|
652
|
-
}
|
|
653
|
-
if (txBody.tokenDeletion) {
|
|
654
|
-
result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);
|
|
655
|
-
}
|
|
656
|
-
if (txBody.tokenAssociate) {
|
|
657
|
-
result.tokenAssociate = HTSParser.parseTokenAssociate(
|
|
658
|
-
txBody.tokenAssociate
|
|
659
|
-
);
|
|
660
|
-
}
|
|
661
|
-
if (txBody.tokenDissociate) {
|
|
662
|
-
result.tokenDissociate = HTSParser.parseTokenDissociate(
|
|
663
|
-
txBody.tokenDissociate
|
|
664
|
-
);
|
|
665
|
-
}
|
|
666
|
-
if (txBody.tokenAirdrop) {
|
|
667
|
-
result.tokenAirdrop = HTSParser.parseTokenAirdropFromProto(
|
|
668
|
-
txBody.tokenAirdrop
|
|
669
|
-
);
|
|
670
|
-
}
|
|
671
|
-
if (txBody.consensusCreateTopic) {
|
|
672
|
-
result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(
|
|
673
|
-
txBody.consensusCreateTopic
|
|
674
|
-
);
|
|
675
|
-
}
|
|
676
|
-
if (txBody.consensusSubmitMessage) {
|
|
677
|
-
result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(
|
|
678
|
-
txBody.consensusSubmitMessage
|
|
679
|
-
);
|
|
680
|
-
}
|
|
681
|
-
if (txBody.consensusUpdateTopic) {
|
|
682
|
-
result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(
|
|
683
|
-
txBody.consensusUpdateTopic
|
|
684
|
-
);
|
|
685
|
-
}
|
|
686
|
-
if (txBody.consensusDeleteTopic) {
|
|
687
|
-
result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(
|
|
688
|
-
txBody.consensusDeleteTopic
|
|
689
|
-
);
|
|
690
|
-
}
|
|
691
|
-
if (txBody.fileCreate) {
|
|
692
|
-
result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);
|
|
693
|
-
}
|
|
694
|
-
if (txBody.fileAppend) {
|
|
695
|
-
result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);
|
|
696
|
-
}
|
|
697
|
-
if (txBody.fileUpdate) {
|
|
698
|
-
result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);
|
|
699
|
-
}
|
|
700
|
-
if (txBody.fileDelete) {
|
|
701
|
-
result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);
|
|
702
|
-
}
|
|
703
|
-
if (txBody.utilPrng) {
|
|
704
|
-
result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
/**
|
|
708
|
-
* Parse transaction body details for all supported transaction types
|
|
709
|
-
* Uses a scalable registry pattern instead of if-else chains
|
|
710
|
-
*/
|
|
711
|
-
static parseTransactionBodyDetails(txBody, transactionType) {
|
|
712
|
-
const result = {};
|
|
713
|
-
const parserConfig = transactionParserRegistry[transactionType];
|
|
714
|
-
if (parserConfig) {
|
|
715
|
-
const bodyData = txBody[parserConfig.bodyField];
|
|
716
|
-
if (bodyData) {
|
|
717
|
-
const parserResult = parserConfig.parser(bodyData);
|
|
718
|
-
if (parserConfig.spreadResult) {
|
|
719
|
-
Object.assign(result, parserResult);
|
|
720
|
-
} else {
|
|
721
|
-
result[parserConfig.resultField] = parserResult;
|
|
164
|
+
if (contentType === "application/json") {
|
|
165
|
+
const response2 = await axios.get(cdnUrl, {
|
|
166
|
+
responseType: "json"
|
|
167
|
+
});
|
|
168
|
+
if (!response2.data) {
|
|
169
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
722
170
|
}
|
|
171
|
+
return {
|
|
172
|
+
content: response2.data,
|
|
173
|
+
contentType,
|
|
174
|
+
topicId,
|
|
175
|
+
isBinary: false
|
|
176
|
+
};
|
|
723
177
|
}
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
/**
|
|
728
|
-
* Merge protobuf parsing results with parser results using registry pattern
|
|
729
|
-
* Eliminates transactionFields array and forEach logic
|
|
730
|
-
*/
|
|
731
|
-
static mergeProtoParsingResults(result, protoResult, htsResult, transaction, originalBytes) {
|
|
732
|
-
const fieldsToMerge = Object.values(transactionParserRegistry).map(
|
|
733
|
-
(config) => config.resultField
|
|
734
|
-
);
|
|
735
|
-
for (const field of fieldsToMerge) {
|
|
736
|
-
const protoValue = protoResult[field];
|
|
737
|
-
const htsValue = htsResult[field];
|
|
738
|
-
if (protoValue !== void 0) {
|
|
739
|
-
result[field] = protoValue;
|
|
740
|
-
} else if (htsValue !== void 0) {
|
|
741
|
-
result[field] = htsValue;
|
|
742
|
-
} else {
|
|
743
|
-
this.handleSpecialFieldExtraction(result, field, transaction);
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
/**
|
|
748
|
-
* Handle special field extraction cases using registry pattern
|
|
749
|
-
*/
|
|
750
|
-
static handleSpecialFieldExtraction(result, field, transaction) {
|
|
751
|
-
if (field === "tokenCreation" && result.type === "TOKENCREATE") {
|
|
752
|
-
const extracted = HTSParser.extractTokenCreationFromTransaction(transaction);
|
|
753
|
-
if (extracted) {
|
|
754
|
-
result[field] = extracted;
|
|
178
|
+
const response = await axios.get(cdnUrl);
|
|
179
|
+
if (!response.data) {
|
|
180
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
755
181
|
}
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
182
|
+
let content;
|
|
183
|
+
if (typeof response.data === "object") {
|
|
184
|
+
content = response.data.content || response.data.text || JSON.stringify(response.data);
|
|
185
|
+
} else {
|
|
186
|
+
content = response.data;
|
|
760
187
|
}
|
|
188
|
+
return {
|
|
189
|
+
content,
|
|
190
|
+
contentType,
|
|
191
|
+
topicId,
|
|
192
|
+
isBinary: false
|
|
193
|
+
};
|
|
194
|
+
} catch (e) {
|
|
195
|
+
const error = e;
|
|
196
|
+
const logMessage = `Error resolving HRL reference: ${error.message}`;
|
|
197
|
+
this.logger.error(logMessage);
|
|
198
|
+
throw new Error(logMessage);
|
|
761
199
|
}
|
|
762
200
|
}
|
|
763
|
-
/**
|
|
764
|
-
* Create fallback result when all parsing methods fail
|
|
765
|
-
*/
|
|
766
|
-
static createFallbackResult(transactionBytes, primaryError, secondaryError) {
|
|
767
|
-
const validation = this.validateTransactionBytes(transactionBytes);
|
|
768
|
-
return {
|
|
769
|
-
type: "UNKNOWN",
|
|
770
|
-
humanReadableType: "Unknown Transaction",
|
|
771
|
-
transfers: [],
|
|
772
|
-
tokenTransfers: [],
|
|
773
|
-
details: {
|
|
774
|
-
rawBytes: transactionBytes.length > 100 ? transactionBytes.substring(0, 100) + "..." : transactionBytes,
|
|
775
|
-
primaryError: primaryError?.message,
|
|
776
|
-
secondaryError: secondaryError?.message,
|
|
777
|
-
parseAttempts: secondaryError ? 2 : 1,
|
|
778
|
-
validation
|
|
779
|
-
},
|
|
780
|
-
formatDetection: {
|
|
781
|
-
originalFormat: validation.format || "base64",
|
|
782
|
-
wasConverted: false,
|
|
783
|
-
length: transactionBytes.length
|
|
784
|
-
},
|
|
785
|
-
raw: {}
|
|
786
|
-
};
|
|
787
|
-
}
|
|
788
201
|
}
|
|
789
202
|
export {
|
|
790
|
-
|
|
791
|
-
TransactionParsingError
|
|
203
|
+
HRLResolver
|
|
792
204
|
};
|
|
793
205
|
//# sourceMappingURL=standards-sdk.es152.js.map
|