@hashgraphonline/standards-sdk 0.1.183 → 0.1.185
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/hcs-25/identifiers.d.ts +24 -0
- package/dist/browser/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/browser/hcs-25/index.d.ts +4 -0
- package/dist/browser/hcs-25/index.d.ts.map +1 -0
- package/dist/browser/hcs-25/scoring.d.ts +32 -0
- package/dist/browser/hcs-25/scoring.d.ts.map +1 -0
- package/dist/browser/hcs-25/types.d.ts +363 -0
- package/dist/browser/hcs-25/types.d.ts.map +1 -0
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/index.d.ts +1 -0
- package/dist/browser/services/registry-broker/index.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/schemas.d.ts +6 -0
- package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/types.d.ts +7 -1
- package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/hcs-25/identifiers.d.ts +24 -0
- package/dist/browser-root/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/index.d.ts +4 -0
- package/dist/browser-root/hcs-25/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/scoring.d.ts +32 -0
- package/dist/browser-root/hcs-25/scoring.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/types.d.ts +363 -0
- package/dist/browser-root/hcs-25/types.d.ts.map +1 -0
- package/dist/browser-root/index.d.ts +1 -0
- package/dist/browser-root/index.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/index.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/index.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/schemas.d.ts +6 -0
- package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/types.d.ts +7 -1
- package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +8 -1
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/hcs-25/identifiers.d.ts +24 -0
- package/dist/cjs/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/cjs/hcs-25/index.d.ts +4 -0
- package/dist/cjs/hcs-25/index.d.ts.map +1 -0
- package/dist/cjs/hcs-25/scoring.d.ts +32 -0
- package/dist/cjs/hcs-25/scoring.d.ts.map +1 -0
- package/dist/cjs/hcs-25/types.d.ts +363 -0
- package/dist/cjs/hcs-25/types.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/index.d.ts +1 -0
- package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/schemas.d.ts +6 -0
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +7 -1
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-25/identifiers.d.ts +24 -0
- package/dist/es/hcs-25/identifiers.d.ts.map +1 -0
- package/dist/es/hcs-25/index.d.ts +4 -0
- package/dist/es/hcs-25/index.d.ts.map +1 -0
- package/dist/es/hcs-25/scoring.d.ts +32 -0
- package/dist/es/hcs-25/scoring.d.ts.map +1 -0
- package/dist/es/hcs-25/types.d.ts +363 -0
- package/dist/es/hcs-25/types.d.ts.map +1 -0
- package/dist/es/index.d.ts +1 -0
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/index.d.ts +1 -0
- package/dist/es/services/registry-broker/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/schemas.d.ts +6 -0
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +7 -1
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +69 -39
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +2 -2
- package/dist/es/standards-sdk.es103.js +2 -2
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +2 -2
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es111.js +2 -2
- package/dist/es/standards-sdk.es115.js +3 -3
- package/dist/es/standards-sdk.es116.js +4 -4
- package/dist/es/standards-sdk.es117.js +19 -251
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +60 -475
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +217 -86
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +242 -150
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +470 -26
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +103 -10
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +145 -167
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +30 -25
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +10 -20
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +159 -137
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +27 -199
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +15 -783
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +157 -10
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +198 -564
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +703 -539
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +12 -12
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +567 -2
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +610 -71
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +12 -39
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +2 -2
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +42 -190
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +39 -1139
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +2 -306
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +231 -418
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +1135 -350
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +268 -1084
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +418 -204
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +350 -1562
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +1061 -1096
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +204 -13
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +1541 -233
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +1157 -4
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +15 -79
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +250 -78
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +4 -60
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +75 -153
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +87 -7
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +54 -80
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +2547 -65
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +159 -30
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +7 -34
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +86 -48
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +52 -125
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +5 -5
- package/dist/es/standards-sdk.es160.js +30 -42
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +32 -2538
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +48 -12482
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +12479 -53
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +124 -97
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +35 -74
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +14 -197
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +54 -15
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +96 -58
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +69 -660
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +188 -160
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +657 -307
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +64 -337
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +129 -410
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +200 -209
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +334 -64
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +438 -124
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +310 -496
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +60 -243
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +118 -175
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +12 -12
- package/dist/es/standards-sdk.es180.js +465 -67
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +250 -143
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +172 -160
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +65 -630
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +128 -161
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +144 -195
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +668 -223
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +188 -0
- package/dist/es/standards-sdk.es187.js.map +1 -0
- package/dist/es/standards-sdk.es188.js +238 -0
- package/dist/es/standards-sdk.es188.js.map +1 -0
- package/dist/es/standards-sdk.es189.js +242 -0
- package/dist/es/standards-sdk.es189.js.map +1 -0
- package/dist/es/standards-sdk.es19.js +9 -9
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +12 -12
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +6 -6
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +7 -7
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +3 -3
- package/dist/es/standards-sdk.es75.js +5 -5
- package/dist/es/standards-sdk.es76.js +3 -3
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es81.js +2 -2
- package/dist/es/standards-sdk.es83.js +2 -2
- package/dist/es/standards-sdk.es84.js +4 -4
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es89.js +2 -2
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +4 -4
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es96.js +2 -2
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +3 -3
- package/package.json +1 -1
|
@@ -1,15 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
mirrorNode: config.mirrorNode,
|
|
8
|
-
verificationProvider: config.verificationProvider
|
|
9
|
-
});
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { hcs26TopicTypeEnumSchema, HCS26_PROTOCOL, hcs26OperationEnumSchema } from "./standards-sdk.es120.js";
|
|
3
|
+
const HCS26_DEFAULT_TTL_SECONDS = 86400;
|
|
4
|
+
function toPositiveInt(value) {
|
|
5
|
+
if (!Number.isFinite(value)) {
|
|
6
|
+
throw new Error("Expected a finite number");
|
|
10
7
|
}
|
|
8
|
+
const intValue = Math.floor(value);
|
|
9
|
+
if (intValue <= 0) {
|
|
10
|
+
throw new Error("Expected a positive integer");
|
|
11
|
+
}
|
|
12
|
+
return intValue;
|
|
13
|
+
}
|
|
14
|
+
function buildHcs26TopicMemo(input) {
|
|
15
|
+
const indexed = input.indexed ?? true;
|
|
16
|
+
const ttlSeconds = toPositiveInt(
|
|
17
|
+
input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS
|
|
18
|
+
);
|
|
19
|
+
const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
|
|
20
|
+
const indexedSegment = indexed ? "0" : "1";
|
|
21
|
+
return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;
|
|
22
|
+
}
|
|
23
|
+
function parseHcs26TopicMemo(memoRaw) {
|
|
24
|
+
const memo = memoRaw.trim();
|
|
25
|
+
if (!memo) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const match = memo.match(/^hcs-26:(\d+):(\d+):(\d+)$/);
|
|
29
|
+
if (!match) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const indexedSegment = Number(match[1]);
|
|
33
|
+
const ttlSeconds = Number(match[2]);
|
|
34
|
+
const topicType = Number(match[3]);
|
|
35
|
+
if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
|
|
39
|
+
if (!parsedTopicType.success) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
if (indexedSegment !== 0 && indexedSegment !== 1) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
protocol: HCS26_PROTOCOL,
|
|
47
|
+
indexed: indexedSegment === 0,
|
|
48
|
+
ttlSeconds,
|
|
49
|
+
topicType: parsedTopicType.data
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function buildHcs26TransactionMemo(input) {
|
|
53
|
+
const operation = hcs26OperationEnumSchema.parse(input.operation);
|
|
54
|
+
const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
|
|
55
|
+
return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;
|
|
11
56
|
}
|
|
57
|
+
function parseHcs26TransactionMemo(memoRaw) {
|
|
58
|
+
const memo = memoRaw.trim();
|
|
59
|
+
if (!memo) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const match = memo.match(/^hcs-26:op:(\d+):(\d+)$/);
|
|
63
|
+
if (!match) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const operation = Number(match[1]);
|
|
67
|
+
const topicType = Number(match[2]);
|
|
68
|
+
if (![operation, topicType].every(Number.isFinite)) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);
|
|
72
|
+
if (!parsedOperation.success) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
|
|
76
|
+
if (!parsedTopicType.success) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
protocol: HCS26_PROTOCOL,
|
|
81
|
+
operation: parsedOperation.data,
|
|
82
|
+
topicType: parsedTopicType.data
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const hcs26TopicMemoSchema = z.string().transform((value) => {
|
|
86
|
+
const parsed = parseHcs26TopicMemo(value);
|
|
87
|
+
if (!parsed) {
|
|
88
|
+
throw new Error("Invalid HCS-26 topic memo");
|
|
89
|
+
}
|
|
90
|
+
return parsed;
|
|
91
|
+
});
|
|
92
|
+
const hcs26TransactionMemoSchema = z.string().transform((value) => {
|
|
93
|
+
const parsed = parseHcs26TransactionMemo(value);
|
|
94
|
+
if (!parsed) {
|
|
95
|
+
throw new Error("Invalid HCS-26 transaction memo");
|
|
96
|
+
}
|
|
97
|
+
return parsed;
|
|
98
|
+
});
|
|
12
99
|
export {
|
|
13
|
-
|
|
100
|
+
HCS26_DEFAULT_TTL_SECONDS,
|
|
101
|
+
buildHcs26TopicMemo,
|
|
102
|
+
buildHcs26TransactionMemo,
|
|
103
|
+
hcs26TopicMemoSchema,
|
|
104
|
+
hcs26TransactionMemoSchema,
|
|
105
|
+
parseHcs26TopicMemo,
|
|
106
|
+
parseHcs26TransactionMemo
|
|
14
107
|
};
|
|
15
108
|
//# sourceMappingURL=standards-sdk.es122.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es122.js","sources":["../../src/hcs-26/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es122.js","sources":["../../src/hcs-26/memos.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n HCS26_PROTOCOL,\n hcs26OperationEnumSchema,\n hcs26TopicTypeEnumSchema,\n type Hcs26OperationEnum,\n type Hcs26TopicTypeEnum,\n} from './types';\n\nexport type Hcs26TopicMemo = {\n protocol: typeof HCS26_PROTOCOL;\n indexed: boolean;\n ttlSeconds: number;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport const HCS26_DEFAULT_TTL_SECONDS = 86400;\n\nfunction toPositiveInt(value: number): number {\n if (!Number.isFinite(value)) {\n throw new Error('Expected a finite number');\n }\n const intValue = Math.floor(value);\n if (intValue <= 0) {\n throw new Error('Expected a positive integer');\n }\n return intValue;\n}\n\nexport function buildHcs26TopicMemo(input: {\n indexed?: boolean;\n ttlSeconds?: number;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const indexed = input.indexed ?? true;\n const ttlSeconds = toPositiveInt(\n input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS,\n );\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n\n // HCS-2 memo convention: indexed topics use \"0\" in the second segment.\n const indexedSegment = indexed ? '0' : '1';\n return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;\n}\n\nexport function parseHcs26TopicMemo(memoRaw: string): Hcs26TopicMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:(\\d+):(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const indexedSegment = Number(match[1]);\n const ttlSeconds = Number(match[2]);\n const topicType = Number(match[3]);\n\n if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n if (indexedSegment !== 0 && indexedSegment !== 1) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n indexed: indexedSegment === 0,\n ttlSeconds,\n topicType: parsedTopicType.data,\n };\n}\n\nexport function buildHcs26TransactionMemo(input: {\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const operation = hcs26OperationEnumSchema.parse(input.operation);\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;\n}\n\nexport type Hcs26TransactionMemo = {\n protocol: typeof HCS26_PROTOCOL;\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport function parseHcs26TransactionMemo(\n memoRaw: string,\n): Hcs26TransactionMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:op:(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const operation = Number(match[1]);\n const topicType = Number(match[2]);\n if (![operation, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);\n if (!parsedOperation.success) {\n return null;\n }\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n operation: parsedOperation.data,\n topicType: parsedTopicType.data,\n };\n}\n\nexport const hcs26TopicMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TopicMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 topic memo');\n }\n return parsed;\n});\n\nexport const hcs26TransactionMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TransactionMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 transaction memo');\n }\n return parsed;\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1,185 +1,163 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
data,
|
|
19
|
-
(_key, value) => {
|
|
20
|
-
if (value instanceof Error) {
|
|
21
|
-
return normalizeErrorData(value);
|
|
22
|
-
}
|
|
23
|
-
if (typeof value === "bigint") {
|
|
24
|
-
return value.toString();
|
|
25
|
-
}
|
|
26
|
-
if (value instanceof Map) {
|
|
27
|
-
return Object.fromEntries(value);
|
|
28
|
-
}
|
|
29
|
-
if (value instanceof Set) {
|
|
30
|
-
return Array.from(value);
|
|
31
|
-
}
|
|
32
|
-
if (value instanceof Uint8Array) {
|
|
33
|
-
return Array.from(value);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
},
|
|
37
|
-
2
|
|
38
|
-
);
|
|
39
|
-
} catch {
|
|
40
|
-
return String(data);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
function setLoggerFactory(factory) {
|
|
44
|
-
loggerFactory = factory;
|
|
45
|
-
Logger.clearInstances();
|
|
1
|
+
import { Logger } from "./standards-sdk.es126.js";
|
|
2
|
+
import { Hcs26SkillRegistryResolver } from "./standards-sdk.es121.js";
|
|
3
|
+
function getManifestTopicId(entry) {
|
|
4
|
+
const topicIdCandidate = entry.t_id;
|
|
5
|
+
if (typeof topicIdCandidate === "string" && topicIdCandidate.trim()) {
|
|
6
|
+
return topicIdCandidate.trim();
|
|
7
|
+
}
|
|
8
|
+
const hrlCandidate = entry.manifest_hcs1;
|
|
9
|
+
if (typeof hrlCandidate !== "string" || !hrlCandidate.trim()) {
|
|
10
|
+
throw new Error("Missing manifest reference in version register entry");
|
|
11
|
+
}
|
|
12
|
+
const hrl = hrlCandidate.trim();
|
|
13
|
+
const prefix = "hcs://1/";
|
|
14
|
+
if (!hrl.startsWith(prefix)) {
|
|
15
|
+
throw new Error(`Invalid manifest HRL: ${hrl}`);
|
|
16
|
+
}
|
|
17
|
+
return hrl.slice(prefix.length);
|
|
46
18
|
}
|
|
47
|
-
|
|
48
|
-
constructor(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const globalDisable = typeof process !== "undefined" && process.env?.DISABLE_LOGS === "true";
|
|
61
|
-
if (globalDisable && _Logger.instances.has(moduleKey)) {
|
|
62
|
-
const existingLogger = _Logger.instances.get(moduleKey);
|
|
63
|
-
if (existingLogger.getLevel() !== "silent") {
|
|
64
|
-
_Logger.instances.delete(moduleKey);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (!_Logger.instances.has(moduleKey)) {
|
|
68
|
-
const logger = loggerFactory ? loggerFactory(options) : new _Logger(options);
|
|
69
|
-
_Logger.instances.set(moduleKey, logger);
|
|
70
|
-
}
|
|
71
|
-
return _Logger.instances.get(moduleKey);
|
|
72
|
-
}
|
|
73
|
-
setLogLevel(level) {
|
|
74
|
-
this.level = level;
|
|
75
|
-
}
|
|
76
|
-
getLevel() {
|
|
77
|
-
return this.level;
|
|
19
|
+
class HCS26BaseClient {
|
|
20
|
+
constructor(config) {
|
|
21
|
+
this.network = config.network;
|
|
22
|
+
this.logger = config.logger ?? Logger.getInstance({
|
|
23
|
+
module: "HCS26Client",
|
|
24
|
+
level: "info"
|
|
25
|
+
});
|
|
26
|
+
this.verificationProvider = config.verificationProvider;
|
|
27
|
+
this.resolver = new Hcs26SkillRegistryResolver({
|
|
28
|
+
network: this.network,
|
|
29
|
+
logger: this.logger,
|
|
30
|
+
mirrorNode: config.mirrorNode
|
|
31
|
+
});
|
|
78
32
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
33
|
+
async resolveSkill(params) {
|
|
34
|
+
const discovery = await this.resolver.resolveDiscoveryRecord({
|
|
35
|
+
directoryTopicId: params.directoryTopicId,
|
|
36
|
+
skillUid: params.skillUid,
|
|
37
|
+
scanLimit: params.discoveryScanLimit
|
|
38
|
+
});
|
|
39
|
+
if (!discovery) {
|
|
40
|
+
return null;
|
|
83
41
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
42
|
+
const versionRegistryTopicId = discovery.t_id;
|
|
43
|
+
const latestVersion = await this.resolver.getLatestVersionRegister({
|
|
44
|
+
versionRegistryTopicId,
|
|
45
|
+
skillUid: params.skillUid
|
|
46
|
+
});
|
|
47
|
+
if (!latestVersion) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`No active version entries found for skill ${params.skillUid} in version registry ${versionRegistryTopicId}`
|
|
50
|
+
);
|
|
91
51
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
52
|
+
const manifestTopicId = getManifestTopicId(latestVersion);
|
|
53
|
+
const { manifest, sha256Hex } = await this.resolver.resolveManifest({
|
|
54
|
+
manifestTopicId
|
|
55
|
+
});
|
|
56
|
+
await this.resolver.verifyVersionRegisterMatchesManifest({
|
|
57
|
+
versionRegister: latestVersion,
|
|
58
|
+
manifestSha256Hex: sha256Hex
|
|
59
|
+
});
|
|
60
|
+
let verification;
|
|
61
|
+
const provider = this.verificationProvider;
|
|
62
|
+
const includeVerification = params.includeVerification === true;
|
|
63
|
+
const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
|
|
64
|
+
if (includeVerification && provider && name) {
|
|
65
|
+
try {
|
|
66
|
+
verification = await provider.getSkillVerificationStatus({ name });
|
|
67
|
+
} catch (error) {
|
|
68
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
69
|
+
this.logger.warn(
|
|
70
|
+
`Failed to resolve verification status for skill "${name}": ${detail}`
|
|
71
|
+
);
|
|
72
|
+
verification = null;
|
|
95
73
|
}
|
|
96
|
-
return { msg: "", data: args[0] };
|
|
97
74
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
75
|
+
return {
|
|
76
|
+
directoryTopicId: params.directoryTopicId,
|
|
77
|
+
skillUid: params.skillUid,
|
|
78
|
+
discovery,
|
|
79
|
+
versionRegistryTopicId,
|
|
80
|
+
latestVersion,
|
|
81
|
+
manifest,
|
|
82
|
+
manifestSha256Hex: sha256Hex,
|
|
83
|
+
...includeVerification ? { verification } : {}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async listSkillVersions(params) {
|
|
87
|
+
const discovery = await this.resolver.resolveDiscoveryRecord({
|
|
88
|
+
directoryTopicId: params.directoryTopicId,
|
|
89
|
+
skillUid: params.skillUid,
|
|
90
|
+
scanLimit: params.discoveryScanLimit
|
|
106
91
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
shouldLog(level) {
|
|
111
|
-
if (this.silent || this.level === "silent") {
|
|
112
|
-
return false;
|
|
92
|
+
if (!discovery) {
|
|
93
|
+
return [];
|
|
113
94
|
}
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
95
|
+
const versionRegistryTopicId = discovery.t_id;
|
|
96
|
+
return this.resolver.listVersionRegisters({
|
|
97
|
+
versionRegistryTopicId,
|
|
98
|
+
skillUid: params.skillUid,
|
|
99
|
+
limit: params.limit
|
|
100
|
+
});
|
|
118
101
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (level === "warn") {
|
|
124
|
-
return console.warn;
|
|
102
|
+
async resolveSkillVersion(params) {
|
|
103
|
+
const versionRaw = params.version.trim();
|
|
104
|
+
if (!versionRaw) {
|
|
105
|
+
throw new Error("version is required");
|
|
125
106
|
}
|
|
126
|
-
|
|
127
|
-
|
|
107
|
+
const discovery = await this.resolver.resolveDiscoveryRecord({
|
|
108
|
+
directoryTopicId: params.directoryTopicId,
|
|
109
|
+
skillUid: params.skillUid,
|
|
110
|
+
scanLimit: params.discoveryScanLimit
|
|
111
|
+
});
|
|
112
|
+
if (!discovery) {
|
|
113
|
+
return null;
|
|
128
114
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
115
|
+
const versionRegistryTopicId = discovery.t_id;
|
|
116
|
+
const entries = await this.resolver.listVersionRegisters({
|
|
117
|
+
versionRegistryTopicId,
|
|
118
|
+
skillUid: params.skillUid,
|
|
119
|
+
limit: 250
|
|
120
|
+
});
|
|
121
|
+
const target = entries.find((entry) => entry.version.trim() === versionRaw);
|
|
122
|
+
if (!target) {
|
|
123
|
+
return null;
|
|
134
124
|
}
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
125
|
+
const manifestTopicId = getManifestTopicId(target);
|
|
126
|
+
const { manifest, sha256Hex } = await this.resolver.resolveManifest({
|
|
127
|
+
manifestTopicId
|
|
128
|
+
});
|
|
129
|
+
await this.resolver.verifyVersionRegisterMatchesManifest({
|
|
130
|
+
versionRegister: target,
|
|
131
|
+
manifestSha256Hex: sha256Hex
|
|
132
|
+
});
|
|
133
|
+
let verification;
|
|
134
|
+
const provider = this.verificationProvider;
|
|
135
|
+
const includeVerification = params.includeVerification === true;
|
|
136
|
+
const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
|
|
137
|
+
if (includeVerification && provider && name) {
|
|
138
|
+
try {
|
|
139
|
+
verification = await provider.getSkillVerificationStatus({ name });
|
|
140
|
+
} catch (error) {
|
|
141
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
142
|
+
this.logger.warn(
|
|
143
|
+
`Failed to resolve verification status for skill "${name}": ${detail}`
|
|
144
|
+
);
|
|
145
|
+
verification = null;
|
|
143
146
|
}
|
|
144
|
-
consoleMethod(output);
|
|
145
|
-
} else {
|
|
146
|
-
const logObj = {
|
|
147
|
-
timestamp,
|
|
148
|
-
level,
|
|
149
|
-
module: this.moduleContext,
|
|
150
|
-
message: msg,
|
|
151
|
-
...data && { data }
|
|
152
|
-
};
|
|
153
|
-
consoleMethod(JSON.stringify(logObj));
|
|
154
147
|
}
|
|
148
|
+
return {
|
|
149
|
+
directoryTopicId: params.directoryTopicId,
|
|
150
|
+
skillUid: params.skillUid,
|
|
151
|
+
discovery,
|
|
152
|
+
versionRegistryTopicId,
|
|
153
|
+
versionEntry: target,
|
|
154
|
+
manifest,
|
|
155
|
+
manifestSha256Hex: sha256Hex,
|
|
156
|
+
...includeVerification ? { verification } : {}
|
|
157
|
+
};
|
|
155
158
|
}
|
|
156
|
-
|
|
157
|
-
this.writeLog("debug", ...args);
|
|
158
|
-
}
|
|
159
|
-
info(...args) {
|
|
160
|
-
this.writeLog("info", ...args);
|
|
161
|
-
}
|
|
162
|
-
warn(...args) {
|
|
163
|
-
this.writeLog("warn", ...args);
|
|
164
|
-
}
|
|
165
|
-
error(...args) {
|
|
166
|
-
this.writeLog("error", ...args);
|
|
167
|
-
}
|
|
168
|
-
trace(...args) {
|
|
169
|
-
this.writeLog("trace", ...args);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Clear all logger instances
|
|
173
|
-
* Used when switching logger implementations
|
|
174
|
-
*/
|
|
175
|
-
static clearInstances() {
|
|
176
|
-
_Logger.instances.clear();
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
_Logger.instances = /* @__PURE__ */ new Map();
|
|
180
|
-
let Logger = _Logger;
|
|
159
|
+
}
|
|
181
160
|
export {
|
|
182
|
-
|
|
183
|
-
setLoggerFactory
|
|
161
|
+
HCS26BaseClient
|
|
184
162
|
};
|
|
185
163
|
//# sourceMappingURL=standards-sdk.es123.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es123.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';\n\nexport interface LoggerOptions {\n level?: LogLevel;\n module?: string;\n prettyPrint?: boolean;\n silent?: boolean;\n}\n\nexport interface ILogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n trace(...args: any[]): void;\n setLogLevel(level: LogLevel): void;\n getLevel(): LogLevel;\n setSilent(silent: boolean): void;\n setModule(module: string): void;\n}\n\nexport type LoggerFactory = (options: LoggerOptions) => ILogger;\n\nlet loggerFactory: LoggerFactory | null = null;\n\nfunction normalizeErrorData(error: Error): Record<string, unknown> {\n const normalizedData: Record<string, unknown> = {\n name: error.name,\n message: error.message,\n };\n\n if (error.stack) {\n normalizedData.stack = error.stack;\n }\n\n for (const [key, value] of Object.entries(error)) {\n normalizedData[key] = value;\n }\n\n return normalizedData;\n}\n\nfunction serializeLogData(data: unknown): string {\n try {\n return JSON.stringify(\n data,\n (_key, value: unknown) => {\n if (value instanceof Error) {\n return normalizeErrorData(value);\n }\n if (typeof value === 'bigint') {\n return value.toString();\n }\n if (value instanceof Map) {\n return Object.fromEntries(value);\n }\n if (value instanceof Set) {\n return Array.from(value);\n }\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n },\n 2,\n );\n } catch {\n return String(data);\n }\n}\n\n/**\n * Set a custom logger factory to override the default Pino-based implementation\n */\nexport function setLoggerFactory(factory: LoggerFactory): void {\n loggerFactory = factory;\n Logger.clearInstances();\n}\n\nexport class Logger implements ILogger {\n private static instances: Map<string, ILogger> = new Map();\n private level: LogLevel;\n private moduleContext: string;\n private silent: boolean;\n private prettyPrint: boolean;\n\n constructor(options: LoggerOptions = {}) {\n if (loggerFactory) {\n return loggerFactory(options) as any;\n }\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n this.silent = options.silent || globalDisable;\n this.level = this.silent ? 'silent' : options.level || 'info';\n this.moduleContext = options.module || 'app';\n this.prettyPrint = !this.silent && options.prettyPrint !== false;\n }\n\n static getInstance(options: LoggerOptions = {}): ILogger {\n const moduleKey = options.module || 'default';\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n if (globalDisable && Logger.instances.has(moduleKey)) {\n const existingLogger = Logger.instances.get(moduleKey)!;\n if (existingLogger.getLevel() !== 'silent') {\n Logger.instances.delete(moduleKey);\n }\n }\n\n if (!Logger.instances.has(moduleKey)) {\n const logger = loggerFactory\n ? loggerFactory(options)\n : new Logger(options);\n Logger.instances.set(moduleKey, logger);\n }\n\n return Logger.instances.get(moduleKey)!;\n }\n\n setLogLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n setSilent(silent: boolean): void {\n this.silent = silent;\n if (silent) {\n this.level = 'silent';\n }\n }\n\n setModule(module: string): void {\n this.moduleContext = module;\n }\n\n private formatArgs(args: any[]): { msg: string; data?: any } {\n if (args.length === 0) {\n return { msg: '' };\n }\n\n if (args.length === 1) {\n if (typeof args[0] === 'string') {\n return { msg: args[0] };\n }\n return { msg: '', data: args[0] };\n }\n\n const stringArgs: string[] = [];\n const objectArgs: any[] = [];\n\n args.forEach(arg => {\n if (\n typeof arg === 'string' ||\n typeof arg === 'number' ||\n typeof arg === 'boolean'\n ) {\n stringArgs.push(String(arg));\n } else {\n objectArgs.push(arg);\n }\n });\n\n const msg = stringArgs.join(' ');\n return objectArgs.length > 0 ? { msg, data: objectArgs } : { msg };\n }\n\n private shouldLog(level: LogLevel): boolean {\n if (this.silent || this.level === 'silent') {\n return false;\n }\n\n const levels = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];\n const currentLevelIndex = levels.indexOf(this.level);\n const targetLevelIndex = levels.indexOf(level);\n\n return targetLevelIndex >= currentLevelIndex;\n }\n\n private getConsoleMethod(level: LogLevel): (...args: any[]) => void {\n if (level === 'error') {\n return console.error;\n }\n if (level === 'warn') {\n return console.warn;\n }\n if (level === 'debug') {\n return console.debug;\n }\n return console.log;\n }\n\n private writeLog(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) {\n return;\n }\n\n const { msg, data } = this.formatArgs(args);\n const timestamp = new Date().toISOString();\n const consoleMethod = this.getConsoleMethod(level);\n\n if (this.prettyPrint) {\n const levelFormatted = level.toUpperCase().padEnd(5);\n let output = `${timestamp} ${levelFormatted} [${this.moduleContext}] ${msg}`;\n\n if (data) {\n output += '\\n' + serializeLogData(data);\n }\n\n consoleMethod(output);\n } else {\n const logObj = {\n timestamp,\n level,\n module: this.moduleContext,\n message: msg,\n ...(data && { data }),\n };\n\n consoleMethod(JSON.stringify(logObj));\n }\n }\n\n debug(...args: any[]): void {\n this.writeLog('debug', ...args);\n }\n\n info(...args: any[]): void {\n this.writeLog('info', ...args);\n }\n\n warn(...args: any[]): void {\n this.writeLog('warn', ...args);\n }\n\n error(...args: any[]): void {\n this.writeLog('error', ...args);\n }\n\n trace(...args: any[]): void {\n this.writeLog('trace', ...args);\n }\n\n /**\n * Clear all logger instances\n * Used when switching logger implementations\n */\n static clearInstances(): void {\n Logger.instances.clear();\n }\n}\n"],"names":[],"mappings":"AAuBA,IAAI,gBAAsC;AAE1C,SAAS,mBAAmB,OAAuC;AACjE,QAAM,iBAA0C;AAAA,IAC9C,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,EAAA;AAGjB,MAAI,MAAM,OAAO;AACf,mBAAe,QAAQ,MAAM;AAAA,EAC/B;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,mBAAe,GAAG,IAAI;AAAA,EACxB;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAuB;AAC/C,MAAI;AACF,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC,MAAM,UAAmB;AACxB,YAAI,iBAAiB,OAAO;AAC1B,iBAAO,mBAAmB,KAAK;AAAA,QACjC;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,MAAM,SAAA;AAAA,QACf;AACA,YAAI,iBAAiB,KAAK;AACxB,iBAAO,OAAO,YAAY,KAAK;AAAA,QACjC;AACA,YAAI,iBAAiB,KAAK;AACxB,iBAAO,MAAM,KAAK,KAAK;AAAA,QACzB;AACA,YAAI,iBAAiB,YAAY;AAC/B,iBAAO,MAAM,KAAK,KAAK;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,QAAQ;AACN,WAAO,OAAO,IAAI;AAAA,EACpB;AACF;AAKO,SAAS,iBAAiB,SAA8B;AAC7D,kBAAgB;AAChB,SAAO,eAAA;AACT;AAEO,MAAM,UAAN,MAAM,QAA0B;AAAA,EAOrC,YAAY,UAAyB,IAAI;AACvC,QAAI,eAAe;AACjB,aAAO,cAAc,OAAO;AAAA,IAC9B;AAEA,UAAM,gBACJ,OAAO,YAAY,eAAe,QAAQ,KAAK,iBAAiB;AAElE,SAAK,SAAS,QAAQ,UAAU;AAChC,SAAK,QAAQ,KAAK,SAAS,WAAW,QAAQ,SAAS;AACvD,SAAK,gBAAgB,QAAQ,UAAU;AACvC,SAAK,cAAc,CAAC,KAAK,UAAU,QAAQ,gBAAgB;AAAA,EAC7D;AAAA,EAEA,OAAO,YAAY,UAAyB,IAAa;AACvD,UAAM,YAAY,QAAQ,UAAU;AAEpC,UAAM,gBACJ,OAAO,YAAY,eAAe,QAAQ,KAAK,iBAAiB;AAElE,QAAI,iBAAiB,QAAO,UAAU,IAAI,SAAS,GAAG;AACpD,YAAM,iBAAiB,QAAO,UAAU,IAAI,SAAS;AACrD,UAAI,eAAe,SAAA,MAAe,UAAU;AAC1C,gBAAO,UAAU,OAAO,SAAS;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,CAAC,QAAO,UAAU,IAAI,SAAS,GAAG;AACpC,YAAM,SAAS,gBACX,cAAc,OAAO,IACrB,IAAI,QAAO,OAAO;AACtB,cAAO,UAAU,IAAI,WAAW,MAAM;AAAA,IACxC;AAEA,WAAO,QAAO,UAAU,IAAI,SAAS;AAAA,EACvC;AAAA,EAEA,YAAY,OAAuB;AACjC,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,WAAqB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU,QAAuB;AAC/B,SAAK,SAAS;AACd,QAAI,QAAQ;AACV,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,UAAU,QAAsB;AAC9B,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,WAAW,MAA0C;AAC3D,QAAI,KAAK,WAAW,GAAG;AACrB,aAAO,EAAE,KAAK,GAAA;AAAA,IAChB;AAEA,QAAI,KAAK,WAAW,GAAG;AACrB,UAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,eAAO,EAAE,KAAK,KAAK,CAAC,EAAA;AAAA,MACtB;AACA,aAAO,EAAE,KAAK,IAAI,MAAM,KAAK,CAAC,EAAA;AAAA,IAChC;AAEA,UAAM,aAAuB,CAAA;AAC7B,UAAM,aAAoB,CAAA;AAE1B,SAAK,QAAQ,CAAA,QAAO;AAClB,UACE,OAAO,QAAQ,YACf,OAAO,QAAQ,YACf,OAAO,QAAQ,WACf;AACA,mBAAW,KAAK,OAAO,GAAG,CAAC;AAAA,MAC7B,OAAO;AACL,mBAAW,KAAK,GAAG;AAAA,MACrB;AAAA,IACF,CAAC;AAED,UAAM,MAAM,WAAW,KAAK,GAAG;AAC/B,WAAO,WAAW,SAAS,IAAI,EAAE,KAAK,MAAM,eAAe,EAAE,IAAA;AAAA,EAC/D;AAAA,EAEQ,UAAU,OAA0B;AAC1C,QAAI,KAAK,UAAU,KAAK,UAAU,UAAU;AAC1C,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,QAAQ;AACnE,UAAM,oBAAoB,OAAO,QAAQ,KAAK,KAAK;AACnD,UAAM,mBAAmB,OAAO,QAAQ,KAAK;AAE7C,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EAEQ,iBAAiB,OAA2C;AAClE,QAAI,UAAU,SAAS;AACrB,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,UAAU,QAAQ;AACpB,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,UAAU,SAAS;AACrB,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEQ,SAAS,UAAoB,MAAmB;AACtD,QAAI,CAAC,KAAK,UAAU,KAAK,GAAG;AAC1B;AAAA,IACF;AAEA,UAAM,EAAE,KAAK,KAAA,IAAS,KAAK,WAAW,IAAI;AAC1C,UAAM,aAAY,oBAAI,KAAA,GAAO,YAAA;AAC7B,UAAM,gBAAgB,KAAK,iBAAiB,KAAK;AAEjD,QAAI,KAAK,aAAa;AACpB,YAAM,iBAAiB,MAAM,YAAA,EAAc,OAAO,CAAC;AACnD,UAAI,SAAS,GAAG,SAAS,IAAI,cAAc,KAAK,KAAK,aAAa,KAAK,GAAG;AAE1E,UAAI,MAAM;AACR,kBAAU,OAAO,iBAAiB,IAAI;AAAA,MACxC;AAEA,oBAAc,MAAM;AAAA,IACtB,OAAO;AACL,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,SAAS;AAAA,QACT,GAAI,QAAQ,EAAE,KAAA;AAAA,MAAK;AAGrB,oBAAc,KAAK,UAAU,MAAM,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,iBAAuB;AAC5B,YAAO,UAAU,MAAA;AAAA,EACnB;AACF;AAhLE,QAAe,gCAAsC,IAAA;AADhD,IAAM,SAAN;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es123.js","sources":["../../src/hcs-26/base-client.ts"],"sourcesContent":["import type { ILogger } from '../utils/logger';\nimport { Logger } from '../utils/logger';\nimport type { NetworkType } from '../utils/types';\nimport type { MirrorNodeConfig } from '../services/mirror-node';\nimport { Hcs26SkillRegistryResolver } from './resolver';\nimport type {\n Hcs26SkillManifest,\n Hcs26VersionRegister,\n Hcs26VersionRegisterLegacy,\n} from './types';\n\nexport type HCS26SkillVerificationStatus = {\n name: string;\n verified: boolean;\n previouslyVerified: boolean;\n pendingRequest?: unknown;\n};\n\nexport interface HCS26SkillVerificationProvider {\n getSkillVerificationStatus(params: {\n name: string;\n }): Promise<HCS26SkillVerificationStatus | null>;\n}\n\nexport interface HCS26ClientConfig {\n network: NetworkType;\n logger?: ILogger;\n mirrorNode?: MirrorNodeConfig;\n verificationProvider?: HCS26SkillVerificationProvider;\n}\n\nexport type HCS26DiscoveryRecord = {\n p: 'hcs-26';\n op: 'register';\n t_id: string;\n account_id: string;\n metadata: Record<string, unknown>;\n m?: string;\n sequence_number?: number;\n};\n\nexport type HCS26ResolvedSkill = {\n directoryTopicId: string;\n skillUid: number;\n discovery: HCS26DiscoveryRecord;\n versionRegistryTopicId: string;\n latestVersion:\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number });\n manifest: Hcs26SkillManifest;\n manifestSha256Hex: string;\n verification?: HCS26SkillVerificationStatus | null;\n};\n\nexport type HCS26ResolvedSkillVersion = Omit<\n HCS26ResolvedSkill,\n 'latestVersion'\n> & {\n versionEntry:\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number });\n};\n\nfunction getManifestTopicId(\n entry: Hcs26VersionRegister | Hcs26VersionRegisterLegacy,\n): string {\n const topicIdCandidate = (entry as { t_id?: unknown }).t_id;\n if (typeof topicIdCandidate === 'string' && topicIdCandidate.trim()) {\n return topicIdCandidate.trim();\n }\n\n const hrlCandidate = (entry as { manifest_hcs1?: unknown }).manifest_hcs1;\n if (typeof hrlCandidate !== 'string' || !hrlCandidate.trim()) {\n throw new Error('Missing manifest reference in version register entry');\n }\n\n const hrl = hrlCandidate.trim();\n const prefix = 'hcs://1/';\n if (!hrl.startsWith(prefix)) {\n throw new Error(`Invalid manifest HRL: ${hrl}`);\n }\n return hrl.slice(prefix.length);\n}\n\nexport class HCS26BaseClient {\n protected readonly network: NetworkType;\n protected readonly logger: ILogger;\n protected readonly resolver: Hcs26SkillRegistryResolver;\n protected readonly verificationProvider?: HCS26SkillVerificationProvider;\n\n constructor(config: HCS26ClientConfig) {\n this.network = config.network;\n this.logger =\n config.logger ??\n Logger.getInstance({\n module: 'HCS26Client',\n level: 'info',\n });\n this.verificationProvider = config.verificationProvider;\n\n this.resolver = new Hcs26SkillRegistryResolver({\n network: this.network,\n logger: this.logger,\n mirrorNode: config.mirrorNode,\n });\n }\n\n async resolveSkill(params: {\n directoryTopicId: string;\n skillUid: number;\n discoveryScanLimit?: number;\n includeVerification?: boolean;\n }): Promise<HCS26ResolvedSkill | null> {\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return null;\n }\n\n const versionRegistryTopicId = discovery.t_id;\n const latestVersion = await this.resolver.getLatestVersionRegister({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n });\n\n if (!latestVersion) {\n throw new Error(\n `No active version entries found for skill ${params.skillUid} in version registry ${versionRegistryTopicId}`,\n );\n }\n\n const manifestTopicId = getManifestTopicId(latestVersion);\n const { manifest, sha256Hex } = await this.resolver.resolveManifest({\n manifestTopicId,\n });\n\n await this.resolver.verifyVersionRegisterMatchesManifest({\n versionRegister: latestVersion,\n manifestSha256Hex: sha256Hex,\n });\n\n let verification: HCS26SkillVerificationStatus | null | undefined;\n const provider = this.verificationProvider;\n const includeVerification = params.includeVerification === true;\n const name =\n typeof discovery.metadata?.name === 'string'\n ? discovery.metadata.name.trim()\n : '';\n\n if (includeVerification && provider && name) {\n try {\n verification = await provider.getSkillVerificationStatus({ name });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n this.logger.warn(\n `Failed to resolve verification status for skill \"${name}\": ${detail}`,\n );\n verification = null;\n }\n }\n\n return {\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n discovery,\n versionRegistryTopicId,\n latestVersion,\n manifest,\n manifestSha256Hex: sha256Hex,\n ...(includeVerification ? { verification } : {}),\n };\n }\n\n async listSkillVersions(params: {\n directoryTopicId: string;\n skillUid: number;\n discoveryScanLimit?: number;\n limit?: number;\n }): Promise<\n Array<\n | (Hcs26VersionRegister & { sequence_number?: number })\n | (Hcs26VersionRegisterLegacy & { sequence_number?: number })\n >\n > {\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return [];\n }\n\n const versionRegistryTopicId = discovery.t_id;\n return this.resolver.listVersionRegisters({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: params.limit,\n });\n }\n\n async resolveSkillVersion(params: {\n directoryTopicId: string;\n skillUid: number;\n version: string;\n discoveryScanLimit?: number;\n includeVerification?: boolean;\n }): Promise<HCS26ResolvedSkillVersion | null> {\n const versionRaw = params.version.trim();\n if (!versionRaw) {\n throw new Error('version is required');\n }\n\n const discovery = (await this.resolver.resolveDiscoveryRecord({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n scanLimit: params.discoveryScanLimit,\n })) as HCS26DiscoveryRecord | null;\n\n if (!discovery) {\n return null;\n }\n\n const versionRegistryTopicId = discovery.t_id;\n const entries = await this.resolver.listVersionRegisters({\n versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: 250,\n });\n\n const target = entries.find(entry => entry.version.trim() === versionRaw);\n if (!target) {\n return null;\n }\n\n const manifestTopicId = getManifestTopicId(target);\n const { manifest, sha256Hex } = await this.resolver.resolveManifest({\n manifestTopicId,\n });\n\n await this.resolver.verifyVersionRegisterMatchesManifest({\n versionRegister: target,\n manifestSha256Hex: sha256Hex,\n });\n\n let verification: HCS26SkillVerificationStatus | null | undefined;\n const provider = this.verificationProvider;\n const includeVerification = params.includeVerification === true;\n const name =\n typeof discovery.metadata?.name === 'string'\n ? discovery.metadata.name.trim()\n : '';\n\n if (includeVerification && provider && name) {\n try {\n verification = await provider.getSkillVerificationStatus({ name });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n this.logger.warn(\n `Failed to resolve verification status for skill \"${name}\": ${detail}`,\n );\n verification = null;\n }\n }\n\n return {\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n discovery,\n versionRegistryTopicId,\n versionEntry: target,\n manifest,\n manifestSha256Hex: sha256Hex,\n ...(includeVerification ? { verification } : {}),\n };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
adapter.setSilent = (silent) => iLogger.setSilent(silent);
|
|
12
|
-
adapter.setModule = (module) => iLogger.setModule(module);
|
|
13
|
-
adapter.logger = { level: iLogger.getLevel() };
|
|
14
|
-
adapter.moduleContext = "";
|
|
15
|
-
adapter.formatArgs = () => ({ msg: "" });
|
|
16
|
-
return adapter;
|
|
1
|
+
import { getSkillVerificationStatus } from "./standards-sdk.es171.js";
|
|
2
|
+
import { HCS26BaseClient } from "./standards-sdk.es123.js";
|
|
3
|
+
function mapVerification(status) {
|
|
4
|
+
const pendingRequest = status.pendingRequest ?? void 0;
|
|
5
|
+
return {
|
|
6
|
+
name: status.name,
|
|
7
|
+
verified: status.verified,
|
|
8
|
+
previouslyVerified: status.previouslyVerified,
|
|
9
|
+
...pendingRequest ? { pendingRequest } : {}
|
|
10
|
+
};
|
|
17
11
|
}
|
|
18
|
-
function
|
|
19
|
-
return
|
|
12
|
+
function createRegistryBrokerVerificationProvider(client) {
|
|
13
|
+
return {
|
|
14
|
+
async getSkillVerificationStatus(params) {
|
|
15
|
+
const status = await getSkillVerificationStatus(client, {
|
|
16
|
+
name: params.name
|
|
17
|
+
});
|
|
18
|
+
return mapVerification(status);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
class HCS26Client extends HCS26BaseClient {
|
|
23
|
+
constructor(config) {
|
|
24
|
+
const provider = config.verificationProvider ?? (config.registryBrokerClient ? createRegistryBrokerVerificationProvider(config.registryBrokerClient) : void 0);
|
|
25
|
+
super({
|
|
26
|
+
network: config.network,
|
|
27
|
+
logger: config.logger,
|
|
28
|
+
mirrorNode: config.mirrorNode,
|
|
29
|
+
verificationProvider: provider
|
|
30
|
+
});
|
|
24
31
|
}
|
|
25
|
-
return createLoggerAdapter(logger);
|
|
26
32
|
}
|
|
27
33
|
export {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
isConcreteLogger
|
|
34
|
+
HCS26Client,
|
|
35
|
+
createRegistryBrokerVerificationProvider
|
|
31
36
|
};
|
|
32
37
|
//# sourceMappingURL=standards-sdk.es124.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es124.js","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es124.js","sources":["../../src/hcs-26/sdk.ts"],"sourcesContent":["import type { RegistryBrokerClient } from '../services/registry-broker/client/base-client';\nimport { getSkillVerificationStatus } from '../services/registry-broker/client/skills';\nimport type { SkillVerificationStatusResponse } from '../services/registry-broker/types';\nimport {\n HCS26BaseClient,\n type HCS26ClientConfig,\n type HCS26SkillVerificationProvider,\n type HCS26SkillVerificationStatus,\n} from './base-client';\n\nexport interface SDKHCS26ClientConfig extends HCS26ClientConfig {\n registryBrokerClient?: RegistryBrokerClient;\n}\n\nfunction mapVerification(\n status: SkillVerificationStatusResponse,\n): HCS26SkillVerificationStatus {\n const pendingRequest = status.pendingRequest ?? undefined;\n return {\n name: status.name,\n verified: status.verified,\n previouslyVerified: status.previouslyVerified,\n ...(pendingRequest ? { pendingRequest } : {}),\n };\n}\n\nexport function createRegistryBrokerVerificationProvider(\n client: RegistryBrokerClient,\n): HCS26SkillVerificationProvider {\n return {\n async getSkillVerificationStatus(params: { name: string }) {\n const status = await getSkillVerificationStatus(client, {\n name: params.name,\n });\n return mapVerification(status);\n },\n };\n}\n\nexport class HCS26Client extends HCS26BaseClient {\n constructor(config: SDKHCS26ClientConfig) {\n const provider =\n config.verificationProvider ??\n (config.registryBrokerClient\n ? createRegistryBrokerVerificationProvider(config.registryBrokerClient)\n : undefined);\n\n super({\n network: config.network,\n logger: config.logger,\n mirrorNode: config.mirrorNode,\n verificationProvider: provider,\n });\n }\n}\n"],"names":[],"mappings":";;AAcA,SAAS,gBACP,QAC8B;AAC9B,QAAM,iBAAiB,OAAO,kBAAkB;AAChD,SAAO;AAAA,IACL,MAAM,OAAO;AAAA,IACb,UAAU,OAAO;AAAA,IACjB,oBAAoB,OAAO;AAAA,IAC3B,GAAI,iBAAiB,EAAE,mBAAmB,CAAA;AAAA,EAAC;AAE/C;AAEO,SAAS,yCACd,QACgC;AAChC,SAAO;AAAA,IACL,MAAM,2BAA2B,QAA0B;AACzD,YAAM,SAAS,MAAM,2BAA2B,QAAQ;AAAA,QACtD,MAAM,OAAO;AAAA,MAAA,CACd;AACD,aAAO,gBAAgB,MAAM;AAAA,IAC/B;AAAA,EAAA;AAEJ;AAEO,MAAM,oBAAoB,gBAAgB;AAAA,EAC/C,YAAY,QAA8B;AACxC,UAAM,WACJ,OAAO,yBACN,OAAO,uBACJ,yCAAyC,OAAO,oBAAoB,IACpE;AAEN,UAAM;AAAA,MACJ,SAAS,OAAO;AAAA,MAChB,QAAQ,OAAO;AAAA,MACf,YAAY,OAAO;AAAA,MACnB,sBAAsB;AAAA,IAAA,CACvB;AAAA,EACH;AACF;"}
|
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const publicKey = await mirrorNode.getPublicKey(accountId);
|
|
11
|
-
exemptKeys.push(publicKey);
|
|
12
|
-
} catch (error) {
|
|
13
|
-
if (logger) {
|
|
14
|
-
logger.warn(
|
|
15
|
-
`Could not get public key for account ${accountId}: ${error}`
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
1
|
+
import { HCS26BaseClient } from "./standards-sdk.es123.js";
|
|
2
|
+
class HCS26BrowserClient extends HCS26BaseClient {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
super({
|
|
5
|
+
network: config.network,
|
|
6
|
+
logger: config.logger,
|
|
7
|
+
mirrorNode: config.mirrorNode,
|
|
8
|
+
verificationProvider: config.verificationProvider
|
|
9
|
+
});
|
|
19
10
|
}
|
|
20
|
-
return exemptKeys;
|
|
21
11
|
}
|
|
22
12
|
export {
|
|
23
|
-
|
|
13
|
+
HCS26BrowserClient
|
|
24
14
|
};
|
|
25
15
|
//# sourceMappingURL=standards-sdk.es125.js.map
|