@hashgraphonline/standards-sdk 0.1.161 → 0.1.162
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/cjs/hcs-14/index.d.ts +1 -0
- package/dist/cjs/hcs-14/index.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts +1 -0
- package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts +23 -0
- package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts.map +1 -0
- package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile.d.ts +32 -0
- package/dist/cjs/hcs-14/resolvers/ans-dns-web-profile.d.ts.map +1 -0
- package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts +1 -0
- package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/hiero.d.ts +1 -0
- package/dist/cjs/hcs-14/resolvers/hiero.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/registry.d.ts +21 -0
- package/dist/cjs/hcs-14/resolvers/registry.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/types.d.ts +40 -5
- package/dist/cjs/hcs-14/resolvers/types.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +1 -0
- package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts +1 -0
- package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -1
- package/dist/cjs/hcs-14/sdk.d.ts +23 -1
- package/dist/cjs/hcs-14/sdk.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-14/index.d.ts +1 -0
- package/dist/es/hcs-14/index.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts +1 -0
- package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts +23 -0
- package/dist/es/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts.map +1 -0
- package/dist/es/hcs-14/resolvers/ans-dns-web-profile.d.ts +32 -0
- package/dist/es/hcs-14/resolvers/ans-dns-web-profile.d.ts.map +1 -0
- package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts +1 -0
- package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/hiero.d.ts +1 -0
- package/dist/es/hcs-14/resolvers/hiero.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/registry.d.ts +21 -0
- package/dist/es/hcs-14/resolvers/registry.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/types.d.ts +40 -5
- package/dist/es/hcs-14/resolvers/types.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +1 -0
- package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts +1 -0
- package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -1
- package/dist/es/hcs-14/sdk.d.ts +23 -1
- package/dist/es/hcs-14/sdk.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +89 -86
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +136 -124
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +138 -42
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +43 -259
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +245 -82
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +50 -49
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +100 -29
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +27 -229
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +228 -109
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +94 -15
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +30 -80
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +80 -27
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +27 -248
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +246 -472
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +458 -85
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +96 -151
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +155 -29
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +26 -4
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +10 -140
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +140 -27
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +27 -20
- 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 +18 -156
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +148 -191
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +160 -747
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +786 -9
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +13 -567
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +541 -576
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +601 -12
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +13 -2
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +2 -87
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +84 -37
- 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 +40 -2
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +2 -235
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +204 -1109
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +1059 -225
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +303 -419
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +418 -351
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +347 -1108
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +1088 -180
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +153 -1512
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +1567 -1255
- 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 +1255 -17
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +15 -85
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +77 -71
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +79 -891
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +886 -53
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +53 -152
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +159 -7
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +7 -86
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +65 -44
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +65 -30
- 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 +30 -34
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +34 -45
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +48 -138
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +133 -37
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +34 -12474
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +12477 -12
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +15 -54
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +48 -76
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +69 -66
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +71 -63
- 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 +188 -160
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +65 -314
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +232 -336
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +129 -410
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +200 -209
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +334 -64
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +442 -231
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +317 -158
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +61 -207
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +155 -222
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +178 -75
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +226 -113
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +77 -119
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +103 -162
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +141 -119
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +152 -298
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +120 -240
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +298 -83
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +262 -0
- package/dist/es/standards-sdk.es178.js.map +1 -0
- package/dist/es/standards-sdk.es179.js +119 -0
- package/dist/es/standards-sdk.es179.js.map +1 -0
- package/dist/es/standards-sdk.es18.js +12 -12
- 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.es58.js +37 -4
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +17 -10
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +2 -1
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +1 -0
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +19 -5
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +214 -153
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +205 -84
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +125 -40
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +41 -261
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +262 -24
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +25 -87
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +95 -3
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es70.js +3 -100
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +62 -61
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +98 -17
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +19 -77
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +77 -458
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +240 -106
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +286 -170
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +207 -71
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +72 -71
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +71 -143
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +136 -62
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +45 -380
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +130 -222
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +444 -313
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +364 -88
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +89 -125
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +125 -8
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +6 -45
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +44 -98
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +84 -331
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +160 -93
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +275 -55
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +55 -43
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +44 -145
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +113 -30
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +59 -22
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +28 -23
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +23 -238
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +225 -267
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +220 -95
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,104 +1,50 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { HCS21ValidationError } from "./standards-sdk.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es154.js";
|
|
2
|
+
import { HCS21TopicType, HCS21MetadataPointerPattern, HCS21_SAFE_MESSAGE_BYTES, HCS21_MAX_MESSAGE_BYTES } from "./standards-sdk.es86.js";
|
|
3
|
+
import { HCS21ValidationError } from "./standards-sdk.es87.js";
|
|
4
|
+
function buildHcs21RegistryMemo(params) {
|
|
5
|
+
const indexed = params.indexed ?? 0;
|
|
6
|
+
const topicType = params.type ?? HCS21TopicType.ADAPTER_REGISTRY;
|
|
7
|
+
if (params.metaTopicId && !HCS21MetadataPointerPattern.test(params.metaTopicId)) {
|
|
8
|
+
throw new HCS21ValidationError(
|
|
9
|
+
"Meta value must be a short pointer (topic ID, HRL, IPFS, Arweave, OCI, or HTTPS)",
|
|
10
|
+
"invalid_payload"
|
|
11
|
+
);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
throw new HCS21ValidationError(message, "invalid_payload");
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async fetchDeclarations(topicId, options) {
|
|
42
|
-
const rawMessages = await this.mirrorNode.getTopicMessages(topicId, {
|
|
43
|
-
limit: options?.limit,
|
|
44
|
-
order: options?.order
|
|
45
|
-
});
|
|
46
|
-
const envelopes = [];
|
|
47
|
-
for (const message of rawMessages) {
|
|
48
|
-
if (message.p !== HCS21_PROTOCOL) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
try {
|
|
52
|
-
const declaration = this.validateDeclaration(message);
|
|
53
|
-
envelopes.push({
|
|
54
|
-
declaration,
|
|
55
|
-
consensusTimestamp: message.consensus_timestamp,
|
|
56
|
-
sequenceNumber: message.sequence_number,
|
|
57
|
-
payer: message.payer
|
|
58
|
-
});
|
|
59
|
-
} catch (error) {
|
|
60
|
-
const detail = error instanceof Error ? error.message : "unknown error";
|
|
61
|
-
this.logger.warn(`Skipping invalid HCS-21 message: ${detail}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return envelopes;
|
|
65
|
-
}
|
|
66
|
-
async fetchCategoryEntries(topicId) {
|
|
67
|
-
const rawMessages = await this.mirrorNode.getTopicMessages(topicId);
|
|
68
|
-
const entries = [];
|
|
69
|
-
for (const message of rawMessages) {
|
|
70
|
-
if (message.p !== "hcs-2" || message.op !== "register") {
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
if (!message.t_id || typeof message.t_id !== "string") {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const memo = typeof message.m === "string" ? message.m : void 0;
|
|
77
|
-
const adapterId = memo?.startsWith("adapter:") ? memo.slice("adapter:".length) : memo;
|
|
78
|
-
entries.push({
|
|
79
|
-
adapterId: adapterId ?? message.t_id,
|
|
80
|
-
adapterTopicId: message.t_id,
|
|
81
|
-
metadata: message.metadata,
|
|
82
|
-
memo,
|
|
83
|
-
payer: message.payer,
|
|
84
|
-
sequenceNumber: Number(message.sequence_number ?? 0),
|
|
85
|
-
consensusTimestamp: message.consensus_timestamp
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
return entries;
|
|
89
|
-
}
|
|
90
|
-
assertSizeLimit(payload) {
|
|
91
|
-
const json = JSON.stringify(payload);
|
|
92
|
-
const bytes = Buffer.byteLength(json, "utf8");
|
|
93
|
-
if (bytes > HCS21_SAFE_MESSAGE_BYTES) {
|
|
94
|
-
throw new HCS21ValidationError(
|
|
95
|
-
`HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,
|
|
96
|
-
"size_exceeded"
|
|
97
|
-
);
|
|
98
|
-
}
|
|
13
|
+
const metaSegment = params.metaTopicId ? `:${params.metaTopicId}` : "";
|
|
14
|
+
return `hcs-21:${indexed}:${params.ttl}:${topicType}${metaSegment}`;
|
|
15
|
+
}
|
|
16
|
+
function buildHcs21CreateRegistryTx(params) {
|
|
17
|
+
const memo = buildHcs21RegistryMemo({
|
|
18
|
+
ttl: params.ttl,
|
|
19
|
+
indexed: params.indexed,
|
|
20
|
+
type: params.type,
|
|
21
|
+
metaTopicId: params.metaTopicId
|
|
22
|
+
});
|
|
23
|
+
return buildTopicCreateTx({
|
|
24
|
+
memo,
|
|
25
|
+
adminKey: params.adminKey,
|
|
26
|
+
submitKey: params.submitKey,
|
|
27
|
+
operatorPublicKey: params.operatorPublicKey
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function buildHcs21MessageTx(params) {
|
|
31
|
+
const json = JSON.stringify(params.declaration);
|
|
32
|
+
const bytes = Buffer.byteLength(json, "utf8");
|
|
33
|
+
if (bytes > HCS21_SAFE_MESSAGE_BYTES) {
|
|
34
|
+
throw new HCS21ValidationError(
|
|
35
|
+
`HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,
|
|
36
|
+
"size_exceeded"
|
|
37
|
+
);
|
|
99
38
|
}
|
|
39
|
+
return buildMessageTx({
|
|
40
|
+
topicId: params.topicId,
|
|
41
|
+
message: JSON.stringify(params.declaration),
|
|
42
|
+
transactionMemo: params.transactionMemo
|
|
43
|
+
});
|
|
100
44
|
}
|
|
101
45
|
export {
|
|
102
|
-
|
|
46
|
+
buildHcs21CreateRegistryTx,
|
|
47
|
+
buildHcs21MessageTx,
|
|
48
|
+
buildHcs21RegistryMemo
|
|
103
49
|
};
|
|
104
50
|
//# sourceMappingURL=standards-sdk.es88.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es88.js","sources":["../../src/hcs-21/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es88.js","sources":["../../src/hcs-21/tx.ts"],"sourcesContent":["import {\n PublicKey,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n} from '@hashgraph/sdk';\nimport {\n buildTopicCreateTx,\n buildMessageTx,\n MaybeKey,\n} from '../common/tx/tx-utils';\nimport {\n HCS21TopicType,\n AdapterDeclaration,\n HCS21MetadataPointerPattern,\n HCS21_SAFE_MESSAGE_BYTES,\n HCS21_MAX_MESSAGE_BYTES,\n} from './types';\nimport { HCS21ValidationError } from './errors';\n\nexport function buildHcs21RegistryMemo(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n}): string {\n const indexed = params.indexed ?? 0;\n const topicType = params.type ?? HCS21TopicType.ADAPTER_REGISTRY;\n\n if (\n params.metaTopicId &&\n !HCS21MetadataPointerPattern.test(params.metaTopicId)\n ) {\n throw new HCS21ValidationError(\n 'Meta value must be a short pointer (topic ID, HRL, IPFS, Arweave, OCI, or HTTPS)',\n 'invalid_payload',\n );\n }\n\n const metaSegment = params.metaTopicId ? `:${params.metaTopicId}` : '';\n return `hcs-21:${indexed}:${params.ttl}:${topicType}${metaSegment}`;\n}\n\nexport function buildHcs21CreateRegistryTx(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n}): TopicCreateTransaction {\n const memo = buildHcs21RegistryMemo({\n ttl: params.ttl,\n indexed: params.indexed,\n type: params.type,\n metaTopicId: params.metaTopicId,\n });\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nexport function buildHcs21MessageTx(params: {\n topicId: string;\n declaration: AdapterDeclaration;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const json = JSON.stringify(params.declaration);\n const bytes = Buffer.byteLength(json, 'utf8');\n if (bytes > HCS21_SAFE_MESSAGE_BYTES) {\n throw new HCS21ValidationError(\n `HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,\n 'size_exceeded',\n );\n }\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(params.declaration),\n transactionMemo: params.transactionMemo,\n });\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,uBAAuB,QAK5B;AACT,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,YAAY,OAAO,QAAQ,eAAe;AAEhD,MACE,OAAO,eACP,CAAC,4BAA4B,KAAK,OAAO,WAAW,GACpD;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,cAAc,OAAO,cAAc,IAAI,OAAO,WAAW,KAAK;AACpE,SAAO,UAAU,OAAO,IAAI,OAAO,GAAG,IAAI,SAAS,GAAG,WAAW;AACnE;AAEO,SAAS,2BAA2B,QAQhB;AACzB,QAAM,OAAO,uBAAuB;AAAA,IAClC,KAAK,OAAO;AAAA,IACZ,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,EAAA,CACrB;AACD,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEO,SAAS,oBAAoB,QAIF;AAChC,QAAM,OAAO,KAAK,UAAU,OAAO,WAAW;AAC9C,QAAM,QAAQ,OAAO,WAAW,MAAM,MAAM;AAC5C,MAAI,QAAQ,0BAA0B;AACpC,UAAM,IAAI;AAAA,MACR,wCAAwC,wBAAwB,WAAW,KAAK,oBAAoB,uBAAuB;AAAA,MAC3H;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO,WAAW;AAAA,IAC1C,iBAAiB,OAAO;AAAA,EAAA,CACzB;AACH;"}
|
|
@@ -1,351 +1,104 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { getTopicId } from "./standards-sdk.es126.js";
|
|
12
|
-
class HCS21Client extends HCS21BaseClient {
|
|
13
|
-
constructor(config) {
|
|
14
|
-
const logger = config.logger || new Logger({ level: config.logLevel || "info", module: "HCS-21" });
|
|
15
|
-
super({
|
|
16
|
-
network: config.network,
|
|
17
|
-
logger,
|
|
18
|
-
mirrorNodeUrl: config.mirrorNodeUrl
|
|
1
|
+
import { HederaMirrorNode } from "./standards-sdk.es139.js";
|
|
2
|
+
import { Logger } from "./standards-sdk.es118.js";
|
|
3
|
+
import { HCS21ValidationError } from "./standards-sdk.es87.js";
|
|
4
|
+
import { HCS21_PROTOCOL, adapterDeclarationSchema, HCS21_SAFE_MESSAGE_BYTES, HCS21_MAX_MESSAGE_BYTES } from "./standards-sdk.es86.js";
|
|
5
|
+
class HCS21BaseClient {
|
|
6
|
+
constructor(params) {
|
|
7
|
+
this.network = params.network;
|
|
8
|
+
this.logger = params.logger || new Logger({ level: "info", module: "HCS-21" });
|
|
9
|
+
this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {
|
|
10
|
+
customUrl: params.mirrorNodeUrl
|
|
19
11
|
});
|
|
20
|
-
const baseClient = config.network === "mainnet" ? Client.forMainnet() : Client.forTestnet();
|
|
21
|
-
this.operatorCtx = createNodeOperatorContext({
|
|
22
|
-
network: config.network,
|
|
23
|
-
operatorId: config.operatorId,
|
|
24
|
-
operatorKey: config.operatorKey,
|
|
25
|
-
keyType: config.keyType,
|
|
26
|
-
mirrorNode: this.mirrorNode,
|
|
27
|
-
logger: this.logger,
|
|
28
|
-
client: baseClient
|
|
29
|
-
});
|
|
30
|
-
void this.operatorCtx.ensureInitialized();
|
|
31
|
-
this.client = this.operatorCtx.client;
|
|
32
12
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
...params.inscriptionOptions?.metadata || {},
|
|
46
|
-
...metadataPayload
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
const inscription = await inscribe(
|
|
50
|
-
{
|
|
51
|
-
type: "buffer",
|
|
52
|
-
buffer,
|
|
53
|
-
fileName: params.fileName || `hcs21-adapter-manifest-${Date.now()}.json`,
|
|
54
|
-
mimeType: "application/json"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
accountId: this.operatorCtx.operatorId.toString(),
|
|
58
|
-
privateKey: this.operatorCtx.operatorKey,
|
|
59
|
-
network: this.network
|
|
60
|
-
},
|
|
61
|
-
inscriptionOptions
|
|
62
|
-
);
|
|
63
|
-
if (!inscription.confirmed || !inscription.inscription) {
|
|
64
|
-
throw new HCS21ValidationError(
|
|
65
|
-
"Failed to inscribe HCS-21 metadata",
|
|
66
|
-
"invalid_payload"
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
const topicId = inscription.inscription.jsonTopicId || inscription.inscription.topic_id || getTopicId(inscription.inscription);
|
|
70
|
-
if (!topicId) {
|
|
71
|
-
throw new HCS21ValidationError(
|
|
72
|
-
"Metadata inscription did not return a topic ID",
|
|
73
|
-
"invalid_payload"
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
const rawSequence = inscription.inscription.sequence_number ?? inscription.inscription.sequenceNumber;
|
|
77
|
-
const pointerResult = await this.resolveManifestPointer(
|
|
78
|
-
topicId,
|
|
79
|
-
rawSequence
|
|
80
|
-
);
|
|
81
|
-
const declarationManifestSequence = inscription.result?.manifest_sequence;
|
|
82
|
-
const resultDetails = inscription.result && "jobId" in inscription.result ? {
|
|
83
|
-
jobId: inscription.result.jobId,
|
|
84
|
-
transactionId: inscription.result.transactionId,
|
|
85
|
-
totalCostHbar: inscription.costSummary?.totalCostHbar,
|
|
86
|
-
costBreakdown: inscription.costSummary?.breakdown
|
|
87
|
-
} : {};
|
|
88
|
-
return {
|
|
89
|
-
pointer: pointerResult.pointer,
|
|
90
|
-
topicId,
|
|
91
|
-
sequenceNumber: pointerResult.sequenceNumber,
|
|
92
|
-
manifestSequence: declarationManifestSequence || pointerResult.sequenceNumber,
|
|
93
|
-
...resultDetails
|
|
13
|
+
buildDeclaration(params) {
|
|
14
|
+
const declaration = {
|
|
15
|
+
p: HCS21_PROTOCOL,
|
|
16
|
+
op: params.op,
|
|
17
|
+
adapter_id: params.adapterId,
|
|
18
|
+
entity: params.entity,
|
|
19
|
+
package: params.adapterPackage,
|
|
20
|
+
manifest: params.manifest,
|
|
21
|
+
...params.manifestSequence ? { manifest_sequence: params.manifestSequence } : {},
|
|
22
|
+
config: params.config,
|
|
23
|
+
state_model: params.stateModel,
|
|
24
|
+
signature: params.signature
|
|
94
25
|
};
|
|
26
|
+
return this.validateDeclaration(declaration);
|
|
95
27
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
type: params.type,
|
|
102
|
-
metaTopicId: params.metaTopicId,
|
|
103
|
-
adminKey: params.adminKey,
|
|
104
|
-
submitKey: params.submitKey,
|
|
105
|
-
operatorPublicKey: this.operatorCtx.operatorKey.publicKey
|
|
106
|
-
});
|
|
107
|
-
if (params.transactionMemo) {
|
|
108
|
-
tx.setTransactionMemo(params.transactionMemo);
|
|
109
|
-
}
|
|
110
|
-
const response = await tx.execute(this.client);
|
|
111
|
-
const receipt = await response.getReceipt(this.client);
|
|
112
|
-
if (receipt.status !== Status.Success || !receipt.topicId) {
|
|
113
|
-
throw new HCS21ValidationError(
|
|
114
|
-
"Failed to create HCS-21 registry topic",
|
|
115
|
-
"invalid_payload"
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
return receipt.topicId.toString();
|
|
119
|
-
}
|
|
120
|
-
async createAdapterVersionPointerTopic(params) {
|
|
121
|
-
await this.operatorCtx.ensureInitialized();
|
|
122
|
-
const tx = buildHcs2CreateRegistryTx({
|
|
123
|
-
registryType: HCS2RegistryType.NON_INDEXED,
|
|
124
|
-
ttl: params.ttl,
|
|
125
|
-
adminKey: params.adminKey,
|
|
126
|
-
submitKey: params.submitKey,
|
|
127
|
-
memoOverride: params.memoOverride,
|
|
128
|
-
operatorPublicKey: this.operatorCtx.operatorKey.publicKey
|
|
129
|
-
});
|
|
130
|
-
if (params.transactionMemo) {
|
|
131
|
-
tx.setTransactionMemo(params.transactionMemo);
|
|
132
|
-
}
|
|
133
|
-
const response = await tx.execute(this.client);
|
|
134
|
-
const receipt = await response.getReceipt(this.client);
|
|
135
|
-
if (receipt.status !== Status.Success || !receipt.topicId) {
|
|
136
|
-
throw new HCS21ValidationError(
|
|
137
|
-
"Failed to create HCS-2 registry version topic",
|
|
138
|
-
"invalid_payload"
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
return receipt.topicId.toString();
|
|
142
|
-
}
|
|
143
|
-
async createRegistryDiscoveryTopic(params) {
|
|
144
|
-
await this.operatorCtx.ensureInitialized();
|
|
145
|
-
const tx = buildHcs2CreateRegistryTx({
|
|
146
|
-
registryType: HCS2RegistryType.INDEXED,
|
|
147
|
-
ttl: params.ttl,
|
|
148
|
-
adminKey: params.adminKey,
|
|
149
|
-
submitKey: params.submitKey,
|
|
150
|
-
memoOverride: params.memoOverride,
|
|
151
|
-
operatorPublicKey: this.operatorCtx.operatorKey.publicKey
|
|
152
|
-
});
|
|
153
|
-
if (params.transactionMemo) {
|
|
154
|
-
tx.setTransactionMemo(params.transactionMemo);
|
|
155
|
-
}
|
|
156
|
-
const response = await tx.execute(this.client);
|
|
157
|
-
const receipt = await response.getReceipt(this.client);
|
|
158
|
-
if (receipt.status !== Status.Success || !receipt.topicId) {
|
|
159
|
-
throw new HCS21ValidationError(
|
|
160
|
-
"Failed to create registry-of-registries topic",
|
|
161
|
-
"invalid_payload"
|
|
162
|
-
);
|
|
163
|
-
}
|
|
164
|
-
return receipt.topicId.toString();
|
|
165
|
-
}
|
|
166
|
-
async createAdapterCategoryTopic(params) {
|
|
167
|
-
await this.operatorCtx.ensureInitialized();
|
|
168
|
-
const tx = buildHcs21CreateRegistryTx({
|
|
169
|
-
ttl: params.ttl,
|
|
170
|
-
indexed: params.indexed ?? 0,
|
|
171
|
-
type: HCS21TopicType.ADAPTER_CATEGORY,
|
|
172
|
-
metaTopicId: params.metaTopicId,
|
|
173
|
-
adminKey: params.adminKey,
|
|
174
|
-
submitKey: params.submitKey,
|
|
175
|
-
operatorPublicKey: this.operatorCtx.operatorKey.publicKey
|
|
176
|
-
});
|
|
177
|
-
if (params.transactionMemo) {
|
|
178
|
-
tx.setTransactionMemo(params.transactionMemo);
|
|
179
|
-
}
|
|
180
|
-
const response = await tx.execute(this.client);
|
|
181
|
-
const receipt = await response.getReceipt(this.client);
|
|
182
|
-
if (receipt.status !== Status.Success || !receipt.topicId) {
|
|
183
|
-
throw new HCS21ValidationError(
|
|
184
|
-
"Failed to create adapter category topic",
|
|
185
|
-
"invalid_payload"
|
|
28
|
+
validateDeclaration(input) {
|
|
29
|
+
try {
|
|
30
|
+
const payload = typeof input === "string" ? JSON.parse(input) : input;
|
|
31
|
+
const parsed = adapterDeclarationSchema.parse(
|
|
32
|
+
payload
|
|
186
33
|
);
|
|
34
|
+
this.assertSizeLimit(parsed);
|
|
35
|
+
return parsed;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : "Invalid adapter declaration";
|
|
38
|
+
throw new HCS21ValidationError(message, "invalid_payload");
|
|
187
39
|
}
|
|
188
|
-
return receipt.topicId.toString();
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Publish a pointer from a version topic to the active declaration topic.
|
|
192
|
-
* Version pointer messages carry no metadata.
|
|
193
|
-
*/
|
|
194
|
-
async publishVersionPointer(params) {
|
|
195
|
-
await this.operatorCtx.ensureInitialized();
|
|
196
|
-
const tx = buildHcs2RegisterTx({
|
|
197
|
-
registryTopicId: params.versionTopicId,
|
|
198
|
-
targetTopicId: params.declarationTopicId,
|
|
199
|
-
memo: params.memo,
|
|
200
|
-
analyticsMemo: params.transactionMemo
|
|
201
|
-
});
|
|
202
|
-
const response = await tx.execute(this.client);
|
|
203
|
-
const receipt = await response.getReceipt(this.client);
|
|
204
|
-
if (receipt.status !== Status.Success) {
|
|
205
|
-
throw new HCS21ValidationError(
|
|
206
|
-
"Failed to publish registry version pointer",
|
|
207
|
-
"invalid_payload"
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
sequenceNumber: receipt.topicSequenceNumber?.toNumber(),
|
|
212
|
-
transactionId: response.transactionId.toString()
|
|
213
|
-
};
|
|
214
40
|
}
|
|
215
|
-
async
|
|
216
|
-
const
|
|
217
|
-
limit:
|
|
218
|
-
order:
|
|
41
|
+
async fetchDeclarations(topicId, options) {
|
|
42
|
+
const rawMessages = await this.mirrorNode.getTopicMessages(topicId, {
|
|
43
|
+
limit: options?.limit,
|
|
44
|
+
order: options?.order
|
|
219
45
|
});
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
declarationTopicId,
|
|
238
|
-
sequenceNumber,
|
|
239
|
-
payer: latest.payer,
|
|
240
|
-
memo: latest.m,
|
|
241
|
-
op: latest.op
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
async registerCategoryTopic(params) {
|
|
245
|
-
await this.operatorCtx.ensureInitialized();
|
|
246
|
-
const tx = buildHcs2RegisterTx({
|
|
247
|
-
registryTopicId: params.discoveryTopicId,
|
|
248
|
-
targetTopicId: params.categoryTopicId,
|
|
249
|
-
metadata: params.metadata,
|
|
250
|
-
memo: params.memo,
|
|
251
|
-
analyticsMemo: params.transactionMemo
|
|
252
|
-
});
|
|
253
|
-
const response = await tx.execute(this.client);
|
|
254
|
-
const receipt = await response.getReceipt(this.client);
|
|
255
|
-
if (receipt.status !== Status.Success) {
|
|
256
|
-
throw new HCS21ValidationError(
|
|
257
|
-
"Failed to register adapter category topic",
|
|
258
|
-
"invalid_payload"
|
|
259
|
-
);
|
|
260
|
-
}
|
|
261
|
-
return {
|
|
262
|
-
sequenceNumber: receipt.topicSequenceNumber?.toNumber(),
|
|
263
|
-
transactionId: response.transactionId.toString()
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
async publishCategoryEntry(params) {
|
|
267
|
-
await this.operatorCtx.ensureInitialized();
|
|
268
|
-
const memo = params.memo ?? `adapter:${params.adapterId}`;
|
|
269
|
-
const tx = buildHcs2RegisterTx({
|
|
270
|
-
registryTopicId: params.categoryTopicId,
|
|
271
|
-
targetTopicId: params.versionTopicId,
|
|
272
|
-
metadata: params.metadata,
|
|
273
|
-
memo,
|
|
274
|
-
analyticsMemo: params.transactionMemo
|
|
275
|
-
});
|
|
276
|
-
const response = await tx.execute(this.client);
|
|
277
|
-
const receipt = await response.getReceipt(this.client);
|
|
278
|
-
if (receipt.status !== Status.Success) {
|
|
279
|
-
throw new HCS21ValidationError(
|
|
280
|
-
"Failed to publish adapter category entry",
|
|
281
|
-
"invalid_payload"
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
return {
|
|
285
|
-
sequenceNumber: receipt.topicSequenceNumber?.toNumber(),
|
|
286
|
-
transactionId: response.transactionId.toString()
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
async publishDeclaration(params) {
|
|
290
|
-
await this.operatorCtx.ensureInitialized();
|
|
291
|
-
const declaration = this.normalizeDeclarationInput(params.declaration);
|
|
292
|
-
const tx = buildHcs21MessageTx({
|
|
293
|
-
topicId: params.topicId,
|
|
294
|
-
declaration,
|
|
295
|
-
transactionMemo: params.transactionMemo
|
|
296
|
-
});
|
|
297
|
-
const response = await tx.execute(this.client);
|
|
298
|
-
const receipt = await response.getReceipt(this.client);
|
|
299
|
-
if (receipt.status !== Status.Success) {
|
|
300
|
-
throw new HCS21ValidationError(
|
|
301
|
-
"Failed to submit HCS-21 declaration",
|
|
302
|
-
"invalid_payload"
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
return {
|
|
306
|
-
sequenceNumber: receipt.topicSequenceNumber?.toNumber(),
|
|
307
|
-
transactionId: response.transactionId.toString()
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
normalizeDeclarationInput(declaration) {
|
|
311
|
-
if ("p" in declaration) {
|
|
312
|
-
return this.validateDeclaration(declaration);
|
|
46
|
+
const envelopes = [];
|
|
47
|
+
for (const message of rawMessages) {
|
|
48
|
+
if (message.p !== HCS21_PROTOCOL) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const declaration = this.validateDeclaration(message);
|
|
53
|
+
envelopes.push({
|
|
54
|
+
declaration,
|
|
55
|
+
consensusTimestamp: message.consensus_timestamp,
|
|
56
|
+
sequenceNumber: message.sequence_number,
|
|
57
|
+
payer: message.payer
|
|
58
|
+
});
|
|
59
|
+
} catch (error) {
|
|
60
|
+
const detail = error instanceof Error ? error.message : "unknown error";
|
|
61
|
+
this.logger.warn(`Skipping invalid HCS-21 message: ${detail}`);
|
|
62
|
+
}
|
|
313
63
|
}
|
|
314
|
-
return
|
|
64
|
+
return envelopes;
|
|
315
65
|
}
|
|
316
|
-
async
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
order: "desc"
|
|
323
|
-
});
|
|
324
|
-
if (!latest || !latest.sequence_number) {
|
|
325
|
-
throw new HCS21ValidationError(
|
|
326
|
-
"Unable to resolve manifest sequence number",
|
|
327
|
-
"invalid_payload"
|
|
328
|
-
);
|
|
66
|
+
async fetchCategoryEntries(topicId) {
|
|
67
|
+
const rawMessages = await this.mirrorNode.getTopicMessages(topicId);
|
|
68
|
+
const entries = [];
|
|
69
|
+
for (const message of rawMessages) {
|
|
70
|
+
if (message.p !== "hcs-2" || message.op !== "register") {
|
|
71
|
+
continue;
|
|
329
72
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
73
|
+
if (!message.t_id || typeof message.t_id !== "string") {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const memo = typeof message.m === "string" ? message.m : void 0;
|
|
77
|
+
const adapterId = memo?.startsWith("adapter:") ? memo.slice("adapter:".length) : memo;
|
|
78
|
+
entries.push({
|
|
79
|
+
adapterId: adapterId ?? message.t_id,
|
|
80
|
+
adapterTopicId: message.t_id,
|
|
81
|
+
metadata: message.metadata,
|
|
82
|
+
memo,
|
|
83
|
+
payer: message.payer,
|
|
84
|
+
sequenceNumber: Number(message.sequence_number ?? 0),
|
|
85
|
+
consensusTimestamp: message.consensus_timestamp
|
|
86
|
+
});
|
|
337
87
|
}
|
|
338
|
-
|
|
339
|
-
|
|
88
|
+
return entries;
|
|
89
|
+
}
|
|
90
|
+
assertSizeLimit(payload) {
|
|
91
|
+
const json = JSON.stringify(payload);
|
|
92
|
+
const bytes = Buffer.byteLength(json, "utf8");
|
|
93
|
+
if (bytes > HCS21_SAFE_MESSAGE_BYTES) {
|
|
340
94
|
throw new HCS21ValidationError(
|
|
341
|
-
|
|
342
|
-
"
|
|
95
|
+
`HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,
|
|
96
|
+
"size_exceeded"
|
|
343
97
|
);
|
|
344
98
|
}
|
|
345
|
-
return { pointer, sequenceNumber: resolvedSequence };
|
|
346
99
|
}
|
|
347
100
|
}
|
|
348
101
|
export {
|
|
349
|
-
|
|
102
|
+
HCS21BaseClient
|
|
350
103
|
};
|
|
351
104
|
//# sourceMappingURL=standards-sdk.es89.js.map
|