@hashgraphonline/standards-sdk 0.0.93 → 0.0.94
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/es/hcs-10/base-client.d.ts +14 -2
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +6 -4
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +30 -14
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +5 -4
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +159 -39
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +21 -38
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +790 -34
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +2281 -77
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +166 -7128
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +143 -3
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +3 -2
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +2 -2
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es110.js +2 -34
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +30 -29
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +33 -9
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +9 -34
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +29 -414
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +21 -2
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +25 -118
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +25 -3
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +41 -0
- package/dist/es/standards-sdk.es118.js.map +1 -0
- package/dist/es/standards-sdk.es13.js +5 -5
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es16.js +1 -1
- package/dist/es/standards-sdk.es18.js +134 -384
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +385 -315
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es20.js +310 -128
- package/dist/es/standards-sdk.es20.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +155 -7
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +7 -1041
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +5 -1767
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es25.js +17 -17
- package/dist/es/standards-sdk.es26.js +121 -5544
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +7190 -3
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +1041 -2
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +3 -4167
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +2 -5
- package/dist/es/standards-sdk.es30.js.map +1 -1
- package/dist/es/standards-sdk.es31.js +4167 -2
- package/dist/es/standards-sdk.es31.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +393 -338
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es33.js +2 -6
- package/dist/es/standards-sdk.es33.js.map +1 -1
- package/dist/es/standards-sdk.es34.js +109 -168
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es35.js +3 -80
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +349 -99
- package/dist/es/standards-sdk.es36.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +5 -51
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es38.js +177 -8
- package/dist/es/standards-sdk.es38.js.map +1 -1
- package/dist/es/standards-sdk.es39.js +71 -87
- package/dist/es/standards-sdk.es39.js.map +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es40.js +113 -3
- package/dist/es/standards-sdk.es40.js.map +1 -1
- package/dist/es/standards-sdk.es41.js +52 -2
- package/dist/es/standards-sdk.es41.js.map +1 -1
- package/dist/es/standards-sdk.es42.js +9 -112
- package/dist/es/standards-sdk.es42.js.map +1 -1
- package/dist/es/standards-sdk.es43.js +92 -69
- package/dist/es/standards-sdk.es43.js.map +1 -1
- package/dist/es/standards-sdk.es44.js +3 -5
- package/dist/es/standards-sdk.es44.js.map +1 -1
- package/dist/es/standards-sdk.es45.js +2 -5
- package/dist/es/standards-sdk.es45.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +94 -202
- package/dist/es/standards-sdk.es46.js.map +1 -1
- package/dist/es/standards-sdk.es47.js +71 -55
- package/dist/es/standards-sdk.es47.js.map +1 -1
- package/dist/es/standards-sdk.es48.js +6 -69
- package/dist/es/standards-sdk.es48.js.map +1 -1
- package/dist/es/standards-sdk.es49.js +4 -83
- package/dist/es/standards-sdk.es49.js.map +1 -1
- package/dist/es/standards-sdk.es5.js +42 -18
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es50.js +219 -21
- package/dist/es/standards-sdk.es50.js.map +1 -1
- package/dist/es/standards-sdk.es51.js +52 -142
- package/dist/es/standards-sdk.es51.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +69 -91
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +7132 -191
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +3 -438
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +159 -20
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +25 -132
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +58 -13
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +45 -24
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +9 -28
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +60 -16
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +6 -44
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +14 -17
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +7 -61
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +40 -1284
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +2 -32
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +136 -6
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +161 -148
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +2 -793
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +92 -134
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +4 -4
- package/dist/es/standards-sdk.es70.js +2 -174
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +16 -3
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +400 -155
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +13 -32
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +13 -63
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +30 -48
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +14 -9
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +3 -64
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +4 -6
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +15 -14
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +4 -4
- package/dist/es/standards-sdk.es80.js +5 -7
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +38 -44
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +40 -2
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +32 -131
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +68 -162
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +191 -97
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +438 -2
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +24 -15
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +131 -401
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +11 -14
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +1 -1
- package/dist/es/standards-sdk.es90.js +26 -24
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +27 -24
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +19 -36
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +44 -13
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +18 -13
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +60 -31
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +1288 -14
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +147 -3
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +90 -3
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +84 -2282
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/es/utils/hrl-resolver.d.ts +53 -0
- package/dist/es/utils/hrl-resolver.d.ts.map +1 -0
- package/dist/es/utils/index.d.ts +1 -0
- package/dist/es/utils/index.d.ts.map +1 -1
- package/dist/umd/hcs-10/base-client.d.ts +14 -2
- package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
- package/dist/umd/standards-sdk.umd.js +2 -2
- package/dist/umd/standards-sdk.umd.js.map +1 -1
- package/dist/umd/utils/hrl-resolver.d.ts +53 -0
- package/dist/umd/utils/hrl-resolver.d.ts.map +1 -0
- package/dist/umd/utils/index.d.ts +1 -0
- package/dist/umd/utils/index.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1,340 +1,410 @@
|
|
|
1
|
-
import Buffer from "./standards-sdk.
|
|
2
|
-
import {
|
|
3
|
-
import "./standards-sdk.
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Retrieves the public key for a given account ID from the mirror node.
|
|
21
|
-
* @param accountId The ID of the account to retrieve the public key for.
|
|
22
|
-
* @returns A promise that resolves to the public key for the given account.
|
|
23
|
-
* @throws An error if the account ID is invalid or the public key cannot be retrieved.
|
|
24
|
-
*/
|
|
25
|
-
async getPublicKey(accountId) {
|
|
26
|
-
this.logger.info(`Getting public key for account ${accountId}`);
|
|
27
|
-
const accountInfo = await this.requestAccount(accountId);
|
|
28
|
-
try {
|
|
29
|
-
if (!accountInfo || !accountInfo.key) {
|
|
30
|
-
throw new Error(
|
|
31
|
-
`Failed to retrieve public key for account ID: ${accountId}`
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
return PublicKey.fromString(accountInfo.key.key);
|
|
35
|
-
} catch (e) {
|
|
36
|
-
const error = e;
|
|
37
|
-
const logMessage = `Error fetching public key from Mirror Node: ${error.message}`;
|
|
38
|
-
this.logger.error(logMessage);
|
|
39
|
-
throw new Error(logMessage);
|
|
1
|
+
import Buffer from "./standards-sdk.es26.js";
|
|
2
|
+
import { I as InscriptionSDK } from "./standards-sdk.es27.js";
|
|
3
|
+
import { Logger } from "./standards-sdk.es15.js";
|
|
4
|
+
import { ProgressReporter } from "./standards-sdk.es17.js";
|
|
5
|
+
async function inscribe(input, clientConfig, options, existingSDK) {
|
|
6
|
+
const logger = Logger.getInstance({
|
|
7
|
+
module: "Inscriber",
|
|
8
|
+
...options.logging
|
|
9
|
+
});
|
|
10
|
+
logger.info("Starting inscription process", {
|
|
11
|
+
type: input.type,
|
|
12
|
+
mode: options.mode || "file",
|
|
13
|
+
...input.type === "url" ? { url: input.url } : {},
|
|
14
|
+
...input.type === "file" ? { path: input.path } : {},
|
|
15
|
+
...input.type === "buffer" ? { fileName: input.fileName, bufferSize: input.buffer.byteLength } : {}
|
|
16
|
+
});
|
|
17
|
+
try {
|
|
18
|
+
if (options.mode === "hashinal" && options.metadata) {
|
|
19
|
+
validateHashinalMetadata(options.metadata, logger);
|
|
40
20
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (attempt < maxRetries - 1) {
|
|
60
|
-
await new Promise((resolve) => setTimeout(resolve, 2e3));
|
|
61
|
-
}
|
|
62
|
-
} catch (e) {
|
|
63
|
-
const error = e;
|
|
64
|
-
const logMessage = `Error getting account memo (attempt ${attempt + 1}): ${error.message}`;
|
|
65
|
-
this.logger.error(logMessage);
|
|
66
|
-
if (attempt < maxRetries - 1) {
|
|
67
|
-
await new Promise((resolve) => setTimeout(resolve, 2e3));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
21
|
+
let sdk;
|
|
22
|
+
if (existingSDK) {
|
|
23
|
+
logger.debug("Using existing InscriptionSDK instance");
|
|
24
|
+
sdk = existingSDK;
|
|
25
|
+
} else if (options.apiKey) {
|
|
26
|
+
logger.debug("Initializing InscriptionSDK with API key");
|
|
27
|
+
sdk = new InscriptionSDK({
|
|
28
|
+
apiKey: options.apiKey,
|
|
29
|
+
network: clientConfig.network || "mainnet"
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
logger.debug("Initializing InscriptionSDK with server auth");
|
|
33
|
+
sdk = await InscriptionSDK.createWithAuth({
|
|
34
|
+
type: "server",
|
|
35
|
+
accountId: clientConfig.accountId,
|
|
36
|
+
privateKey: clientConfig.privateKey,
|
|
37
|
+
network: clientConfig.network || "mainnet"
|
|
38
|
+
});
|
|
70
39
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
40
|
+
const baseRequest = {
|
|
41
|
+
holderId: clientConfig.accountId,
|
|
42
|
+
metadata: options.metadata || {},
|
|
43
|
+
tags: options.tags || [],
|
|
44
|
+
mode: options.mode || "file",
|
|
45
|
+
chunkSize: options.chunkSize
|
|
46
|
+
};
|
|
47
|
+
let request;
|
|
48
|
+
switch (input.type) {
|
|
49
|
+
case "url":
|
|
50
|
+
request = {
|
|
51
|
+
...baseRequest,
|
|
52
|
+
file: {
|
|
53
|
+
type: "url",
|
|
54
|
+
url: input.url
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
break;
|
|
58
|
+
case "file":
|
|
59
|
+
request = {
|
|
60
|
+
...baseRequest,
|
|
61
|
+
file: {
|
|
62
|
+
type: "path",
|
|
63
|
+
path: input.path
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
break;
|
|
67
|
+
case "buffer":
|
|
68
|
+
request = {
|
|
69
|
+
...baseRequest,
|
|
70
|
+
file: {
|
|
71
|
+
type: "base64",
|
|
72
|
+
base64: Buffer.from(input.buffer).toString("base64"),
|
|
73
|
+
fileName: input.fileName,
|
|
74
|
+
mimeType: input.mimeType
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
break;
|
|
89
78
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
async getTopicFees(topicId) {
|
|
98
|
-
try {
|
|
99
|
-
const topicInfo = await this.getTopicInfo(topicId);
|
|
100
|
-
return topicInfo.custom_fees;
|
|
101
|
-
} catch (e) {
|
|
102
|
-
const error = e;
|
|
103
|
-
const logMessage = `Error retrieving topic fees: ${error.message}`;
|
|
104
|
-
this.logger.error(logMessage);
|
|
105
|
-
return null;
|
|
79
|
+
if (options.mode === "hashinal") {
|
|
80
|
+
request.metadataObject = options.metadata;
|
|
81
|
+
request.creator = options.metadata?.creator || clientConfig.accountId;
|
|
82
|
+
request.description = options.metadata?.description;
|
|
83
|
+
if (options.jsonFileURL) {
|
|
84
|
+
request.jsonFileURL = options.jsonFileURL;
|
|
85
|
+
}
|
|
106
86
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
87
|
+
logger.debug("Preparing to inscribe content", {
|
|
88
|
+
type: input.type,
|
|
89
|
+
mode: options.mode || "file",
|
|
90
|
+
holderId: clientConfig.accountId
|
|
91
|
+
});
|
|
92
|
+
const result = await sdk.inscribeAndExecute(request, clientConfig);
|
|
93
|
+
logger.info("Starting to inscribe.", {
|
|
94
|
+
type: input.type,
|
|
95
|
+
mode: options.mode || "file",
|
|
96
|
+
transactionId: result.jobId
|
|
97
|
+
});
|
|
98
|
+
if (options.waitForConfirmation) {
|
|
99
|
+
logger.debug("Waiting for inscription confirmation", {
|
|
100
|
+
transactionId: result.jobId,
|
|
101
|
+
maxAttempts: options.waitMaxAttempts,
|
|
102
|
+
intervalMs: options.waitIntervalMs
|
|
103
|
+
});
|
|
104
|
+
const inscription = await waitForInscriptionConfirmation(
|
|
105
|
+
sdk,
|
|
106
|
+
result.jobId,
|
|
107
|
+
options.waitMaxAttempts,
|
|
108
|
+
options.waitIntervalMs,
|
|
109
|
+
options.progressCallback
|
|
119
110
|
);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
111
|
+
logger.info("Inscription confirmation received", {
|
|
112
|
+
transactionId: result.jobId
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
confirmed: true,
|
|
116
|
+
result,
|
|
117
|
+
inscription,
|
|
118
|
+
sdk
|
|
119
|
+
};
|
|
128
120
|
}
|
|
121
|
+
return {
|
|
122
|
+
confirmed: false,
|
|
123
|
+
result,
|
|
124
|
+
sdk
|
|
125
|
+
};
|
|
126
|
+
} catch (error) {
|
|
127
|
+
logger.error("Error during inscription process", error);
|
|
128
|
+
throw error;
|
|
129
129
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return null;
|
|
147
|
-
} catch (e) {
|
|
148
|
-
const error = e;
|
|
149
|
-
const logMessage = `Error fetching token info for ${tokenId}: ${error.message}`;
|
|
150
|
-
this.logger.error(logMessage);
|
|
151
|
-
return null;
|
|
130
|
+
}
|
|
131
|
+
async function inscribeWithSigner(input, signer, options, existingSDK) {
|
|
132
|
+
const logger = Logger.getInstance({
|
|
133
|
+
module: "Inscriber",
|
|
134
|
+
...options.logging
|
|
135
|
+
});
|
|
136
|
+
logger.info("Starting inscription process with signer", {
|
|
137
|
+
type: input.type,
|
|
138
|
+
mode: options.mode || "file",
|
|
139
|
+
...input.type === "url" ? { url: input.url } : {},
|
|
140
|
+
...input.type === "file" ? { path: input.path } : {},
|
|
141
|
+
...input.type === "buffer" ? { fileName: input.fileName, bufferSize: input.buffer.byteLength } : {}
|
|
142
|
+
});
|
|
143
|
+
try {
|
|
144
|
+
if (options.mode === "hashinal" && options.metadata) {
|
|
145
|
+
validateHashinalMetadata(options.metadata, logger);
|
|
152
146
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
} catch (error) {
|
|
190
|
-
const logMessage = `Error decoding message: ${error}`;
|
|
191
|
-
this.logger.error(logMessage);
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
let messageJson;
|
|
195
|
-
try {
|
|
196
|
-
messageJson = JSON.parse(messageContent);
|
|
197
|
-
} catch (error) {
|
|
198
|
-
const logMessage = `Invalid JSON message content: ${messageContent}`;
|
|
199
|
-
this.logger.error(logMessage);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
messageJson.sequence_number = message.sequence_number;
|
|
203
|
-
messages.push({
|
|
204
|
-
...messageJson,
|
|
205
|
-
consensus_timestamp: message.consensus_timestamp,
|
|
206
|
-
sequence_number: message.sequence_number,
|
|
207
|
-
created: new Date(Number(message.consensus_timestamp) * 1e3)
|
|
208
|
-
});
|
|
209
|
-
} catch (error) {
|
|
210
|
-
const logMessage = `Error processing message: ${error.message}`;
|
|
211
|
-
this.logger.error(logMessage);
|
|
212
|
-
}
|
|
147
|
+
const accountId = signer.getAccountId().toString();
|
|
148
|
+
logger.debug("Using account ID from signer", { accountId });
|
|
149
|
+
let sdk;
|
|
150
|
+
if (existingSDK) {
|
|
151
|
+
logger.debug("Using existing InscriptionSDK instance");
|
|
152
|
+
sdk = existingSDK;
|
|
153
|
+
} else if (options.apiKey) {
|
|
154
|
+
logger.debug("Initializing InscriptionSDK with API key");
|
|
155
|
+
sdk = new InscriptionSDK({
|
|
156
|
+
apiKey: options.apiKey,
|
|
157
|
+
network: options.network || "mainnet"
|
|
158
|
+
});
|
|
159
|
+
} else {
|
|
160
|
+
logger.debug("Initializing InscriptionSDK with client auth");
|
|
161
|
+
sdk = await InscriptionSDK.createWithAuth({
|
|
162
|
+
type: "client",
|
|
163
|
+
accountId,
|
|
164
|
+
signer,
|
|
165
|
+
network: options.network || "mainnet"
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
const baseRequest = {
|
|
169
|
+
holderId: accountId,
|
|
170
|
+
metadata: options.metadata || {},
|
|
171
|
+
tags: options.tags || [],
|
|
172
|
+
mode: options.mode || "file",
|
|
173
|
+
chunkSize: options.chunkSize
|
|
174
|
+
};
|
|
175
|
+
let request;
|
|
176
|
+
switch (input.type) {
|
|
177
|
+
case "url":
|
|
178
|
+
request = {
|
|
179
|
+
...baseRequest,
|
|
180
|
+
file: {
|
|
181
|
+
type: "url",
|
|
182
|
+
url: input.url
|
|
213
183
|
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
184
|
+
};
|
|
185
|
+
break;
|
|
186
|
+
case "file":
|
|
187
|
+
request = {
|
|
188
|
+
...baseRequest,
|
|
189
|
+
file: {
|
|
190
|
+
type: "path",
|
|
191
|
+
path: input.path
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
break;
|
|
195
|
+
case "buffer":
|
|
196
|
+
request = {
|
|
197
|
+
...baseRequest,
|
|
198
|
+
file: {
|
|
199
|
+
type: "base64",
|
|
200
|
+
base64: Buffer.from(input.buffer).toString("base64"),
|
|
201
|
+
fileName: input.fileName,
|
|
202
|
+
mimeType: input.mimeType
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
break;
|
|
222
206
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
* @throws An error if the account ID is invalid or the information cannot be retrieved.
|
|
230
|
-
*/
|
|
231
|
-
async requestAccount(accountId) {
|
|
232
|
-
try {
|
|
233
|
-
const accountInfoUrl = `${this.baseUrl}/api/v1/accounts/${accountId}`;
|
|
234
|
-
const response = await axios.get(accountInfoUrl);
|
|
235
|
-
if (!response.data) {
|
|
236
|
-
throw new Error(
|
|
237
|
-
`Failed to make request to mirror node for account: ${accountId}`
|
|
238
|
-
);
|
|
207
|
+
if (options.mode === "hashinal") {
|
|
208
|
+
request.metadataObject = options.metadata;
|
|
209
|
+
request.creator = options.metadata?.creator || accountId;
|
|
210
|
+
request.description = options.metadata?.description;
|
|
211
|
+
if (options.jsonFileURL) {
|
|
212
|
+
request.jsonFileURL = options.jsonFileURL;
|
|
239
213
|
}
|
|
240
|
-
return response.data;
|
|
241
|
-
} catch (e) {
|
|
242
|
-
const error = e;
|
|
243
|
-
const logMessage = `Failed to fetch account: ${error.message}`;
|
|
244
|
-
this.logger.error(logMessage);
|
|
245
|
-
throw new Error(logMessage);
|
|
246
214
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
215
|
+
logger.debug("Preparing to inscribe content with signer", {
|
|
216
|
+
type: input.type,
|
|
217
|
+
mode: options.mode || "file",
|
|
218
|
+
holderId: accountId
|
|
219
|
+
});
|
|
220
|
+
const result = await sdk.inscribe(
|
|
221
|
+
{
|
|
222
|
+
...request,
|
|
223
|
+
holderId: accountId
|
|
224
|
+
},
|
|
225
|
+
signer
|
|
226
|
+
);
|
|
227
|
+
logger.info("Inscription started", {
|
|
228
|
+
type: input.type,
|
|
229
|
+
mode: options.mode || "file",
|
|
230
|
+
transactionId: result.jobId
|
|
231
|
+
});
|
|
232
|
+
if (options.waitForConfirmation) {
|
|
233
|
+
logger.debug("Waiting for inscription confirmation", {
|
|
234
|
+
transactionId: result.jobId,
|
|
235
|
+
maxAttempts: options.waitMaxAttempts,
|
|
236
|
+
intervalMs: options.waitIntervalMs
|
|
237
|
+
});
|
|
238
|
+
const inscription = await waitForInscriptionConfirmation(
|
|
239
|
+
sdk,
|
|
240
|
+
result.jobId,
|
|
241
|
+
options.waitMaxAttempts,
|
|
242
|
+
options.waitIntervalMs,
|
|
243
|
+
options.progressCallback
|
|
244
|
+
);
|
|
245
|
+
logger.info("Inscription confirmation received", {
|
|
246
|
+
transactionId: result.jobId
|
|
247
|
+
});
|
|
248
|
+
return {
|
|
249
|
+
confirmed: true,
|
|
250
|
+
result,
|
|
251
|
+
inscription,
|
|
252
|
+
sdk
|
|
253
|
+
};
|
|
263
254
|
}
|
|
255
|
+
return {
|
|
256
|
+
confirmed: false,
|
|
257
|
+
result,
|
|
258
|
+
sdk
|
|
259
|
+
};
|
|
260
|
+
} catch (error) {
|
|
261
|
+
logger.error("Error during inscription process", error);
|
|
262
|
+
throw error;
|
|
264
263
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
if (
|
|
279
|
-
|
|
264
|
+
}
|
|
265
|
+
async function retrieveInscription(transactionId, options) {
|
|
266
|
+
const logger = Logger.getInstance({
|
|
267
|
+
module: "Inscriber",
|
|
268
|
+
...options?.logging || {}
|
|
269
|
+
});
|
|
270
|
+
const formattedTransactionId = transactionId.includes("@") ? `${transactionId.split("@")[0]}-${transactionId.split("@")[1].replace(/\./g, "-")}` : transactionId;
|
|
271
|
+
logger.info("Retrieving inscription", {
|
|
272
|
+
originalTransactionId: transactionId,
|
|
273
|
+
formattedTransactionId
|
|
274
|
+
});
|
|
275
|
+
try {
|
|
276
|
+
let sdk;
|
|
277
|
+
if (options?.apiKey) {
|
|
278
|
+
logger.debug("Initializing InscriptionSDK with API key");
|
|
279
|
+
sdk = new InscriptionSDK({
|
|
280
|
+
apiKey: options.apiKey,
|
|
281
|
+
network: options.network || "mainnet"
|
|
282
|
+
});
|
|
283
|
+
} else if (options?.accountId && options?.privateKey) {
|
|
284
|
+
logger.debug("Initializing InscriptionSDK with server auth");
|
|
285
|
+
sdk = await InscriptionSDK.createWithAuth({
|
|
286
|
+
type: "server",
|
|
287
|
+
accountId: options.accountId,
|
|
288
|
+
privateKey: options.privateKey,
|
|
289
|
+
network: options.network || "mainnet"
|
|
290
|
+
});
|
|
291
|
+
} else {
|
|
292
|
+
const error = new Error(
|
|
293
|
+
"Either API key or account ID and private key are required for retrieving inscriptions"
|
|
294
|
+
);
|
|
295
|
+
logger.error("Missing authentication credentials", {
|
|
296
|
+
hasApiKey: Boolean(options?.apiKey),
|
|
297
|
+
hasAccountId: Boolean(options?.accountId),
|
|
298
|
+
hasPrivateKey: Boolean(options?.privateKey)
|
|
299
|
+
});
|
|
300
|
+
throw error;
|
|
280
301
|
}
|
|
281
|
-
|
|
302
|
+
logger.debug("Initialized SDK for inscription retrieval", {
|
|
303
|
+
formattedTransactionId,
|
|
304
|
+
network: options.network || "mainnet"
|
|
305
|
+
});
|
|
306
|
+
const result = await sdk.retrieveInscription(formattedTransactionId);
|
|
307
|
+
logger.info("Successfully retrieved inscription", {
|
|
308
|
+
formattedTransactionId
|
|
309
|
+
});
|
|
310
|
+
return result;
|
|
311
|
+
} catch (error) {
|
|
312
|
+
logger.error("Error retrieving inscription", {
|
|
313
|
+
formattedTransactionId,
|
|
314
|
+
error
|
|
315
|
+
});
|
|
316
|
+
throw error;
|
|
282
317
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
if (listKey.ed25519) {
|
|
294
|
-
if (this.compareEd25519Key(listKey.ed25519, userPublicKey)) {
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
} else if (listKey.keyList || listKey.thresholdKey) {
|
|
298
|
-
try {
|
|
299
|
-
const nestedKeyBytes = proto.Key.encode({
|
|
300
|
-
...listKey.keyList ? { keyList: listKey.keyList } : {},
|
|
301
|
-
...listKey.thresholdKey ? { thresholdKey: listKey.thresholdKey } : {}
|
|
302
|
-
}).finish();
|
|
303
|
-
const hasNestedAccess = await this.checkKeyListAccess(
|
|
304
|
-
Buffer.from(nestedKeyBytes),
|
|
305
|
-
userPublicKey
|
|
306
|
-
);
|
|
307
|
-
if (hasNestedAccess) {
|
|
308
|
-
return true;
|
|
309
|
-
}
|
|
310
|
-
} catch (e) {
|
|
311
|
-
const error = e;
|
|
312
|
-
const logMessage = `Error in nested key: ${error.message}`;
|
|
313
|
-
this.logger.debug(logMessage);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
return false;
|
|
318
|
+
}
|
|
319
|
+
function validateHashinalMetadata(metadata, logger) {
|
|
320
|
+
const requiredFields = ["name", "creator", "description", "type"];
|
|
321
|
+
const missingFields = requiredFields.filter((field) => !metadata[field]);
|
|
322
|
+
if (missingFields.length > 0) {
|
|
323
|
+
const error = new Error(
|
|
324
|
+
`Missing required Hashinal metadata fields: ${missingFields.join(", ")}`
|
|
325
|
+
);
|
|
326
|
+
logger.error("Hashinal metadata validation failed", { missingFields });
|
|
327
|
+
throw error;
|
|
318
328
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
329
|
+
logger.debug("Hashinal metadata validation passed", {
|
|
330
|
+
name: metadata.name,
|
|
331
|
+
creator: metadata.creator,
|
|
332
|
+
description: metadata.description,
|
|
333
|
+
type: metadata.type,
|
|
334
|
+
hasAttributes: !!metadata.attributes,
|
|
335
|
+
hasProperties: !!metadata.properties
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
async function waitForInscriptionConfirmation(sdk, transactionId, maxAttempts = 30, intervalMs = 4e3, progressCallback) {
|
|
339
|
+
const logger = Logger.getInstance({ module: "Inscriber" });
|
|
340
|
+
const progressReporter = new ProgressReporter({
|
|
341
|
+
module: "Inscriber",
|
|
342
|
+
logger,
|
|
343
|
+
callback: progressCallback
|
|
344
|
+
});
|
|
345
|
+
try {
|
|
346
|
+
logger.debug("Waiting for inscription confirmation", {
|
|
347
|
+
transactionId,
|
|
348
|
+
maxAttempts,
|
|
349
|
+
intervalMs
|
|
350
|
+
});
|
|
351
|
+
progressReporter.preparing("Preparing for inscription confirmation", 5, {
|
|
352
|
+
transactionId,
|
|
353
|
+
maxAttempts,
|
|
354
|
+
intervalMs
|
|
355
|
+
});
|
|
326
356
|
try {
|
|
327
|
-
const
|
|
328
|
-
|
|
357
|
+
const waitMethod = sdk.waitForInscription.bind(sdk);
|
|
358
|
+
const wrappedCallback = (data) => {
|
|
359
|
+
const stage = data.stage || "confirming";
|
|
360
|
+
const message = data.message || "Processing inscription";
|
|
361
|
+
const percent = data.progressPercent || 50;
|
|
362
|
+
progressReporter.report({
|
|
363
|
+
stage,
|
|
364
|
+
message,
|
|
365
|
+
progressPercent: percent,
|
|
366
|
+
details: {}
|
|
367
|
+
});
|
|
368
|
+
};
|
|
369
|
+
return await waitMethod(
|
|
370
|
+
transactionId,
|
|
371
|
+
maxAttempts,
|
|
372
|
+
intervalMs,
|
|
373
|
+
true,
|
|
374
|
+
wrappedCallback
|
|
375
|
+
);
|
|
329
376
|
} catch (e) {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
377
|
+
console.log(e);
|
|
378
|
+
logger.debug("Falling back to standard waitForInscription method", {
|
|
379
|
+
error: e
|
|
380
|
+
});
|
|
381
|
+
progressReporter.verifying("Verifying inscription status", 50, {
|
|
382
|
+
error: e
|
|
383
|
+
});
|
|
384
|
+
return await sdk.waitForInscription(
|
|
385
|
+
transactionId,
|
|
386
|
+
maxAttempts,
|
|
387
|
+
intervalMs,
|
|
388
|
+
true
|
|
389
|
+
);
|
|
334
390
|
}
|
|
391
|
+
} catch (error) {
|
|
392
|
+
logger.error("Error waiting for inscription confirmation", {
|
|
393
|
+
transactionId,
|
|
394
|
+
maxAttempts,
|
|
395
|
+
intervalMs,
|
|
396
|
+
error
|
|
397
|
+
});
|
|
398
|
+
progressReporter.failed("Inscription confirmation failed", {
|
|
399
|
+
transactionId,
|
|
400
|
+
error
|
|
401
|
+
});
|
|
402
|
+
throw error;
|
|
335
403
|
}
|
|
336
404
|
}
|
|
337
405
|
export {
|
|
338
|
-
|
|
406
|
+
inscribe,
|
|
407
|
+
inscribeWithSigner,
|
|
408
|
+
retrieveInscription
|
|
339
409
|
};
|
|
340
410
|
//# sourceMappingURL=standards-sdk.es19.js.map
|