@hashgraphonline/standards-sdk 0.1.136-fix-hol-env.canary.a285980.31 → 0.1.137-feat-hcs-21.canary.5802d65.32
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-21/base-client.d.ts +31 -0
- package/dist/cjs/hcs-21/base-client.d.ts.map +1 -0
- package/dist/cjs/hcs-21/browser.d.ts +20 -0
- package/dist/cjs/hcs-21/browser.d.ts.map +1 -0
- package/dist/cjs/hcs-21/errors.d.ts +6 -0
- package/dist/cjs/hcs-21/errors.d.ts.map +1 -0
- package/dist/cjs/hcs-21/index.d.ts +7 -0
- package/dist/cjs/hcs-21/index.d.ts.map +1 -0
- package/dist/cjs/hcs-21/sdk.d.ts +48 -0
- package/dist/cjs/hcs-21/sdk.d.ts.map +1 -0
- package/dist/cjs/hcs-21/tx.d.ts +20 -0
- package/dist/cjs/hcs-21/tx.d.ts.map +1 -0
- package/dist/cjs/hcs-21/types.d.ts +72 -0
- package/dist/cjs/hcs-21/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/types.d.ts +1 -1
- package/dist/cjs/services/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-21/base-client.d.ts +31 -0
- package/dist/es/hcs-21/base-client.d.ts.map +1 -0
- package/dist/es/hcs-21/browser.d.ts +20 -0
- package/dist/es/hcs-21/browser.d.ts.map +1 -0
- package/dist/es/hcs-21/errors.d.ts +6 -0
- package/dist/es/hcs-21/errors.d.ts.map +1 -0
- package/dist/es/hcs-21/index.d.ts +7 -0
- package/dist/es/hcs-21/index.d.ts.map +1 -0
- package/dist/es/hcs-21/sdk.d.ts +48 -0
- package/dist/es/hcs-21/sdk.d.ts.map +1 -0
- package/dist/es/hcs-21/tx.d.ts +20 -0
- package/dist/es/hcs-21/tx.d.ts.map +1 -0
- package/dist/es/hcs-21/types.d.ts +72 -0
- package/dist/es/hcs-21/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/types.d.ts +1 -1
- package/dist/es/services/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +66 -48
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es10.js +2 -2
- package/dist/es/standards-sdk.es100.js +231 -28
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +109 -18
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +32 -158
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +80 -204
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +21 -780
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +140 -11
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +29 -567
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +17 -597
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +159 -12
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +208 -2
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es110.js +774 -67
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +11 -37
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +567 -2
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +576 -197
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +12 -1139
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +2 -306
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +79 -418
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +35 -351
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +2 -761
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +204 -185
- 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 +1055 -1482
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +265 -2042
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +420 -50
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +350 -82
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +741 -139
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +204 -7
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +1533 -52
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +2077 -59
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +52 -28
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +85 -692
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +135 -12250
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +7 -138
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +80 -36
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +58 -49
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +28 -64
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +118 -152
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +34 -314
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +694 -346
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +12216 -395
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +55 -330
- 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 +50 -62
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +168 -13
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +325 -0
- package/dist/es/standards-sdk.es142.js.map +1 -0
- package/dist/es/standards-sdk.es143.js +349 -0
- package/dist/es/standards-sdk.es143.js.map +1 -0
- package/dist/es/standards-sdk.es144.js +456 -0
- package/dist/es/standards-sdk.es144.js.map +1 -0
- package/dist/es/standards-sdk.es145.js +334 -0
- package/dist/es/standards-sdk.es145.js.map +1 -0
- package/dist/es/standards-sdk.es146.js +79 -0
- package/dist/es/standards-sdk.es146.js.map +1 -0
- package/dist/es/standards-sdk.es147.js +20 -0
- package/dist/es/standards-sdk.es147.js.map +1 -0
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es16.js +1 -1
- package/dist/es/standards-sdk.es17.js +5 -5
- package/dist/es/standards-sdk.es19.js +12 -12
- package/dist/es/standards-sdk.es20.js +9 -9
- 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 +1 -1
- package/dist/es/standards-sdk.es28.js +12 -12
- package/dist/es/standards-sdk.es3.js +2 -2
- package/dist/es/standards-sdk.es31.js +2 -2
- package/dist/es/standards-sdk.es32.js +4 -4
- package/dist/es/standards-sdk.es33.js +1 -1
- package/dist/es/standards-sdk.es36.js +6 -6
- package/dist/es/standards-sdk.es37.js +4 -4
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +1 -1
- package/dist/es/standards-sdk.es42.js +2 -2
- package/dist/es/standards-sdk.es47.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es52.js +1 -1
- package/dist/es/standards-sdk.es54.js +1 -1
- package/dist/es/standards-sdk.es57.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.es61.js +7 -7
- package/dist/es/standards-sdk.es63.js +1 -1
- package/dist/es/standards-sdk.es65.js +2 -2
- package/dist/es/standards-sdk.es66.js +3 -3
- package/dist/es/standards-sdk.es69.js +2 -2
- package/dist/es/standards-sdk.es7.js +2 -2
- package/dist/es/standards-sdk.es70.js +3 -3
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +1 -1
- package/dist/es/standards-sdk.es75.js +2 -2
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +4 -4
- package/dist/es/standards-sdk.es79.js +1 -1
- package/dist/es/standards-sdk.es8.js +1 -1
- package/dist/es/standards-sdk.es80.js +25 -27
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +6 -78
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +27 -64
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +67 -23
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +165 -23
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +31 -166
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +24 -127
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +65 -142
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +52 -127
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +26 -41
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +23 -261
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +162 -93
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +112 -83
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +156 -28
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +133 -225
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +40 -108
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +253 -24
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +96 -80
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +91 -21
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +28 -141
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,34 +1,104 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
class
|
|
1
|
+
import { HCS17BaseClient } from "./standards-sdk.es96.js";
|
|
2
|
+
import { buildHcs17CreateTopicTx, buildHcs17MessageTx } from "./standards-sdk.es99.js";
|
|
3
|
+
class HCS17BrowserClient extends HCS17BaseClient {
|
|
4
4
|
constructor(config) {
|
|
5
|
-
|
|
6
|
-
this.
|
|
7
|
-
this.
|
|
5
|
+
super(config);
|
|
6
|
+
this.hwc = config.hwc;
|
|
7
|
+
this.signer = config.signer;
|
|
8
|
+
}
|
|
9
|
+
ensureConnected() {
|
|
10
|
+
if (this.signer && typeof this.signer.getAccountId === "function") {
|
|
11
|
+
return this.signer.getAccountId().toString();
|
|
12
|
+
}
|
|
13
|
+
const info = this.hwc?.getAccountInfo?.();
|
|
14
|
+
const accountId = info?.accountId;
|
|
15
|
+
if (!accountId) {
|
|
16
|
+
throw new Error("No active wallet connection");
|
|
17
|
+
}
|
|
18
|
+
return accountId;
|
|
19
|
+
}
|
|
20
|
+
getSigner() {
|
|
21
|
+
if (this.signer) {
|
|
22
|
+
return this.signer;
|
|
23
|
+
}
|
|
24
|
+
this.ensureConnected();
|
|
25
|
+
const s = this.hwc?.dAppConnector?.signers?.[0];
|
|
26
|
+
if (!s) {
|
|
27
|
+
throw new Error("No active wallet signer");
|
|
28
|
+
}
|
|
29
|
+
return s;
|
|
8
30
|
}
|
|
9
31
|
/**
|
|
10
|
-
*
|
|
32
|
+
* Create an HCS‑17 state topic, signing with the connected signer.
|
|
11
33
|
*/
|
|
12
|
-
async
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
34
|
+
async createStateTopic(options) {
|
|
35
|
+
this.ensureConnected();
|
|
36
|
+
const signer = this.getSigner();
|
|
37
|
+
const ttl = options?.ttl ?? 86400;
|
|
38
|
+
const tx = buildHcs17CreateTopicTx({ ttl });
|
|
39
|
+
const frozen = await tx.freezeWithSigner(signer);
|
|
40
|
+
const res = await frozen.executeWithSigner(signer);
|
|
41
|
+
const receipt = await res.getReceiptWithSigner(signer);
|
|
42
|
+
const topicId = receipt?.topicId?.toString?.() || "";
|
|
43
|
+
this.logger.info(`Created HCS-17 state topic via wallet: ${topicId}`);
|
|
44
|
+
return topicId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Submit an HCS‑17 message to a topic, signing with the connected signer.
|
|
48
|
+
*/
|
|
49
|
+
async submitMessage(topicId, message) {
|
|
50
|
+
const { valid, errors } = this.validateMessage(message);
|
|
51
|
+
if (!valid) {
|
|
52
|
+
throw new Error(`Invalid HCS-17 message: ${errors.join(", ")}`);
|
|
17
53
|
}
|
|
18
|
-
|
|
54
|
+
const signer = this.getSigner();
|
|
55
|
+
const tx = buildHcs17MessageTx({
|
|
56
|
+
topicId,
|
|
57
|
+
stateHash: message.state_hash,
|
|
58
|
+
accountId: message.account_id,
|
|
59
|
+
topics: message.topics,
|
|
60
|
+
memo: message.m
|
|
61
|
+
});
|
|
62
|
+
const frozen = await tx.freezeWithSigner(signer);
|
|
63
|
+
const res = await frozen.executeWithSigner(signer);
|
|
64
|
+
await res.getReceiptWithSigner(signer);
|
|
65
|
+
return {};
|
|
19
66
|
}
|
|
20
67
|
/**
|
|
21
|
-
*
|
|
68
|
+
* Compute current account state hash from topic running hashes and publish it.
|
|
22
69
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
70
|
+
async computeAndPublish(params) {
|
|
71
|
+
this.ensureConnected();
|
|
72
|
+
const signer = this.getSigner();
|
|
73
|
+
const topicStates = [];
|
|
74
|
+
for (const t of params.topics) {
|
|
75
|
+
const msgs = await this.mirrorNode.getTopicMessages(t, {
|
|
76
|
+
limit: 1,
|
|
77
|
+
order: "desc"
|
|
78
|
+
});
|
|
79
|
+
const latest = msgs[0];
|
|
80
|
+
const running = latest && latest.running_hash || "";
|
|
81
|
+
topicStates.push({ topicId: t, latestRunningHash: running });
|
|
82
|
+
}
|
|
83
|
+
const input = {
|
|
84
|
+
accountId: params.accountId,
|
|
85
|
+
publicKey: params.accountPublicKey,
|
|
86
|
+
topics: topicStates
|
|
87
|
+
};
|
|
88
|
+
const result = this.calculateAccountStateHash(input);
|
|
89
|
+
const tx = buildHcs17MessageTx({
|
|
90
|
+
topicId: params.publishTopicId,
|
|
91
|
+
stateHash: result.stateHash,
|
|
92
|
+
accountId: params.accountId,
|
|
93
|
+
topics: params.topics,
|
|
94
|
+
memo: params.memo
|
|
95
|
+
});
|
|
96
|
+
const frozen = await tx.freezeWithSigner(signer);
|
|
97
|
+
await frozen.executeWithSigner(signer);
|
|
98
|
+
return { stateHash: result.stateHash };
|
|
29
99
|
}
|
|
30
100
|
}
|
|
31
101
|
export {
|
|
32
|
-
|
|
102
|
+
HCS17BrowserClient
|
|
33
103
|
};
|
|
34
104
|
//# sourceMappingURL=standards-sdk.es98.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es98.js","sources":["../../src/hcs-
|
|
1
|
+
{"version":3,"file":"standards-sdk.es98.js","sources":["../../src/hcs-17/browser.ts"],"sourcesContent":["import { HCS17BaseClient } from './base-client';\nimport { BrowserHCS17ClientConfig, StateHashMessage } from './types';\nimport { buildHcs17CreateTopicTx, buildHcs17MessageTx } from './tx';\nimport type { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport type { PublicKey } from '@hashgraph/sdk';\n\n/**\n * Browser client for HCS‑17 operations using a DAppSigner.\n * Builds transactions and executes via signer without helper shims.\n */\nexport class HCS17BrowserClient extends HCS17BaseClient {\n private hwc?: HashinalsWalletConnectSDK;\n private signer?: DAppSigner;\n\n constructor(config: BrowserHCS17ClientConfig) {\n super(config);\n this.hwc = config.hwc;\n this.signer = config.signer;\n }\n\n private ensureConnected(): string {\n if (\n this.signer &&\n typeof (this.signer as DAppSigner).getAccountId === 'function'\n ) {\n return (this.signer as DAppSigner).getAccountId().toString();\n }\n const info = this.hwc?.getAccountInfo?.();\n const accountId = info?.accountId;\n if (!accountId) {\n throw new Error('No active wallet connection');\n }\n return accountId;\n }\n\n private getSigner(): DAppSigner {\n if (this.signer) {\n return this.signer;\n }\n this.ensureConnected();\n const s = this.hwc?.dAppConnector?.signers?.[0];\n if (!s) {\n throw new Error('No active wallet signer');\n }\n return s as unknown as DAppSigner;\n }\n\n /**\n * Create an HCS‑17 state topic, signing with the connected signer.\n */\n async createStateTopic(options?: {\n ttl?: number;\n adminKey?: boolean | string;\n submitKey?: boolean | string;\n }): Promise<string> {\n this.ensureConnected();\n const signer = this.getSigner();\n const ttl = options?.ttl ?? 86400;\n const tx = buildHcs17CreateTopicTx({ ttl });\n const frozen = await tx.freezeWithSigner(signer);\n const res = await frozen.executeWithSigner(signer);\n const receipt = await res.getReceiptWithSigner(signer);\n const topicId = receipt?.topicId?.toString?.() || '';\n this.logger.info(`Created HCS-17 state topic via wallet: ${topicId}`);\n return topicId;\n }\n\n /**\n * Submit an HCS‑17 message to a topic, signing with the connected signer.\n */\n async submitMessage(\n topicId: string,\n message: StateHashMessage,\n ): Promise<{ transactionId?: string }> {\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n throw new Error(`Invalid HCS-17 message: ${errors.join(', ')}`);\n }\n const signer = this.getSigner();\n const tx = buildHcs17MessageTx({\n topicId,\n stateHash: message.state_hash,\n accountId: message.account_id,\n topics: message.topics,\n memo: message.m,\n });\n const frozen = await tx.freezeWithSigner(signer);\n const res = await frozen.executeWithSigner(signer);\n await res.getReceiptWithSigner(signer);\n return {};\n }\n\n /**\n * Compute current account state hash from topic running hashes and publish it.\n */\n async computeAndPublish(params: {\n accountId: string;\n accountPublicKey: string | PublicKey;\n topics: string[];\n publishTopicId: string;\n memo?: string;\n }): Promise<{ stateHash: string }> {\n this.ensureConnected();\n const signer = this.getSigner();\n\n const topicStates: { topicId: string; latestRunningHash: string }[] = [];\n for (const t of params.topics) {\n const msgs = await this.mirrorNode.getTopicMessages(t, {\n limit: 1,\n order: 'desc',\n });\n const latest = msgs[0];\n const running = (latest && (latest as any).running_hash) || '';\n topicStates.push({ topicId: t, latestRunningHash: running });\n }\n\n const input = {\n accountId: params.accountId,\n publicKey: params.accountPublicKey,\n topics: topicStates,\n };\n const result = this.calculateAccountStateHash(input);\n const tx = buildHcs17MessageTx({\n topicId: params.publishTopicId,\n stateHash: result.stateHash,\n accountId: params.accountId,\n topics: params.topics,\n memo: params.memo,\n });\n const frozen = await tx.freezeWithSigner(signer);\n await frozen.executeWithSigner(signer);\n return { stateHash: result.stateHash };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,145 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es136.js";
|
|
2
|
+
import { generateHCS17Memo } from "./standards-sdk.es95.js";
|
|
3
|
+
function buildHcs17CreateTopicTx(params) {
|
|
4
|
+
const memo = generateHCS17Memo(params.ttl);
|
|
5
|
+
return buildTopicCreateTx({
|
|
6
|
+
memo,
|
|
7
|
+
adminKey: params.adminKey,
|
|
8
|
+
submitKey: params.submitKey,
|
|
9
|
+
operatorPublicKey: params.operatorPublicKey
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function buildHcs17MessageTx(params) {
|
|
13
|
+
const payload = {
|
|
14
|
+
p: "hcs-17",
|
|
15
|
+
op: "state_hash",
|
|
16
|
+
state_hash: params.stateHash,
|
|
17
|
+
topics: params.topics,
|
|
18
|
+
account_id: params.accountId,
|
|
19
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
20
|
+
m: params.memo
|
|
21
|
+
};
|
|
22
|
+
return buildMessageTx({
|
|
23
|
+
topicId: params.topicId,
|
|
24
|
+
message: JSON.stringify(payload),
|
|
25
|
+
transactionMemo: params.transactionMemo
|
|
26
|
+
});
|
|
6
27
|
}
|
|
7
|
-
const _Logger = class _Logger {
|
|
8
|
-
constructor(options = {}) {
|
|
9
|
-
if (loggerFactory) {
|
|
10
|
-
return loggerFactory(options);
|
|
11
|
-
}
|
|
12
|
-
const globalDisable = typeof process !== "undefined" && process.env?.DISABLE_LOGS === "true";
|
|
13
|
-
this.silent = options.silent || globalDisable;
|
|
14
|
-
this.level = this.silent ? "silent" : options.level || "info";
|
|
15
|
-
this.moduleContext = options.module || "app";
|
|
16
|
-
this.prettyPrint = !this.silent && options.prettyPrint !== false;
|
|
17
|
-
}
|
|
18
|
-
static getInstance(options = {}) {
|
|
19
|
-
const moduleKey = options.module || "default";
|
|
20
|
-
const globalDisable = typeof process !== "undefined" && process.env?.DISABLE_LOGS === "true";
|
|
21
|
-
if (globalDisable && _Logger.instances.has(moduleKey)) {
|
|
22
|
-
const existingLogger = _Logger.instances.get(moduleKey);
|
|
23
|
-
if (existingLogger.getLevel() !== "silent") {
|
|
24
|
-
_Logger.instances.delete(moduleKey);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (!_Logger.instances.has(moduleKey)) {
|
|
28
|
-
const logger = loggerFactory ? loggerFactory(options) : new _Logger(options);
|
|
29
|
-
_Logger.instances.set(moduleKey, logger);
|
|
30
|
-
}
|
|
31
|
-
return _Logger.instances.get(moduleKey);
|
|
32
|
-
}
|
|
33
|
-
setLogLevel(level) {
|
|
34
|
-
this.level = level;
|
|
35
|
-
}
|
|
36
|
-
getLevel() {
|
|
37
|
-
return this.level;
|
|
38
|
-
}
|
|
39
|
-
setSilent(silent) {
|
|
40
|
-
this.silent = silent;
|
|
41
|
-
if (silent) {
|
|
42
|
-
this.level = "silent";
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
setModule(module) {
|
|
46
|
-
this.moduleContext = module;
|
|
47
|
-
}
|
|
48
|
-
formatArgs(args) {
|
|
49
|
-
if (args.length === 0) {
|
|
50
|
-
return { msg: "" };
|
|
51
|
-
}
|
|
52
|
-
if (args.length === 1) {
|
|
53
|
-
if (typeof args[0] === "string") {
|
|
54
|
-
return { msg: args[0] };
|
|
55
|
-
}
|
|
56
|
-
return { msg: "", data: args[0] };
|
|
57
|
-
}
|
|
58
|
-
const stringArgs = [];
|
|
59
|
-
const objectArgs = [];
|
|
60
|
-
args.forEach((arg) => {
|
|
61
|
-
if (typeof arg === "string" || typeof arg === "number" || typeof arg === "boolean") {
|
|
62
|
-
stringArgs.push(String(arg));
|
|
63
|
-
} else {
|
|
64
|
-
objectArgs.push(arg);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
const msg = stringArgs.join(" ");
|
|
68
|
-
return objectArgs.length > 0 ? { msg, data: objectArgs } : { msg };
|
|
69
|
-
}
|
|
70
|
-
shouldLog(level) {
|
|
71
|
-
if (this.silent || this.level === "silent") {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
const levels = ["trace", "debug", "info", "warn", "error", "silent"];
|
|
75
|
-
const currentLevelIndex = levels.indexOf(this.level);
|
|
76
|
-
const targetLevelIndex = levels.indexOf(level);
|
|
77
|
-
return targetLevelIndex >= currentLevelIndex;
|
|
78
|
-
}
|
|
79
|
-
getConsoleMethod(level) {
|
|
80
|
-
if (level === "error") {
|
|
81
|
-
return console.error;
|
|
82
|
-
}
|
|
83
|
-
if (level === "warn") {
|
|
84
|
-
return console.warn;
|
|
85
|
-
}
|
|
86
|
-
if (level === "debug") {
|
|
87
|
-
return console.debug;
|
|
88
|
-
}
|
|
89
|
-
return console.log;
|
|
90
|
-
}
|
|
91
|
-
writeLog(level, ...args) {
|
|
92
|
-
if (!this.shouldLog(level)) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const { msg, data } = this.formatArgs(args);
|
|
96
|
-
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
97
|
-
const consoleMethod = this.getConsoleMethod(level);
|
|
98
|
-
if (this.prettyPrint) {
|
|
99
|
-
const levelFormatted = level.toUpperCase().padEnd(5);
|
|
100
|
-
let output = `${timestamp} ${levelFormatted} [${this.moduleContext}] ${msg}`;
|
|
101
|
-
if (data) {
|
|
102
|
-
output += "\n" + inspect(data, { colors: true, depth: 3 });
|
|
103
|
-
}
|
|
104
|
-
consoleMethod(output);
|
|
105
|
-
} else {
|
|
106
|
-
const logObj = {
|
|
107
|
-
timestamp,
|
|
108
|
-
level,
|
|
109
|
-
module: this.moduleContext,
|
|
110
|
-
message: msg,
|
|
111
|
-
...data && { data }
|
|
112
|
-
};
|
|
113
|
-
consoleMethod(JSON.stringify(logObj));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
debug(...args) {
|
|
117
|
-
this.writeLog("debug", ...args);
|
|
118
|
-
}
|
|
119
|
-
info(...args) {
|
|
120
|
-
this.writeLog("info", ...args);
|
|
121
|
-
}
|
|
122
|
-
warn(...args) {
|
|
123
|
-
this.writeLog("warn", ...args);
|
|
124
|
-
}
|
|
125
|
-
error(...args) {
|
|
126
|
-
this.writeLog("error", ...args);
|
|
127
|
-
}
|
|
128
|
-
trace(...args) {
|
|
129
|
-
this.writeLog("trace", ...args);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Clear all logger instances
|
|
133
|
-
* Used when switching logger implementations
|
|
134
|
-
*/
|
|
135
|
-
static clearInstances() {
|
|
136
|
-
_Logger.instances.clear();
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
_Logger.instances = /* @__PURE__ */ new Map();
|
|
140
|
-
let Logger = _Logger;
|
|
141
28
|
export {
|
|
142
|
-
|
|
143
|
-
|
|
29
|
+
buildHcs17CreateTopicTx,
|
|
30
|
+
buildHcs17MessageTx
|
|
144
31
|
};
|
|
145
32
|
//# sourceMappingURL=standards-sdk.es99.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es99.js","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es99.js","sources":["../../src/hcs-17/tx.ts"],"sourcesContent":["import {\n PublicKey,\n KeyList,\n TopicMessageSubmitTransaction,\n TopicCreateTransaction,\n} from '@hashgraph/sdk';\nimport { buildTopicCreateTx, buildMessageTx } from '../common/tx/tx-utils';\nimport { generateHCS17Memo, StateHashMessage } from './types';\n\n/**\n * Build a TopicCreateTransaction for HCS‑17 state topics.\n */\nexport function buildHcs17CreateTopicTx(params: {\n ttl: number;\n adminKey?: boolean | string | PublicKey | KeyList;\n submitKey?: boolean | string | PublicKey | KeyList;\n operatorPublicKey?: PublicKey;\n}): TopicCreateTransaction {\n const memo = generateHCS17Memo(params.ttl);\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\n/**\n * Build a TopicMessageSubmitTransaction for HCS‑17 messages.\n */\n/**\n * Build a TopicMessageSubmitTransaction for HCS‑17 messages.\n */\nexport function buildHcs17MessageTx(params: {\n topicId: string;\n stateHash: string;\n accountId: string;\n topics: string[];\n memo?: string;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const payload: StateHashMessage = {\n p: 'hcs-17',\n op: 'state_hash',\n state_hash: params.stateHash,\n topics: params.topics,\n account_id: params.accountId,\n timestamp: new Date().toISOString(),\n m: params.memo,\n };\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(payload),\n transactionMemo: params.transactionMemo,\n });\n}\n"],"names":[],"mappings":";;AAYO,SAAS,wBAAwB,QAKb;AACzB,QAAM,OAAO,kBAAkB,OAAO,GAAG;AACzC,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAQO,SAAS,oBAAoB,QAOF;AAChC,QAAM,UAA4B;AAAA,IAChC,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,YAAY,OAAO;AAAA,IACnB,QAAQ,OAAO;AAAA,IACf,YAAY,OAAO;AAAA,IACnB,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,IACtB,GAAG,OAAO;AAAA,EAAA;AAEZ,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO;AAAA,IAC/B,iBAAiB,OAAO;AAAA,EAAA,CACzB;AACH;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashgraphonline/standards-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.137-feat-hcs-21.canary.5802d65.32",
|
|
4
4
|
"description": "The Hashgraph Online Standards SDK provides a complete implementation of the Hashgraph Consensus Standards (HCS), giving developers all the tools needed to build applications on Hedera.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"demo:hcs-20:deploy-and-mint": "tsx demo/hcs-20/deploy-and-mint.ts",
|
|
86
86
|
"demo:hcs-20:deploy-points": "tsx demo/hcs-20/deploy-points.ts",
|
|
87
87
|
"demo:hcs-20:mint-transfer-burn": "tsx demo/hcs-20/mint-transfer-burn.ts",
|
|
88
|
+
"demo:hcs-21": "tsx demo/hcs-21/adapter-declaration-demo.ts",
|
|
88
89
|
"demo:hcs-6:browser": "pnpm run build && pnpm --dir demo/hcs-6/browser i && pnpm --dir demo/hcs-6/browser dev",
|
|
89
90
|
"demo:hcs-5": "tsx demo/hcs-5/mint-hashinal.ts",
|
|
90
91
|
"demo:registry-broker": "tsx demo/registry-broker/registry-broker-demo.ts",
|