@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,410 +1,160 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { I as InscriptionSDK } from "./standards-sdk.es26.js";
|
|
1
|
+
import "./standards-sdk.es24.js";
|
|
3
2
|
import { Logger } from "./standards-sdk.es15.js";
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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);
|
|
20
|
-
}
|
|
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
|
-
});
|
|
39
|
-
}
|
|
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;
|
|
78
|
-
}
|
|
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
|
-
}
|
|
86
|
-
}
|
|
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
|
|
3
|
+
import axios from "./standards-sdk.es25.js";
|
|
4
|
+
class HRLResolver {
|
|
5
|
+
constructor(logLevel = "info") {
|
|
6
|
+
this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
|
|
7
|
+
this.logger = Logger.getInstance({
|
|
8
|
+
level: logLevel,
|
|
9
|
+
module: "HRLResolver"
|
|
97
10
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Determines if a MIME type represents binary content
|
|
14
|
+
*/
|
|
15
|
+
isBinaryContentType(mimeType) {
|
|
16
|
+
const binaryTypes = [
|
|
17
|
+
"image/",
|
|
18
|
+
"audio/",
|
|
19
|
+
"video/",
|
|
20
|
+
"application/octet-stream",
|
|
21
|
+
"application/pdf",
|
|
22
|
+
"application/zip",
|
|
23
|
+
"application/gzip",
|
|
24
|
+
"application/x-binary",
|
|
25
|
+
"application/vnd.ms-",
|
|
26
|
+
"application/x-msdownload",
|
|
27
|
+
"application/x-shockwave-flash",
|
|
28
|
+
"font/",
|
|
29
|
+
"application/wasm"
|
|
30
|
+
];
|
|
31
|
+
return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parses an HRL string into its components
|
|
35
|
+
*/
|
|
36
|
+
parseHRL(hrl) {
|
|
37
|
+
if (!hrl) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
|
|
41
|
+
const match = hrl.match(hrlPattern);
|
|
42
|
+
if (!match) {
|
|
43
|
+
return null;
|
|
120
44
|
}
|
|
121
45
|
return {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
sdk
|
|
46
|
+
standard: match[1],
|
|
47
|
+
topicId: match[2]
|
|
125
48
|
};
|
|
126
|
-
} catch (error) {
|
|
127
|
-
logger.error("Error during inscription process", error);
|
|
128
|
-
throw error;
|
|
129
49
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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);
|
|
50
|
+
/**
|
|
51
|
+
* Validates if a string is a valid HRL
|
|
52
|
+
*/
|
|
53
|
+
isValidHRL(hrl) {
|
|
54
|
+
if (!hrl || typeof hrl !== "string") {
|
|
55
|
+
return false;
|
|
146
56
|
}
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
});
|
|
57
|
+
const parsed = this.parseHRL(hrl);
|
|
58
|
+
if (!parsed) {
|
|
59
|
+
return false;
|
|
167
60
|
}
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
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
|
|
183
|
-
}
|
|
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;
|
|
61
|
+
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
62
|
+
if (!topicIdPattern.test(parsed.topicId)) {
|
|
63
|
+
return false;
|
|
206
64
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
async getContentWithType(hrl, options) {
|
|
68
|
+
if (!this.isValidHRL(hrl)) {
|
|
69
|
+
return {
|
|
70
|
+
content: hrl,
|
|
71
|
+
contentType: "text/plain",
|
|
72
|
+
isBinary: false
|
|
73
|
+
};
|
|
214
74
|
}
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
});
|
|
75
|
+
try {
|
|
76
|
+
const result = await this.resolveHRL(hrl, options);
|
|
248
77
|
return {
|
|
249
|
-
|
|
250
|
-
result,
|
|
251
|
-
|
|
252
|
-
sdk
|
|
78
|
+
content: result.content,
|
|
79
|
+
contentType: result.contentType,
|
|
80
|
+
isBinary: result.isBinary
|
|
253
81
|
};
|
|
82
|
+
} catch (e) {
|
|
83
|
+
const error = e;
|
|
84
|
+
const logMessage = `Error resolving HRL for content and type: ${error.message}`;
|
|
85
|
+
this.logger.error(logMessage);
|
|
86
|
+
throw new Error(logMessage);
|
|
254
87
|
}
|
|
255
|
-
return {
|
|
256
|
-
confirmed: false,
|
|
257
|
-
result,
|
|
258
|
-
sdk
|
|
259
|
-
};
|
|
260
|
-
} catch (error) {
|
|
261
|
-
logger.error("Error during inscription process", error);
|
|
262
|
-
throw error;
|
|
263
88
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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;
|
|
89
|
+
/**
|
|
90
|
+
* Resolves HRL content with proper content type detection
|
|
91
|
+
*/
|
|
92
|
+
async resolveHRL(hrl, options) {
|
|
93
|
+
const parsed = this.parseHRL(hrl);
|
|
94
|
+
if (!parsed) {
|
|
95
|
+
throw new Error(`Invalid HRL format: ${hrl}`);
|
|
301
96
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
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;
|
|
317
|
-
}
|
|
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(", ")}`
|
|
97
|
+
const { standard, topicId } = parsed;
|
|
98
|
+
this.logger.debug(
|
|
99
|
+
`Resolving HRL reference: standard=${standard}, topicId=${topicId}`
|
|
325
100
|
);
|
|
326
|
-
logger.error("Hashinal metadata validation failed", { missingFields });
|
|
327
|
-
throw error;
|
|
328
|
-
}
|
|
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
|
-
});
|
|
356
101
|
try {
|
|
357
|
-
const
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
102
|
+
const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
|
|
103
|
+
const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
|
|
104
|
+
this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
|
|
105
|
+
const headResponse = await axios.head(cdnUrl);
|
|
106
|
+
const contentType = headResponse.headers["content-type"] || "";
|
|
107
|
+
const isBinary = this.isBinaryContentType(contentType);
|
|
108
|
+
if (isBinary || options.returnRaw) {
|
|
109
|
+
const response2 = await axios.get(cdnUrl, {
|
|
110
|
+
responseType: "arraybuffer"
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
content: response2.data,
|
|
114
|
+
contentType,
|
|
115
|
+
topicId,
|
|
116
|
+
isBinary: true
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
if (contentType === "application/json") {
|
|
120
|
+
const response2 = await axios.get(cdnUrl, {
|
|
121
|
+
responseType: "json"
|
|
367
122
|
});
|
|
123
|
+
if (!response2.data) {
|
|
124
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
content: response2.data,
|
|
128
|
+
contentType,
|
|
129
|
+
topicId,
|
|
130
|
+
isBinary: false
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const response = await axios.get(cdnUrl);
|
|
134
|
+
if (!response.data) {
|
|
135
|
+
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
136
|
+
}
|
|
137
|
+
let content;
|
|
138
|
+
if (typeof response.data === "object") {
|
|
139
|
+
content = response.data.content || response.data.text || JSON.stringify(response.data);
|
|
140
|
+
} else {
|
|
141
|
+
content = response.data;
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
content,
|
|
145
|
+
contentType,
|
|
146
|
+
topicId,
|
|
147
|
+
isBinary: false
|
|
368
148
|
};
|
|
369
|
-
return await waitMethod(
|
|
370
|
-
transactionId,
|
|
371
|
-
maxAttempts,
|
|
372
|
-
intervalMs,
|
|
373
|
-
true,
|
|
374
|
-
wrappedCallback
|
|
375
|
-
);
|
|
376
149
|
} catch (e) {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
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
|
-
);
|
|
150
|
+
const error = e;
|
|
151
|
+
const logMessage = `Error resolving HRL reference: ${error.message}`;
|
|
152
|
+
this.logger.error(logMessage);
|
|
153
|
+
throw new Error(logMessage);
|
|
390
154
|
}
|
|
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;
|
|
403
155
|
}
|
|
404
156
|
}
|
|
405
157
|
export {
|
|
406
|
-
|
|
407
|
-
inscribeWithSigner,
|
|
408
|
-
retrieveInscription
|
|
158
|
+
HRLResolver
|
|
409
159
|
};
|
|
410
160
|
//# sourceMappingURL=standards-sdk.es18.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es18.js","sources":["../../src/inscribe/inscriber.ts"],"sourcesContent":["import { InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport {\n InscriptionOptions,\n InscriptionResult,\n RetrievedInscriptionResult,\n HederaClientConfig,\n} from './types';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { Logger } from '../utils/logger';\nimport { ProgressCallback, ProgressReporter } from '../utils/progress-reporter';\n\nexport type InscriptionInput =\n | { type: 'url'; url: string }\n | { type: 'file'; path: string }\n | {\n type: 'buffer';\n buffer: ArrayBuffer | Buffer;\n fileName: string;\n mimeType?: string;\n };\n\nexport type InscriptionResponse =\n | { confirmed: false; result: InscriptionResult; sdk: InscriptionSDK }\n | {\n confirmed: true;\n result: InscriptionResult;\n inscription: RetrievedInscriptionResult;\n sdk: InscriptionSDK;\n };\n\nexport async function inscribe(\n input: InscriptionInput,\n clientConfig: HederaClientConfig,\n options: InscriptionOptions,\n existingSDK?: InscriptionSDK\n): Promise<InscriptionResponse> {\n const logger = Logger.getInstance({\n module: 'Inscriber',\n ...options.logging,\n });\n\n logger.info('Starting inscription process', {\n type: input.type,\n mode: options.mode || 'file',\n ...(input.type === 'url' ? { url: input.url } : {}),\n ...(input.type === 'file' ? { path: input.path } : {}),\n ...(input.type === 'buffer'\n ? { fileName: input.fileName, bufferSize: input.buffer.byteLength }\n : {}),\n });\n\n try {\n if (options.mode === 'hashinal' && options.metadata) {\n validateHashinalMetadata(options.metadata, logger);\n }\n\n let sdk: InscriptionSDK;\n\n if (existingSDK) {\n logger.debug('Using existing InscriptionSDK instance');\n sdk = existingSDK;\n } else if (options.apiKey) {\n logger.debug('Initializing InscriptionSDK with API key');\n sdk = new InscriptionSDK({\n apiKey: options.apiKey,\n network: clientConfig.network || 'mainnet',\n });\n } else {\n logger.debug('Initializing InscriptionSDK with server auth');\n sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: clientConfig.accountId,\n privateKey: clientConfig.privateKey,\n network: clientConfig.network || 'mainnet',\n });\n }\n\n const baseRequest = {\n holderId: clientConfig.accountId,\n metadata: options.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n chunkSize: options.chunkSize,\n };\n\n let request: any;\n switch (input.type) {\n case 'url':\n request = {\n ...baseRequest,\n file: {\n type: 'url',\n url: input.url,\n },\n };\n break;\n\n case 'file':\n request = {\n ...baseRequest,\n file: {\n type: 'path',\n path: input.path,\n },\n };\n break;\n\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n request.metadataObject = options.metadata;\n request.creator = options.metadata?.creator || clientConfig.accountId;\n request.description = options.metadata?.description;\n\n if (options.jsonFileURL) {\n request.jsonFileURL = options.jsonFileURL;\n }\n }\n\n logger.debug('Preparing to inscribe content', {\n type: input.type,\n mode: options.mode || 'file',\n holderId: clientConfig.accountId,\n });\n\n const result = await sdk.inscribeAndExecute(request, clientConfig);\n logger.info('Starting to inscribe.', {\n type: input.type,\n mode: options.mode || 'file',\n transactionId: result.jobId,\n });\n\n if (options.waitForConfirmation) {\n logger.debug('Waiting for inscription confirmation', {\n transactionId: result.jobId,\n maxAttempts: options.waitMaxAttempts,\n intervalMs: options.waitIntervalMs,\n });\n\n const inscription = await waitForInscriptionConfirmation(\n sdk,\n result.jobId,\n options.waitMaxAttempts,\n options.waitIntervalMs,\n options.progressCallback\n );\n\n logger.info('Inscription confirmation received', {\n transactionId: result.jobId,\n });\n\n return {\n confirmed: true,\n result,\n inscription,\n sdk,\n };\n }\n\n return {\n confirmed: false,\n result,\n sdk,\n };\n } catch (error) {\n logger.error('Error during inscription process', error);\n throw error;\n }\n}\n\nexport async function inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions,\n existingSDK?: InscriptionSDK\n): Promise<InscriptionResponse> {\n const logger = Logger.getInstance({\n module: 'Inscriber',\n ...options.logging,\n });\n\n logger.info('Starting inscription process with signer', {\n type: input.type,\n mode: options.mode || 'file',\n ...(input.type === 'url' ? { url: input.url } : {}),\n ...(input.type === 'file' ? { path: input.path } : {}),\n ...(input.type === 'buffer'\n ? { fileName: input.fileName, bufferSize: input.buffer.byteLength }\n : {}),\n });\n\n try {\n if (options.mode === 'hashinal' && options.metadata) {\n validateHashinalMetadata(options.metadata, logger);\n }\n\n const accountId = signer.getAccountId().toString();\n logger.debug('Using account ID from signer', { accountId });\n\n let sdk: InscriptionSDK;\n\n if (existingSDK) {\n logger.debug('Using existing InscriptionSDK instance');\n sdk = existingSDK;\n } else if (options.apiKey) {\n logger.debug('Initializing InscriptionSDK with API key');\n sdk = new InscriptionSDK({\n apiKey: options.apiKey,\n network: options.network || 'mainnet',\n });\n } else {\n logger.debug('Initializing InscriptionSDK with client auth');\n sdk = await InscriptionSDK.createWithAuth({\n type: 'client',\n accountId,\n signer: signer,\n network: options.network || 'mainnet',\n });\n }\n\n const baseRequest = {\n holderId: accountId,\n metadata: options.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n chunkSize: options.chunkSize,\n };\n\n let request: any;\n switch (input.type) {\n case 'url':\n request = {\n ...baseRequest,\n file: {\n type: 'url',\n url: input.url,\n },\n };\n break;\n\n case 'file':\n request = {\n ...baseRequest,\n file: {\n type: 'path',\n path: input.path,\n },\n };\n break;\n\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n request.metadataObject = options.metadata;\n request.creator = options.metadata?.creator || accountId;\n request.description = options.metadata?.description;\n\n if (options.jsonFileURL) {\n request.jsonFileURL = options.jsonFileURL;\n }\n }\n\n logger.debug('Preparing to inscribe content with signer', {\n type: input.type,\n mode: options.mode || 'file',\n holderId: accountId,\n });\n\n const result = await sdk.inscribe(\n {\n ...request,\n holderId: accountId,\n },\n signer\n );\n logger.info('Inscription started', {\n type: input.type,\n mode: options.mode || 'file',\n transactionId: result.jobId,\n });\n\n if (options.waitForConfirmation) {\n logger.debug('Waiting for inscription confirmation', {\n transactionId: result.jobId,\n maxAttempts: options.waitMaxAttempts,\n intervalMs: options.waitIntervalMs,\n });\n\n const inscription = await waitForInscriptionConfirmation(\n sdk,\n result.jobId,\n options.waitMaxAttempts,\n options.waitIntervalMs,\n options.progressCallback\n );\n\n logger.info('Inscription confirmation received', {\n transactionId: result.jobId,\n });\n\n return {\n confirmed: true,\n result,\n inscription,\n sdk,\n };\n }\n\n return {\n confirmed: false,\n result,\n sdk,\n };\n } catch (error) {\n logger.error('Error during inscription process', error);\n throw error;\n }\n}\n\nexport async function retrieveInscription(\n transactionId: string,\n options: InscriptionOptions & { accountId?: string; privateKey?: string }\n): Promise<RetrievedInscriptionResult> {\n const logger = Logger.getInstance({\n module: 'Inscriber',\n ...options?.logging || {},\n });\n\n const formattedTransactionId = transactionId.includes('@')\n ? `${transactionId.split('@')[0]}-${transactionId\n .split('@')[1]\n .replace(/\\./g, '-')}`\n : transactionId;\n\n logger.info('Retrieving inscription', {\n originalTransactionId: transactionId,\n formattedTransactionId,\n });\n\n try {\n let sdk: InscriptionSDK;\n\n if (options?.apiKey) {\n logger.debug('Initializing InscriptionSDK with API key');\n sdk = new InscriptionSDK({\n apiKey: options.apiKey,\n network: options.network || 'mainnet',\n });\n } else if (options?.accountId && options?.privateKey) {\n logger.debug('Initializing InscriptionSDK with server auth');\n sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: options.accountId,\n privateKey: options.privateKey,\n network: options.network || 'mainnet',\n });\n } else {\n const error = new Error(\n 'Either API key or account ID and private key are required for retrieving inscriptions'\n );\n logger.error('Missing authentication credentials', {\n hasApiKey: Boolean(options?.apiKey),\n hasAccountId: Boolean(options?.accountId),\n hasPrivateKey: Boolean(options?.privateKey),\n });\n throw error;\n }\n\n logger.debug('Initialized SDK for inscription retrieval', {\n formattedTransactionId,\n network: options.network || 'mainnet',\n });\n\n const result = await sdk.retrieveInscription(formattedTransactionId);\n logger.info('Successfully retrieved inscription', {\n formattedTransactionId,\n });\n\n return result;\n } catch (error) {\n logger.error('Error retrieving inscription', {\n formattedTransactionId,\n error,\n });\n throw error;\n }\n}\n\nfunction validateHashinalMetadata(metadata: any, logger: any): void {\n const requiredFields = ['name', 'creator', 'description', 'type'];\n const missingFields = requiredFields.filter((field) => !metadata[field]);\n\n if (missingFields.length > 0) {\n const error = new Error(\n `Missing required Hashinal metadata fields: ${missingFields.join(', ')}`\n );\n logger.error('Hashinal metadata validation failed', { missingFields });\n throw error;\n }\n\n logger.debug('Hashinal metadata validation passed', {\n name: metadata.name,\n creator: metadata.creator,\n description: metadata.description,\n type: metadata.type,\n hasAttributes: !!metadata.attributes,\n hasProperties: !!metadata.properties,\n });\n}\n\nasync function waitForInscriptionConfirmation(\n sdk: InscriptionSDK,\n transactionId: string,\n maxAttempts: number = 30,\n intervalMs: number = 4000,\n progressCallback?: ProgressCallback\n): Promise<RetrievedInscriptionResult> {\n const logger = Logger.getInstance({ module: 'Inscriber' });\n const progressReporter = new ProgressReporter({\n module: 'Inscriber',\n logger,\n callback: progressCallback,\n });\n\n try {\n logger.debug('Waiting for inscription confirmation', {\n transactionId,\n maxAttempts,\n intervalMs,\n });\n\n progressReporter.preparing('Preparing for inscription confirmation', 5, {\n transactionId,\n maxAttempts,\n intervalMs,\n });\n\n try {\n const waitMethod = sdk.waitForInscription.bind(sdk) as (\n txId: string,\n maxAttempts: number,\n intervalMs: number,\n checkCompletion: boolean,\n progressCallback?: Function\n ) => Promise<RetrievedInscriptionResult>;\n\n const wrappedCallback = (data: any) => {\n const stage = data.stage || 'confirming';\n const message = data.message || 'Processing inscription';\n const percent = data.progressPercent || 50;\n\n progressReporter.report({\n stage: stage,\n message: message,\n progressPercent: percent,\n details: {},\n });\n };\n\n return await waitMethod(\n transactionId,\n maxAttempts,\n intervalMs,\n true,\n wrappedCallback\n );\n } catch (e) {\n console.log(e);\n // Fall back to standard method if progress callback fails\n logger.debug('Falling back to standard waitForInscription method', {\n error: e,\n });\n progressReporter.verifying('Verifying inscription status', 50, {\n error: e,\n });\n\n return await sdk.waitForInscription(\n transactionId,\n maxAttempts,\n intervalMs,\n true\n );\n }\n } catch (error) {\n logger.error('Error waiting for inscription confirmation', {\n transactionId,\n maxAttempts,\n intervalMs,\n error,\n });\n\n progressReporter.failed('Inscription confirmation failed', {\n transactionId,\n error,\n });\n\n throw error;\n }\n}\n"],"names":[],"mappings":";;;;AA8BA,eAAsB,SACpB,OACA,cACA,SACA,aAC8B;AACxB,QAAA,SAAS,OAAO,YAAY;AAAA,IAChC,QAAQ;AAAA,IACR,GAAG,QAAQ;AAAA,EAAA,CACZ;AAED,SAAO,KAAK,gCAAgC;AAAA,IAC1C,MAAM,MAAM;AAAA,IACZ,MAAM,QAAQ,QAAQ;AAAA,IACtB,GAAI,MAAM,SAAS,QAAQ,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC;AAAA,IACjD,GAAI,MAAM,SAAS,SAAS,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IACpD,GAAI,MAAM,SAAS,WACf,EAAE,UAAU,MAAM,UAAU,YAAY,MAAM,OAAO,WAAA,IACrD,CAAA;AAAA,EAAC,CACN;AAEG,MAAA;AACF,QAAI,QAAQ,SAAS,cAAc,QAAQ,UAAU;AAC1B,+BAAA,QAAQ,UAAU,MAAM;AAAA,IAAA;AAG/C,QAAA;AAEJ,QAAI,aAAa;AACf,aAAO,MAAM,wCAAwC;AAC/C,YAAA;AAAA,IAAA,WACG,QAAQ,QAAQ;AACzB,aAAO,MAAM,0CAA0C;AACvD,YAAM,IAAI,eAAe;AAAA,QACvB,QAAQ,QAAQ;AAAA,QAChB,SAAS,aAAa,WAAW;AAAA,MAAA,CAClC;AAAA,IAAA,OACI;AACL,aAAO,MAAM,8CAA8C;AACrD,YAAA,MAAM,eAAe,eAAe;AAAA,QACxC,MAAM;AAAA,QACN,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB,SAAS,aAAa,WAAW;AAAA,MAAA,CAClC;AAAA,IAAA;AAGH,UAAM,cAAc;AAAA,MAClB,UAAU,aAAa;AAAA,MACvB,UAAU,QAAQ,YAAY,CAAC;AAAA,MAC/B,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACvB,MAAM,QAAQ,QAAQ;AAAA,MACtB,WAAW,QAAQ;AAAA,IACrB;AAEI,QAAA;AACJ,YAAQ,MAAM,MAAM;AAAA,MAClB,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,KAAK,MAAM;AAAA,UAAA;AAAA,QAEf;AACA;AAAA,MAEF,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,MAAM,MAAM;AAAA,UAAA;AAAA,QAEhB;AACA;AAAA,MAEF,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,QAAQ,OAAO,KAAK,MAAM,MAAM,EAAE,SAAS,QAAQ;AAAA,YACnD,UAAU,MAAM;AAAA,YAChB,UAAU,MAAM;AAAA,UAAA;AAAA,QAEpB;AACA;AAAA,IAAA;AAGA,QAAA,QAAQ,SAAS,YAAY;AAC/B,cAAQ,iBAAiB,QAAQ;AACjC,cAAQ,UAAU,QAAQ,UAAU,WAAW,aAAa;AACpD,cAAA,cAAc,QAAQ,UAAU;AAExC,UAAI,QAAQ,aAAa;AACvB,gBAAQ,cAAc,QAAQ;AAAA,MAAA;AAAA,IAChC;AAGF,WAAO,MAAM,iCAAiC;AAAA,MAC5C,MAAM,MAAM;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,UAAU,aAAa;AAAA,IAAA,CACxB;AAED,UAAM,SAAS,MAAM,IAAI,mBAAmB,SAAS,YAAY;AACjE,WAAO,KAAK,yBAAyB;AAAA,MACnC,MAAM,MAAM;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,eAAe,OAAO;AAAA,IAAA,CACvB;AAED,QAAI,QAAQ,qBAAqB;AAC/B,aAAO,MAAM,wCAAwC;AAAA,QACnD,eAAe,OAAO;AAAA,QACtB,aAAa,QAAQ;AAAA,QACrB,YAAY,QAAQ;AAAA,MAAA,CACrB;AAED,YAAM,cAAc,MAAM;AAAA,QACxB;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAEA,aAAO,KAAK,qCAAqC;AAAA,QAC/C,eAAe,OAAO;AAAA,MAAA,CACvB;AAEM,aAAA;AAAA,QACL,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,WACO,OAAO;AACP,WAAA,MAAM,oCAAoC,KAAK;AAChD,UAAA;AAAA,EAAA;AAEV;AAEA,eAAsB,mBACpB,OACA,QACA,SACA,aAC8B;AACxB,QAAA,SAAS,OAAO,YAAY;AAAA,IAChC,QAAQ;AAAA,IACR,GAAG,QAAQ;AAAA,EAAA,CACZ;AAED,SAAO,KAAK,4CAA4C;AAAA,IACtD,MAAM,MAAM;AAAA,IACZ,MAAM,QAAQ,QAAQ;AAAA,IACtB,GAAI,MAAM,SAAS,QAAQ,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC;AAAA,IACjD,GAAI,MAAM,SAAS,SAAS,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IACpD,GAAI,MAAM,SAAS,WACf,EAAE,UAAU,MAAM,UAAU,YAAY,MAAM,OAAO,WAAA,IACrD,CAAA;AAAA,EAAC,CACN;AAEG,MAAA;AACF,QAAI,QAAQ,SAAS,cAAc,QAAQ,UAAU;AAC1B,+BAAA,QAAQ,UAAU,MAAM;AAAA,IAAA;AAGnD,UAAM,YAAY,OAAO,aAAa,EAAE,SAAS;AACjD,WAAO,MAAM,gCAAgC,EAAE,UAAA,CAAW;AAEtD,QAAA;AAEJ,QAAI,aAAa;AACf,aAAO,MAAM,wCAAwC;AAC/C,YAAA;AAAA,IAAA,WACG,QAAQ,QAAQ;AACzB,aAAO,MAAM,0CAA0C;AACvD,YAAM,IAAI,eAAe;AAAA,QACvB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ,WAAW;AAAA,MAAA,CAC7B;AAAA,IAAA,OACI;AACL,aAAO,MAAM,8CAA8C;AACrD,YAAA,MAAM,eAAe,eAAe;AAAA,QACxC,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,SAAS,QAAQ,WAAW;AAAA,MAAA,CAC7B;AAAA,IAAA;AAGH,UAAM,cAAc;AAAA,MAClB,UAAU;AAAA,MACV,UAAU,QAAQ,YAAY,CAAC;AAAA,MAC/B,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACvB,MAAM,QAAQ,QAAQ;AAAA,MACtB,WAAW,QAAQ;AAAA,IACrB;AAEI,QAAA;AACJ,YAAQ,MAAM,MAAM;AAAA,MAClB,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,KAAK,MAAM;AAAA,UAAA;AAAA,QAEf;AACA;AAAA,MAEF,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,MAAM,MAAM;AAAA,UAAA;AAAA,QAEhB;AACA;AAAA,MAEF,KAAK;AACO,kBAAA;AAAA,UACR,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,QAAQ,OAAO,KAAK,MAAM,MAAM,EAAE,SAAS,QAAQ;AAAA,YACnD,UAAU,MAAM;AAAA,YAChB,UAAU,MAAM;AAAA,UAAA;AAAA,QAEpB;AACA;AAAA,IAAA;AAGA,QAAA,QAAQ,SAAS,YAAY;AAC/B,cAAQ,iBAAiB,QAAQ;AACzB,cAAA,UAAU,QAAQ,UAAU,WAAW;AACvC,cAAA,cAAc,QAAQ,UAAU;AAExC,UAAI,QAAQ,aAAa;AACvB,gBAAQ,cAAc,QAAQ;AAAA,MAAA;AAAA,IAChC;AAGF,WAAO,MAAM,6CAA6C;AAAA,MACxD,MAAM,MAAM;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,UAAU;AAAA,IAAA,CACX;AAEK,UAAA,SAAS,MAAM,IAAI;AAAA,MACvB;AAAA,QACE,GAAG;AAAA,QACH,UAAU;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AACA,WAAO,KAAK,uBAAuB;AAAA,MACjC,MAAM,MAAM;AAAA,MACZ,MAAM,QAAQ,QAAQ;AAAA,MACtB,eAAe,OAAO;AAAA,IAAA,CACvB;AAED,QAAI,QAAQ,qBAAqB;AAC/B,aAAO,MAAM,wCAAwC;AAAA,QACnD,eAAe,OAAO;AAAA,QACtB,aAAa,QAAQ;AAAA,QACrB,YAAY,QAAQ;AAAA,MAAA,CACrB;AAED,YAAM,cAAc,MAAM;AAAA,QACxB;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAEA,aAAO,KAAK,qCAAqC;AAAA,QAC/C,eAAe,OAAO;AAAA,MAAA,CACvB;AAEM,aAAA;AAAA,QACL,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAGK,WAAA;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,WACO,OAAO;AACP,WAAA,MAAM,oCAAoC,KAAK;AAChD,UAAA;AAAA,EAAA;AAEV;AAEsB,eAAA,oBACpB,eACA,SACqC;AAC/B,QAAA,SAAS,OAAO,YAAY;AAAA,IAChC,QAAQ;AAAA,IACR,GAAG,SAAS,WAAW,CAAA;AAAA,EAAC,CACzB;AAEK,QAAA,yBAAyB,cAAc,SAAS,GAAG,IACrD,GAAG,cAAc,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,cAC/B,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,OAAO,GAAG,CAAC,KACtB;AAEJ,SAAO,KAAK,0BAA0B;AAAA,IACpC,uBAAuB;AAAA,IACvB;AAAA,EAAA,CACD;AAEG,MAAA;AACE,QAAA;AAEJ,QAAI,SAAS,QAAQ;AACnB,aAAO,MAAM,0CAA0C;AACvD,YAAM,IAAI,eAAe;AAAA,QACvB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ,WAAW;AAAA,MAAA,CAC7B;AAAA,IACQ,WAAA,SAAS,aAAa,SAAS,YAAY;AACpD,aAAO,MAAM,8CAA8C;AACrD,YAAA,MAAM,eAAe,eAAe;AAAA,QACxC,MAAM;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,SAAS,QAAQ,WAAW;AAAA,MAAA,CAC7B;AAAA,IAAA,OACI;AACL,YAAM,QAAQ,IAAI;AAAA,QAChB;AAAA,MACF;AACA,aAAO,MAAM,sCAAsC;AAAA,QACjD,WAAW,QAAQ,SAAS,MAAM;AAAA,QAClC,cAAc,QAAQ,SAAS,SAAS;AAAA,QACxC,eAAe,QAAQ,SAAS,UAAU;AAAA,MAAA,CAC3C;AACK,YAAA;AAAA,IAAA;AAGR,WAAO,MAAM,6CAA6C;AAAA,MACxD;AAAA,MACA,SAAS,QAAQ,WAAW;AAAA,IAAA,CAC7B;AAED,UAAM,SAAS,MAAM,IAAI,oBAAoB,sBAAsB;AACnE,WAAO,KAAK,sCAAsC;AAAA,MAChD;AAAA,IAAA,CACD;AAEM,WAAA;AAAA,WACA,OAAO;AACd,WAAO,MAAM,gCAAgC;AAAA,MAC3C;AAAA,MACA;AAAA,IAAA,CACD;AACK,UAAA;AAAA,EAAA;AAEV;AAEA,SAAS,yBAAyB,UAAe,QAAmB;AAClE,QAAM,iBAAiB,CAAC,QAAQ,WAAW,eAAe,MAAM;AAC1D,QAAA,gBAAgB,eAAe,OAAO,CAAC,UAAU,CAAC,SAAS,KAAK,CAAC;AAEnE,MAAA,cAAc,SAAS,GAAG;AAC5B,UAAM,QAAQ,IAAI;AAAA,MAChB,8CAA8C,cAAc,KAAK,IAAI,CAAC;AAAA,IACxE;AACA,WAAO,MAAM,uCAAuC,EAAE,cAAA,CAAe;AAC/D,UAAA;AAAA,EAAA;AAGR,SAAO,MAAM,uCAAuC;AAAA,IAClD,MAAM,SAAS;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,aAAa,SAAS;AAAA,IACtB,MAAM,SAAS;AAAA,IACf,eAAe,CAAC,CAAC,SAAS;AAAA,IAC1B,eAAe,CAAC,CAAC,SAAS;AAAA,EAAA,CAC3B;AACH;AAEA,eAAe,+BACb,KACA,eACA,cAAsB,IACtB,aAAqB,KACrB,kBACqC;AACrC,QAAM,SAAS,OAAO,YAAY,EAAE,QAAQ,aAAa;AACnD,QAAA,mBAAmB,IAAI,iBAAiB;AAAA,IAC5C,QAAQ;AAAA,IACR;AAAA,IACA,UAAU;AAAA,EAAA,CACX;AAEG,MAAA;AACF,WAAO,MAAM,wCAAwC;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAEgB,qBAAA,UAAU,0CAA0C,GAAG;AAAA,MACtE;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAEG,QAAA;AACF,YAAM,aAAa,IAAI,mBAAmB,KAAK,GAAG;AAQ5C,YAAA,kBAAkB,CAAC,SAAc;AAC/B,cAAA,QAAQ,KAAK,SAAS;AACtB,cAAA,UAAU,KAAK,WAAW;AAC1B,cAAA,UAAU,KAAK,mBAAmB;AAExC,yBAAiB,OAAO;AAAA,UACtB;AAAA,UACA;AAAA,UACA,iBAAiB;AAAA,UACjB,SAAS,CAAA;AAAA,QAAC,CACX;AAAA,MACH;AAEA,aAAO,MAAM;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,aACO,GAAG;AACV,cAAQ,IAAI,CAAC;AAEb,aAAO,MAAM,sDAAsD;AAAA,QACjE,OAAO;AAAA,MAAA,CACR;AACgB,uBAAA,UAAU,gCAAgC,IAAI;AAAA,QAC7D,OAAO;AAAA,MAAA,CACR;AAED,aAAO,MAAM,IAAI;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAAA,WAEK,OAAO;AACd,WAAO,MAAM,8CAA8C;AAAA,MACzD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAED,qBAAiB,OAAO,mCAAmC;AAAA,MACzD;AAAA,MACA;AAAA,IAAA,CACD;AAEK,UAAA;AAAA,EAAA;AAEV;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es18.js","sources":["../../src/utils/hrl-resolver.ts"],"sourcesContent":["import axios from 'axios';\nimport { Logger, LogLevel } from './logger';\nimport { NetworkType } from './types';\n\n/**\n * Options for HRL resolution\n */\nexport interface HRLResolutionOptions {\n network: NetworkType;\n returnRaw?: boolean;\n cdnEndpoint?: string;\n}\n\n/**\n * Result of an HRL resolution operation\n */\nexport interface HRLResolutionResult {\n content: string | ArrayBuffer;\n contentType: string;\n topicId: string;\n isBinary: boolean;\n}\n\nexport interface ContentWithType {\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n}\n\n/**\n * Utility class for resolving Hedera Resource Locators across the SDK\n */\nexport class HRLResolver {\n private logger: Logger;\n private defaultEndpoint = 'https://kiloscribe.com/api/inscription-cdn';\n\n constructor(logLevel: LogLevel = 'info') {\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HRLResolver',\n });\n }\n\n /**\n * Determines if a MIME type represents binary content\n */\n private isBinaryContentType(mimeType: string): boolean {\n const binaryTypes = [\n 'image/',\n 'audio/',\n 'video/',\n 'application/octet-stream',\n 'application/pdf',\n 'application/zip',\n 'application/gzip',\n 'application/x-binary',\n 'application/vnd.ms-',\n 'application/x-msdownload',\n 'application/x-shockwave-flash',\n 'font/',\n 'application/wasm',\n ];\n\n return binaryTypes.some((prefix) => mimeType.startsWith(prefix));\n }\n\n /**\n * Parses an HRL string into its components\n */\n public parseHRL(hrl: string): { standard: string; topicId: string } | null {\n if (!hrl) {\n return null;\n }\n\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/;\n const match = hrl.match(hrlPattern);\n\n if (!match) {\n return null;\n }\n\n return {\n standard: match[1],\n topicId: match[2],\n };\n }\n\n /**\n * Validates if a string is a valid HRL\n */\n public isValidHRL(hrl: string): boolean {\n if (!hrl || typeof hrl !== 'string') {\n return false;\n }\n\n const parsed = this.parseHRL(hrl);\n if (!parsed) {\n return false;\n }\n\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n if (!topicIdPattern.test(parsed.topicId)) {\n return false;\n }\n\n return true;\n }\n\n public async getContentWithType(\n hrl: string,\n options: HRLResolutionOptions\n ): Promise<ContentWithType> {\n if (!this.isValidHRL(hrl)) {\n return {\n content: hrl,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const result = await this.resolveHRL(hrl, options);\n return {\n content: result.content,\n contentType: result.contentType,\n isBinary: result.isBinary,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL for content and type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Resolves HRL content with proper content type detection\n */\n public async resolveHRL(\n hrl: string,\n options: HRLResolutionOptions\n ): Promise<HRLResolutionResult> {\n const parsed = this.parseHRL(hrl);\n\n if (!parsed) {\n throw new Error(`Invalid HRL format: ${hrl}`);\n }\n\n const { standard, topicId } = parsed;\n\n this.logger.debug(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`\n );\n\n try {\n const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;\n const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;\n\n this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);\n const headResponse = await axios.head(cdnUrl);\n const contentType = headResponse.headers['content-type'] || '';\n const isBinary = this.isBinaryContentType(contentType);\n\n if (isBinary || options.returnRaw) {\n const response = await axios.get(cdnUrl, {\n responseType: 'arraybuffer',\n });\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: true,\n };\n }\n\n if (contentType === 'application/json') {\n const response = await axios.get(cdnUrl, {\n responseType: 'json',\n });\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: false,\n };\n }\n\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n let content: string;\n\n if (typeof response.data === 'object') {\n content =\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data);\n } else {\n content = response.data;\n }\n\n return {\n content,\n contentType,\n topicId,\n isBinary: false,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n}\n"],"names":["response"],"mappings":"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"}
|