@hashgraphonline/standards-sdk 0.1.144 → 0.1.145

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.
Files changed (423) hide show
  1. package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
  2. package/dist/cjs/hcs-10/sdk.d.ts +8 -0
  3. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  4. package/dist/cjs/hcs-11/client.d.ts +2 -2
  5. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  6. package/dist/cjs/hcs-11/person-builder.d.ts +1 -0
  7. package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -1
  8. package/dist/cjs/hcs-11/types.d.ts +1 -0
  9. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  10. package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  11. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  12. package/dist/cjs/hcs-15/browser.d.ts +2 -0
  13. package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
  14. package/dist/cjs/hcs-15/sdk.d.ts +7 -1
  15. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  16. package/dist/cjs/hcs-15/tx.d.ts +4 -0
  17. package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
  18. package/dist/cjs/hcs-15/types.d.ts +16 -1
  19. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  20. package/dist/cjs/hcs-16/browser.d.ts +11 -2
  21. package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
  22. package/dist/cjs/hcs-16/sdk.d.ts +62 -1
  23. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  24. package/dist/cjs/hcs-16/tx.d.ts +21 -3
  25. package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
  26. package/dist/cjs/hcs-17/base-client.d.ts +1 -0
  27. package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
  28. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  29. package/dist/cjs/hcs-17/tx.d.ts +2 -0
  30. package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
  31. package/dist/cjs/hcs-17/types.d.ts +4 -0
  32. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  33. package/dist/cjs/index.d.ts.map +1 -1
  34. package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
  35. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  36. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  37. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  38. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  39. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  40. package/dist/cjs/services/registry-broker/schemas.d.ts +998 -577
  41. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  42. package/dist/cjs/services/registry-broker/types.d.ts +20 -1
  43. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  44. package/dist/cjs/standards-sdk.cjs +2 -2
  45. package/dist/cjs/standards-sdk.cjs.map +1 -1
  46. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  47. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  48. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  49. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  50. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  51. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  52. package/dist/es/hcs-10/sdk.d.ts +8 -0
  53. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  54. package/dist/es/hcs-11/client.d.ts +2 -2
  55. package/dist/es/hcs-11/client.d.ts.map +1 -1
  56. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  57. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  58. package/dist/es/hcs-11/types.d.ts +1 -0
  59. package/dist/es/hcs-11/types.d.ts.map +1 -1
  60. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  61. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  62. package/dist/es/hcs-15/browser.d.ts +2 -0
  63. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  64. package/dist/es/hcs-15/sdk.d.ts +7 -1
  65. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  66. package/dist/es/hcs-15/tx.d.ts +4 -0
  67. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  68. package/dist/es/hcs-15/types.d.ts +16 -1
  69. package/dist/es/hcs-15/types.d.ts.map +1 -1
  70. package/dist/es/hcs-16/browser.d.ts +11 -2
  71. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  72. package/dist/es/hcs-16/sdk.d.ts +62 -1
  73. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  74. package/dist/es/hcs-16/tx.d.ts +21 -3
  75. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  76. package/dist/es/hcs-17/base-client.d.ts +1 -0
  77. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  78. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  79. package/dist/es/hcs-17/tx.d.ts +2 -0
  80. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  81. package/dist/es/hcs-17/types.d.ts +4 -0
  82. package/dist/es/hcs-17/types.d.ts.map +1 -1
  83. package/dist/es/index.d.ts.map +1 -1
  84. package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
  85. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  86. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  87. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  88. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  89. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  90. package/dist/es/services/registry-broker/schemas.d.ts +998 -577
  91. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  92. package/dist/es/services/registry-broker/types.d.ts +20 -1
  93. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  94. package/dist/es/standards-sdk.es.js +141 -135
  95. package/dist/es/standards-sdk.es.js.map +1 -1
  96. package/dist/es/standards-sdk.es10.js +70 -90
  97. package/dist/es/standards-sdk.es10.js.map +1 -1
  98. package/dist/es/standards-sdk.es100.js +229 -26
  99. package/dist/es/standards-sdk.es100.js.map +1 -1
  100. package/dist/es/standards-sdk.es101.js +109 -228
  101. package/dist/es/standards-sdk.es101.js.map +1 -1
  102. package/dist/es/standards-sdk.es102.js +15 -94
  103. package/dist/es/standards-sdk.es102.js.map +1 -1
  104. package/dist/es/standards-sdk.es103.js +80 -30
  105. package/dist/es/standards-sdk.es103.js.map +1 -1
  106. package/dist/es/standards-sdk.es104.js +27 -80
  107. package/dist/es/standards-sdk.es104.js.map +1 -1
  108. package/dist/es/standards-sdk.es105.js +136 -25
  109. package/dist/es/standards-sdk.es105.js.map +1 -1
  110. package/dist/es/standards-sdk.es106.js +27 -140
  111. package/dist/es/standards-sdk.es106.js.map +1 -1
  112. package/dist/es/standards-sdk.es107.js +20 -27
  113. package/dist/es/standards-sdk.es107.js.map +1 -1
  114. package/dist/es/standards-sdk.es108.js +156 -18
  115. package/dist/es/standards-sdk.es108.js.map +1 -1
  116. package/dist/es/standards-sdk.es109.js +198 -148
  117. package/dist/es/standards-sdk.es109.js.map +1 -1
  118. package/dist/es/standards-sdk.es11.js +121 -45
  119. package/dist/es/standards-sdk.es11.js.map +1 -1
  120. package/dist/es/standards-sdk.es110.js +747 -166
  121. package/dist/es/standards-sdk.es110.js.map +1 -1
  122. package/dist/es/standards-sdk.es111.js +9 -786
  123. package/dist/es/standards-sdk.es111.js.map +1 -1
  124. package/dist/es/standards-sdk.es112.js +567 -13
  125. package/dist/es/standards-sdk.es112.js.map +1 -1
  126. package/dist/es/standards-sdk.es113.js +576 -541
  127. package/dist/es/standards-sdk.es113.js.map +1 -1
  128. package/dist/es/standards-sdk.es114.js +12 -601
  129. package/dist/es/standards-sdk.es114.js.map +1 -1
  130. package/dist/es/standards-sdk.es115.js +2 -13
  131. package/dist/es/standards-sdk.es115.js.map +1 -1
  132. package/dist/es/standards-sdk.es116.js +87 -2
  133. package/dist/es/standards-sdk.es116.js.map +1 -1
  134. package/dist/es/standards-sdk.es117.js +37 -80
  135. package/dist/es/standards-sdk.es117.js.map +1 -1
  136. package/dist/es/standards-sdk.es118.js +2 -39
  137. package/dist/es/standards-sdk.es118.js.map +1 -1
  138. package/dist/es/standards-sdk.es119.js +231 -2
  139. package/dist/es/standards-sdk.es119.js.map +1 -1
  140. package/dist/es/standards-sdk.es12.js +60 -159
  141. package/dist/es/standards-sdk.es12.js.map +1 -1
  142. package/dist/es/standards-sdk.es120.js +1110 -193
  143. package/dist/es/standards-sdk.es120.js.map +1 -1
  144. package/dist/es/standards-sdk.es121.js +225 -1059
  145. package/dist/es/standards-sdk.es121.js.map +1 -1
  146. package/dist/es/standards-sdk.es122.js +419 -303
  147. package/dist/es/standards-sdk.es122.js.map +1 -1
  148. package/dist/es/standards-sdk.es123.js +351 -418
  149. package/dist/es/standards-sdk.es123.js.map +1 -1
  150. package/dist/es/standards-sdk.es124.js +872 -347
  151. package/dist/es/standards-sdk.es124.js.map +1 -1
  152. package/dist/es/standards-sdk.es125.js +182 -854
  153. package/dist/es/standards-sdk.es125.js.map +1 -1
  154. package/dist/es/standards-sdk.es126.js +1512 -153
  155. package/dist/es/standards-sdk.es126.js.map +1 -1
  156. package/dist/es/standards-sdk.es127.js +157 -1547
  157. package/dist/es/standards-sdk.es127.js.map +1 -1
  158. package/dist/es/standards-sdk.es128.js +192 -162
  159. package/dist/es/standards-sdk.es128.js.map +1 -1
  160. package/dist/es/standards-sdk.es129.js +61 -164
  161. package/dist/es/standards-sdk.es129.js.map +1 -1
  162. package/dist/es/standards-sdk.es13.js +200 -60
  163. package/dist/es/standards-sdk.es13.js.map +1 -1
  164. package/dist/es/standards-sdk.es130.js +102 -85
  165. package/dist/es/standards-sdk.es130.js.map +1 -1
  166. package/dist/es/standards-sdk.es131.js +222 -96
  167. package/dist/es/standards-sdk.es131.js.map +1 -1
  168. package/dist/es/standards-sdk.es132.js +153 -220
  169. package/dist/es/standards-sdk.es132.js.map +1 -1
  170. package/dist/es/standards-sdk.es133.js +104 -162
  171. package/dist/es/standards-sdk.es133.js.map +1 -1
  172. package/dist/es/standards-sdk.es134.js +296 -92
  173. package/dist/es/standards-sdk.es134.js.map +1 -1
  174. package/dist/es/standards-sdk.es135.js +432 -294
  175. package/dist/es/standards-sdk.es135.js.map +1 -1
  176. package/dist/es/standards-sdk.es136.js +14 -363
  177. package/dist/es/standards-sdk.es136.js.map +1 -1
  178. package/dist/es/standards-sdk.es137.js +79 -15
  179. package/dist/es/standards-sdk.es137.js.map +1 -1
  180. package/dist/es/standards-sdk.es138.js +79 -59
  181. package/dist/es/standards-sdk.es138.js.map +1 -1
  182. package/dist/es/standards-sdk.es139.js +152 -80
  183. package/dist/es/standards-sdk.es139.js.map +1 -1
  184. package/dist/es/standards-sdk.es14.js +149 -178
  185. package/dist/es/standards-sdk.es14.js.map +1 -1
  186. package/dist/es/standards-sdk.es140.js +7 -159
  187. package/dist/es/standards-sdk.es140.js.map +1 -1
  188. package/dist/es/standards-sdk.es141.js +86 -7
  189. package/dist/es/standards-sdk.es141.js.map +1 -1
  190. package/dist/es/standards-sdk.es142.js +44 -65
  191. package/dist/es/standards-sdk.es142.js.map +1 -1
  192. package/dist/es/standards-sdk.es143.js +30 -65
  193. package/dist/es/standards-sdk.es143.js.map +1 -1
  194. package/dist/es/standards-sdk.es144.js +34 -28
  195. package/dist/es/standards-sdk.es144.js.map +1 -1
  196. package/dist/es/standards-sdk.es145.js +28 -138
  197. package/dist/es/standards-sdk.es145.js.map +1 -1
  198. package/dist/es/standards-sdk.es146.js +133 -37
  199. package/dist/es/standards-sdk.es146.js.map +1 -1
  200. package/dist/es/standards-sdk.es147.js +34 -12281
  201. package/dist/es/standards-sdk.es147.js.map +1 -1
  202. package/dist/es/standards-sdk.es148.js +12284 -12
  203. package/dist/es/standards-sdk.es148.js.map +1 -1
  204. package/dist/es/standards-sdk.es149.js +958 -56
  205. package/dist/es/standards-sdk.es149.js.map +1 -1
  206. package/dist/es/standards-sdk.es15.js +152 -151
  207. package/dist/es/standards-sdk.es15.js.map +1 -1
  208. package/dist/es/standards-sdk.es150.js +48 -74
  209. package/dist/es/standards-sdk.es150.js.map +1 -1
  210. package/dist/es/standards-sdk.es151.js +72 -160
  211. package/dist/es/standards-sdk.es151.js.map +1 -1
  212. package/dist/es/standards-sdk.es152.js +13 -318
  213. package/dist/es/standards-sdk.es152.js.map +1 -1
  214. package/dist/es/standards-sdk.es153.js +120 -294
  215. package/dist/es/standards-sdk.es153.js.map +1 -1
  216. package/dist/es/standards-sdk.es154.js +191 -322
  217. package/dist/es/standards-sdk.es154.js.map +1 -1
  218. package/dist/es/standards-sdk.es155.js +294 -279
  219. package/dist/es/standards-sdk.es155.js.map +1 -1
  220. package/dist/es/standards-sdk.es156.js +440 -63
  221. package/dist/es/standards-sdk.es156.js.map +1 -1
  222. package/dist/es/standards-sdk.es157.js +331 -871
  223. package/dist/es/standards-sdk.es157.js.map +1 -1
  224. package/dist/es/standards-sdk.es158.js +68 -231
  225. package/dist/es/standards-sdk.es158.js.map +1 -1
  226. package/dist/es/standards-sdk.es159.js +218 -223
  227. package/dist/es/standards-sdk.es159.js.map +1 -1
  228. package/dist/es/standards-sdk.es16.js +917 -136
  229. package/dist/es/standards-sdk.es16.js.map +1 -1
  230. package/dist/es/standards-sdk.es160.js +247 -0
  231. package/dist/es/standards-sdk.es160.js.map +1 -0
  232. package/dist/es/standards-sdk.es17.js +23 -944
  233. package/dist/es/standards-sdk.es17.js.map +1 -1
  234. package/dist/es/standards-sdk.es18.js +2422 -24
  235. package/dist/es/standards-sdk.es18.js.map +1 -1
  236. package/dist/es/standards-sdk.es19.js +817 -2071
  237. package/dist/es/standards-sdk.es19.js.map +1 -1
  238. package/dist/es/standards-sdk.es2.js +654 -189
  239. package/dist/es/standards-sdk.es2.js.map +1 -1
  240. package/dist/es/standards-sdk.es20.js +205 -1091
  241. package/dist/es/standards-sdk.es20.js.map +1 -1
  242. package/dist/es/standards-sdk.es21.js +858 -221
  243. package/dist/es/standards-sdk.es21.js.map +1 -1
  244. package/dist/es/standards-sdk.es22.js +179 -903
  245. package/dist/es/standards-sdk.es22.js.map +1 -1
  246. package/dist/es/standards-sdk.es23.js +164 -179
  247. package/dist/es/standards-sdk.es23.js.map +1 -1
  248. package/dist/es/standards-sdk.es24.js +62 -118
  249. package/dist/es/standards-sdk.es24.js.map +1 -1
  250. package/dist/es/standards-sdk.es25.js +377 -52
  251. package/dist/es/standards-sdk.es25.js.map +1 -1
  252. package/dist/es/standards-sdk.es26.js +36 -394
  253. package/dist/es/standards-sdk.es26.js.map +1 -1
  254. package/dist/es/standards-sdk.es27.js +901 -50
  255. package/dist/es/standards-sdk.es27.js.map +1 -1
  256. package/dist/es/standards-sdk.es28.js +134 -902
  257. package/dist/es/standards-sdk.es28.js.map +1 -1
  258. package/dist/es/standards-sdk.es29.js +7 -134
  259. package/dist/es/standards-sdk.es29.js.map +1 -1
  260. package/dist/es/standards-sdk.es3.js +63 -680
  261. package/dist/es/standards-sdk.es3.js.map +1 -1
  262. package/dist/es/standards-sdk.es30.js +344 -7
  263. package/dist/es/standards-sdk.es30.js.map +1 -1
  264. package/dist/es/standards-sdk.es31.js +302 -287
  265. package/dist/es/standards-sdk.es31.js.map +1 -1
  266. package/dist/es/standards-sdk.es32.js +94 -322
  267. package/dist/es/standards-sdk.es32.js.map +1 -1
  268. package/dist/es/standards-sdk.es33.js +458 -101
  269. package/dist/es/standards-sdk.es33.js.map +1 -1
  270. package/dist/es/standards-sdk.es34.js +132 -451
  271. package/dist/es/standards-sdk.es34.js.map +1 -1
  272. package/dist/es/standards-sdk.es35.js +216 -130
  273. package/dist/es/standards-sdk.es35.js.map +1 -1
  274. package/dist/es/standards-sdk.es36.js +273 -195
  275. package/dist/es/standards-sdk.es36.js.map +1 -1
  276. package/dist/es/standards-sdk.es37.js +148 -87
  277. package/dist/es/standards-sdk.es37.js.map +1 -1
  278. package/dist/es/standards-sdk.es38.js +183 -320
  279. package/dist/es/standards-sdk.es38.js.map +1 -1
  280. package/dist/es/standards-sdk.es39.js +238 -161
  281. package/dist/es/standards-sdk.es39.js.map +1 -1
  282. package/dist/es/standards-sdk.es4.js +425 -63
  283. package/dist/es/standards-sdk.es4.js.map +1 -1
  284. package/dist/es/standards-sdk.es40.js +136 -254
  285. package/dist/es/standards-sdk.es40.js.map +1 -1
  286. package/dist/es/standards-sdk.es41.js +225 -176
  287. package/dist/es/standards-sdk.es41.js.map +1 -1
  288. package/dist/es/standards-sdk.es42.js +199 -261
  289. package/dist/es/standards-sdk.es42.js.map +1 -1
  290. package/dist/es/standards-sdk.es43.js +237 -199
  291. package/dist/es/standards-sdk.es43.js.map +1 -1
  292. package/dist/es/standards-sdk.es44.js +209 -201
  293. package/dist/es/standards-sdk.es44.js.map +1 -1
  294. package/dist/es/standards-sdk.es45.js +305 -201
  295. package/dist/es/standards-sdk.es45.js.map +1 -1
  296. package/dist/es/standards-sdk.es46.js +371 -261
  297. package/dist/es/standards-sdk.es46.js.map +1 -1
  298. package/dist/es/standards-sdk.es47.js +316 -371
  299. package/dist/es/standards-sdk.es47.js.map +1 -1
  300. package/dist/es/standards-sdk.es48.js +404 -336
  301. package/dist/es/standards-sdk.es48.js.map +1 -1
  302. package/dist/es/standards-sdk.es49.js +83 -449
  303. package/dist/es/standards-sdk.es49.js.map +1 -1
  304. package/dist/es/standards-sdk.es5.js +232 -354
  305. package/dist/es/standards-sdk.es5.js.map +1 -1
  306. package/dist/es/standards-sdk.es50.js +179 -89
  307. package/dist/es/standards-sdk.es50.js.map +1 -1
  308. package/dist/es/standards-sdk.es51.js +231 -165
  309. package/dist/es/standards-sdk.es51.js.map +1 -1
  310. package/dist/es/standards-sdk.es52.js +25 -262
  311. package/dist/es/standards-sdk.es52.js.map +1 -1
  312. package/dist/es/standards-sdk.es53.js +56 -26
  313. package/dist/es/standards-sdk.es53.js.map +1 -1
  314. package/dist/es/standards-sdk.es54.js +12 -57
  315. package/dist/es/standards-sdk.es54.js.map +1 -1
  316. package/dist/es/standards-sdk.es55.js +49 -12
  317. package/dist/es/standards-sdk.es55.js.map +1 -1
  318. package/dist/es/standards-sdk.es56.js +115 -43
  319. package/dist/es/standards-sdk.es56.js.map +1 -1
  320. package/dist/es/standards-sdk.es57.js +42 -115
  321. package/dist/es/standards-sdk.es57.js.map +1 -1
  322. package/dist/es/standards-sdk.es58.js +52 -43
  323. package/dist/es/standards-sdk.es58.js.map +1 -1
  324. package/dist/es/standards-sdk.es59.js +36 -50
  325. package/dist/es/standards-sdk.es59.js.map +1 -1
  326. package/dist/es/standards-sdk.es6.js +125 -246
  327. package/dist/es/standards-sdk.es6.js.map +1 -1
  328. package/dist/es/standards-sdk.es60.js +207 -39
  329. package/dist/es/standards-sdk.es60.js.map +1 -1
  330. package/dist/es/standards-sdk.es61.js +24 -200
  331. package/dist/es/standards-sdk.es61.js.map +1 -1
  332. package/dist/es/standards-sdk.es62.js +87 -25
  333. package/dist/es/standards-sdk.es62.js.map +1 -1
  334. package/dist/es/standards-sdk.es63.js +3 -51
  335. package/dist/es/standards-sdk.es63.js.map +1 -1
  336. package/dist/es/standards-sdk.es64.js +100 -3
  337. package/dist/es/standards-sdk.es64.js.map +1 -1
  338. package/dist/es/standards-sdk.es65.js +61 -62
  339. package/dist/es/standards-sdk.es65.js.map +1 -1
  340. package/dist/es/standards-sdk.es66.js +17 -98
  341. package/dist/es/standards-sdk.es66.js.map +1 -1
  342. package/dist/es/standards-sdk.es67.js +77 -19
  343. package/dist/es/standards-sdk.es67.js.map +1 -1
  344. package/dist/es/standards-sdk.es68.js +458 -77
  345. package/dist/es/standards-sdk.es68.js.map +1 -1
  346. package/dist/es/standards-sdk.es69.js +106 -240
  347. package/dist/es/standards-sdk.es69.js.map +1 -1
  348. package/dist/es/standards-sdk.es7.js +28 -183
  349. package/dist/es/standards-sdk.es7.js.map +1 -1
  350. package/dist/es/standards-sdk.es70.js +170 -286
  351. package/dist/es/standards-sdk.es70.js.map +1 -1
  352. package/dist/es/standards-sdk.es71.js +71 -207
  353. package/dist/es/standards-sdk.es71.js.map +1 -1
  354. package/dist/es/standards-sdk.es72.js +71 -72
  355. package/dist/es/standards-sdk.es72.js.map +1 -1
  356. package/dist/es/standards-sdk.es73.js +143 -71
  357. package/dist/es/standards-sdk.es73.js.map +1 -1
  358. package/dist/es/standards-sdk.es74.js +62 -136
  359. package/dist/es/standards-sdk.es74.js.map +1 -1
  360. package/dist/es/standards-sdk.es75.js +380 -45
  361. package/dist/es/standards-sdk.es75.js.map +1 -1
  362. package/dist/es/standards-sdk.es76.js +222 -130
  363. package/dist/es/standards-sdk.es76.js.map +1 -1
  364. package/dist/es/standards-sdk.es77.js +320 -444
  365. package/dist/es/standards-sdk.es77.js.map +1 -1
  366. package/dist/es/standards-sdk.es78.js +88 -370
  367. package/dist/es/standards-sdk.es78.js.map +1 -1
  368. package/dist/es/standards-sdk.es79.js +125 -89
  369. package/dist/es/standards-sdk.es79.js.map +1 -1
  370. package/dist/es/standards-sdk.es8.js +80 -29
  371. package/dist/es/standards-sdk.es8.js.map +1 -1
  372. package/dist/es/standards-sdk.es80.js +8 -125
  373. package/dist/es/standards-sdk.es80.js.map +1 -1
  374. package/dist/es/standards-sdk.es81.js +45 -6
  375. package/dist/es/standards-sdk.es81.js.map +1 -1
  376. package/dist/es/standards-sdk.es82.js +98 -44
  377. package/dist/es/standards-sdk.es82.js.map +1 -1
  378. package/dist/es/standards-sdk.es83.js +331 -84
  379. package/dist/es/standards-sdk.es83.js.map +1 -1
  380. package/dist/es/standards-sdk.es84.js +93 -160
  381. package/dist/es/standards-sdk.es84.js.map +1 -1
  382. package/dist/es/standards-sdk.es85.js +55 -275
  383. package/dist/es/standards-sdk.es85.js.map +1 -1
  384. package/dist/es/standards-sdk.es86.js +43 -55
  385. package/dist/es/standards-sdk.es86.js.map +1 -1
  386. package/dist/es/standards-sdk.es87.js +145 -22
  387. package/dist/es/standards-sdk.es87.js.map +1 -1
  388. package/dist/es/standards-sdk.es88.js +34 -47
  389. package/dist/es/standards-sdk.es88.js.map +1 -1
  390. package/dist/es/standards-sdk.es89.js +22 -57
  391. package/dist/es/standards-sdk.es89.js.map +1 -1
  392. package/dist/es/standards-sdk.es9.js +104 -80
  393. package/dist/es/standards-sdk.es9.js.map +1 -1
  394. package/dist/es/standards-sdk.es90.js +23 -28
  395. package/dist/es/standards-sdk.es90.js.map +1 -1
  396. package/dist/es/standards-sdk.es91.js +238 -23
  397. package/dist/es/standards-sdk.es91.js.map +1 -1
  398. package/dist/es/standards-sdk.es92.js +265 -152
  399. package/dist/es/standards-sdk.es92.js.map +1 -1
  400. package/dist/es/standards-sdk.es93.js +95 -68
  401. package/dist/es/standards-sdk.es93.js.map +1 -1
  402. package/dist/es/standards-sdk.es94.js +124 -136
  403. package/dist/es/standards-sdk.es94.js.map +1 -1
  404. package/dist/es/standards-sdk.es95.js +42 -138
  405. package/dist/es/standards-sdk.es95.js.map +1 -1
  406. package/dist/es/standards-sdk.es96.js +259 -42
  407. package/dist/es/standards-sdk.es96.js.map +1 -1
  408. package/dist/es/standards-sdk.es97.js +82 -243
  409. package/dist/es/standards-sdk.es97.js.map +1 -1
  410. package/dist/es/standards-sdk.es98.js +48 -47
  411. package/dist/es/standards-sdk.es98.js.map +1 -1
  412. package/dist/es/standards-sdk.es99.js +29 -100
  413. package/dist/es/standards-sdk.es99.js.map +1 -1
  414. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  415. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  416. package/dist/es/utils/dynamic-import.d.ts +5 -1
  417. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  418. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  419. package/package.json +8 -7
  420. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  421. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  422. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  423. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-6/sdk.ts"],"sourcesContent":["import { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n HCS6RegisterEntryOptions,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6QueryRegistryOptions,\n HCS6TopicRegistry,\n HCS6Message,\n HCS6RegistryType,\n HCS6MintOptions,\n HCS6InscribeAndMintOptions,\n HCS6MintResponse,\n buildHcs6Hrl,\n} from './types';\nimport {\n Client,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n TopicId,\n TransactionReceipt,\n AccountId,\n PublicKey,\n TokenMintTransaction,\n TokenId,\n} from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport { buildHcs6CreateRegistryTx } from './tx';\nimport {\n NodeOperatorResolver,\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport {\n inscribe,\n type InscriptionInput,\n type InscriptionOptions,\n} from '../inscribe/inscriber';\n\nexport interface SDKHCS6ClientConfig extends HCS6ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\nexport class HCS6Client extends HCS6BaseClient {\n private client: Client;\n private operatorId: AccountId;\n private operatorCtx: NodeOperatorContext;\n\n constructor(config: SDKHCS6ClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n silent: config.silent,\n mirrorNodeUrl: config.mirrorNodeUrl,\n logger: config.logger,\n });\n\n this.operatorId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: this.createClient(config.network),\n });\n this.client = this.operatorCtx.client;\n }\n\n private async ensureInitialized(): Promise<void> {\n await this.operatorCtx.ensureInitialized();\n }\n\n private createClient(network: NetworkType): Client {\n if (network === 'mainnet') {\n return Client.forMainnet();\n } else {\n return Client.forTestnet();\n }\n }\n\n public close(): void {\n this.logger.info('HCS-6 client closed.');\n }\n\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.operatorCtx.keyType;\n }\n\n public getOperatorKey(): PrivateKey {\n return this.operatorCtx.operatorKey;\n }\n\n public async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n return this.submitMessageWithKey(topicId, payload, undefined);\n }\n\n public async submitMessageWithKey(\n topicId: string,\n payload: HCS6Message,\n submitKey?: string | PrivateKey,\n ): Promise<TransactionReceipt> {\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n\n let tx = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(JSON.stringify(payload));\n\n if (!submitKey) {\n const txResponse = await tx.execute(this.client);\n return await txResponse.getReceipt(this.client);\n }\n const privateKey =\n typeof submitKey === 'string'\n ? PrivateKey.fromString(submitKey)\n : submitKey;\n const frozen = await tx.freezeWith(this.client);\n await frozen.sign(privateKey);\n const resp = await frozen.execute(this.client);\n return await resp.getReceipt(this.client);\n }\n\n public async registerEntryWithKey(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n submitKey?: string | PrivateKey,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const payload: HCS6Message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n const receipt = await this.submitMessageWithKey(\n registryTopicId,\n payload,\n submitKey,\n );\n const sequenceNumber = (\n receipt as TransactionReceipt\n ).topicSequenceNumber?.toNumber();\n return { success: true, receipt, sequenceNumber };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n public async createRegistry(\n options: { ttl?: number; submitKey?: string | boolean | PrivateKey } = {},\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n await this.ensureInitialized();\n const ttl = options.ttl ?? 86400;\n if (!(ttl >= 3600)) {\n throw new Error('TTL must be at least 3600 seconds (1 hour)');\n }\n let submitKeyPublic: PublicKey | undefined;\n let submitKeyPrivate: PrivateKey | undefined;\n if (options.submitKey) {\n if (typeof options.submitKey === 'string') {\n try {\n submitKeyPublic = PublicKey.fromString(options.submitKey);\n } catch {\n const keyBytes = Buffer.from(\n options.submitKey.replace(/^0x/i, ''),\n 'hex',\n );\n submitKeyPublic =\n this.operatorCtx.keyType === 'ed25519'\n ? PublicKey.fromBytesED25519(keyBytes)\n : PublicKey.fromBytesECDSA(keyBytes);\n }\n } else if (typeof options.submitKey === 'boolean') {\n submitKeyPublic = this.operatorCtx.operatorKey.publicKey;\n } else {\n submitKeyPublic = options.submitKey.publicKey;\n submitKeyPrivate = options.submitKey;\n }\n }\n\n let transaction = buildHcs6CreateRegistryTx({\n ttl,\n submitKey: submitKeyPublic,\n adminKey: this.operatorCtx.operatorKey.publicKey,\n operatorPublicKey: this.operatorCtx.operatorKey.publicKey,\n });\n\n const frozenTx = await transaction.freezeWith(this.client);\n if (submitKeyPrivate) {\n await frozenTx.sign(submitKeyPrivate);\n }\n const txResponse = await frozenTx.execute(this.client);\n const receipt = await txResponse.getReceipt(this.client);\n const topicId = receipt.topicId;\n if (!topicId) {\n throw new Error(\n 'Failed to create HCS-6 registry: No topic ID in receipt',\n );\n }\n return {\n success: true,\n topicId: topicId.toString(),\n transactionId: txResponse.transactionId.toString(),\n };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return {\n success: false,\n error: `Failed to create HCS-6 registry: ${error}`,\n };\n }\n }\n\n public async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n await this.ensureInitialized();\n return this.registerEntryWithKey(registryTopicId, options, undefined);\n }\n\n public async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n await this.ensureInitialized();\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memo = topicInfo.memo || '';\n const match = memo.match(/^hcs-6:(\\d):(\\d+)$/);\n if (!match) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n const ttl = parseInt(match[2]);\n const regType = parseInt(match[1]) as HCS6RegistryType;\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n });\n const entries = messages\n .map(m => {\n try {\n const decoded = m as unknown as HCS6Message & {\n consensus_timestamp?: string;\n sequence_number: number;\n payer?: string;\n };\n const { valid } = this.validateMessage(\n decoded as unknown as HCS6Message,\n );\n if (!valid) return null;\n return {\n topicId,\n sequence: decoded.sequence_number,\n timestamp: decoded.consensus_timestamp || '',\n payer: decoded.payer || '',\n message: decoded as unknown as HCS6Message,\n consensus_timestamp: decoded.consensus_timestamp || '',\n registry_type: regType,\n };\n } catch {\n return null;\n }\n })\n .filter(\n (\n v,\n ): v is {\n topicId: string;\n sequence: number;\n timestamp: string;\n payer: string;\n message: HCS6Message;\n consensus_timestamp: string;\n registry_type: HCS6RegistryType;\n } => Boolean(v),\n );\n const latest = entries.length > 0 ? entries[entries.length - 1] : undefined;\n return {\n topicId,\n registryType: regType,\n ttl,\n entries,\n latestEntry: latest,\n };\n }\n\n public async mint(options: HCS6MintOptions): Promise<HCS6MintResponse> {\n try {\n await this.ensureInitialized();\n if (!options.metadataTopicId) {\n return {\n success: false,\n error: 'metadataTopicId is required for mint()',\n };\n }\n const metadata = buildHcs6Hrl(options.metadataTopicId);\n let tx = new TokenMintTransaction()\n .setTokenId(TokenId.fromString(options.tokenId))\n .setMetadata([Buffer.from(metadata)]);\n const frozen = await tx.freezeWith(this.client);\n\n if (options.supplyKey) {\n const resolver = new NodeOperatorResolver({\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n });\n const privKey =\n typeof options.supplyKey === 'string'\n ? await resolver.resolveSupplyKey(\n options.tokenId,\n options.supplyKey,\n this.operatorCtx.keyType,\n )\n : options.supplyKey;\n await frozen.sign(privKey);\n }\n\n const resp = await frozen.execute(this.client);\n const receipt = await resp.getReceipt(this.client);\n const serial =\n receipt.serials && receipt.serials[0]\n ? Number(receipt.serials[0].toString())\n : undefined;\n return {\n success: true,\n serialNumber: serial,\n transactionId: resp.transactionId?.toString?.(),\n metadata,\n };\n } catch (e) {\n return { success: false, error: String(e) };\n }\n }\n\n public async inscribeAndMint(\n options: HCS6InscribeAndMintOptions,\n ): Promise<HCS6MintResponse> {\n try {\n await this.ensureInitialized();\n const inscribeOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n waitForConfirmation: true,\n };\n const result = await inscribe(\n options.inscriptionInput as InscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorCtx.operatorKey,\n network: this.network,\n },\n inscribeOptions,\n );\n if (!result.confirmed || !result.inscription) {\n return { success: false, error: 'Failed to inscribe content' };\n }\n const topicId =\n result.inscription.jsonTopicId || result.inscription.topic_id;\n if (!topicId) {\n return { success: false, error: 'No topic ID from inscription' };\n }\n return await this.mint({\n tokenId: options.tokenId,\n metadataTopicId: topicId,\n supplyKey: options.supplyKey,\n memo: options.memo,\n });\n } catch (e) {\n return { success: false, error: String(e) };\n }\n }\n\n public async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n await this.ensureInitialized();\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n registryTopicId = options.registryTopicId;\n const topicInfo = await this.mirrorNode.getTopicInfo(registryTopicId);\n const memo = topicInfo.memo || '';\n if (!/^hcs-6:\\d:\\d+$/.test(memo)) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const res = await this.createRegistry({\n ttl: options.ttl,\n submitKey: true,\n });\n if (!res.success || !res.topicId) {\n throw new Error(res.error || 'Failed to create HCS-6 registry');\n }\n registryTopicId = res.topicId;\n registryTransactionId = res.transactionId;\n }\n\n const inscriptionBuffer = Buffer.from(JSON.stringify(options.metadata));\n const inscribeOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const result = await inscribe(\n {\n type: 'buffer',\n buffer: inscriptionBuffer,\n fileName: 'metadata.json',\n mimeType: 'application/json',\n },\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorCtx.operatorKey,\n network: this.network,\n },\n inscribeOptions,\n );\n\n if (!result.confirmed || !result.inscription) {\n throw new Error('Failed to inscribe metadata');\n }\n const topicId =\n result.inscription.jsonTopicId || result.inscription.topic_id;\n if (!topicId) {\n throw new Error('No inscription topic ID available');\n }\n\n const reg = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: topicId,\n memo: options.memo || 'Dynamic hashinal registration',\n },\n options.submitKey,\n );\n if (!reg.success) {\n throw new Error(reg.error || 'Failed to register entry');\n }\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId: topicId,\n transactionId: registryTransactionId,\n };\n } catch (e) {\n return { success: false, error: String(e) };\n }\n }\n\n public async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n await this.ensureInitialized();\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n registryTopicId = options.registryTopicId;\n const topicInfo = await this.mirrorNode.getTopicInfo(registryTopicId);\n const memo = topicInfo.memo || '';\n if (!/^hcs-6:\\d:\\d+$/.test(memo)) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const res = await this.createRegistry({\n ttl: options.ttl,\n submitKey: true,\n });\n if (!res.success || !res.topicId) {\n throw new Error(res.error || 'Failed to create HCS-6 registry');\n }\n registryTopicId = res.topicId;\n registryTransactionId = res.transactionId;\n }\n\n let inscriptionInput: InscriptionInput;\n if (options.data?.base64) {\n const buffer = Buffer.from(options.data.base64, 'base64');\n inscriptionInput = {\n type: 'buffer',\n buffer,\n fileName: `data.${options.data.mimeType?.split('/')[1] || 'bin'}`,\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n inscriptionInput = { type: 'url', url: options.data.url };\n } else {\n inscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscribeOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const result = await inscribe(\n inscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorCtx.operatorKey,\n network: this.network,\n },\n inscribeOptions,\n );\n if (!result.confirmed || !result.inscription) {\n throw new Error('Failed to inscribe data');\n }\n const topicId =\n result.inscription.jsonTopicId || result.inscription.topic_id;\n if (!topicId) {\n throw new Error('No inscription topic ID available');\n }\n\n const reg = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: topicId,\n memo: options.memo || 'Dynamic hashinal registration',\n },\n options.submitKey,\n );\n if (!reg.success) {\n throw new Error(reg.error || 'Failed to register entry');\n }\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId: topicId,\n transactionId: registryTransactionId,\n };\n } catch (e) {\n return { success: false, error: String(e) };\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-6/browser.ts"],"sourcesContent":["import { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n HCS6RegistryType,\n} from './types';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { TransactionReceipt } from '@hashgraph/sdk';\nimport {\n inscribeWithSigner,\n type InscriptionInput,\n type InscriptionOptions,\n type InscriptionResponse,\n} from '../inscribe/inscriber';\nimport { getTopicId as getInscriptionTopicId } from '../utils/topic-id-utils';\n\n/**\n * Browser client configuration for HCS-6\n */\nexport interface BrowserHCS6ClientConfig extends HCS6ClientConfig {\n hwc: HashinalsWalletConnectSDK;\n signer?: DAppSigner;\n}\n\n/**\n * Browser client for HCS-6 operations\n * This client is designed to work in browser environments where direct key management is not available\n */\nexport class HCS6BrowserClient extends HCS6BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n private signer?: DAppSigner;\n /**\n * Create a new HCS-6 browser client\n * @param config Client configuration\n */\n constructor(config: BrowserHCS6ClientConfig) {\n super(config);\n this.hwc = config.hwc;\n this.signer = config.signer;\n }\n\n private ensureConnected(): string {\n const info = this.hwc.getAccountInfo();\n const accountId = info?.accountId;\n if (!accountId) {\n throw new Error(\n 'No active wallet connection: wallet integration required to perform write operations',\n );\n }\n return accountId;\n }\n\n public getSigner(): DAppSigner {\n const explicit = this.signer;\n if (explicit) {\n return explicit;\n }\n this.ensureConnected();\n const dc = this.hwc.dAppConnector;\n const signer = dc?.signers?.[0];\n if (!signer) {\n throw new Error('No active wallet signer');\n }\n return signer;\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n async createRegistry(\n options: HCS6CreateRegistryOptions,\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n this.ensureConnected();\n const ttl = options?.ttl ?? 86400;\n const memo = this.generateRegistryMemo(ttl);\n const topicId = await this.hwc.createTopic(memo);\n this.logger.info(\n `Created HCS-6 registry topic via wallet: ${topicId} (TTL ${ttl})`,\n );\n return { success: true, topicId };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a new dynamic hashinal update in the registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const valid = await this.validateHCS6Topic(registryTopicId);\n if (!valid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n const receipt = await this.submitMessage(registryTopicId, message);\n const seqField = receipt.topicSequenceNumber as\n | number\n | { low: number }\n | undefined;\n const sequenceNumber =\n typeof seqField === 'number' ? seqField : seqField?.low;\n return { success: true, receipt, sequenceNumber };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`,\n );\n\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`,\n );\n const rawMessagesResult = (await this.mirrorNode.getTopicMessages(\n topicId,\n {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n },\n )) as unknown as Array<{\n message?: string;\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id: string;\n }>;\n\n const rawMessages = options.limit\n ? rawMessagesResult.slice(0, options.limit)\n : rawMessagesResult;\n\n this.logger.debug(\n `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`,\n );\n\n return this.parseRegistryEntries(\n topicId,\n rawMessages,\n memoInfo.registryType,\n memoInfo.ttl,\n );\n } catch (error) {\n this.logger.error(`Failed to get HCS-6 registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Submit a message to a HCS-6 topic\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n this.ensureConnected();\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n const receipt = await this.hwc.submitMessageToTopic(\n topicId,\n JSON.stringify(payload),\n );\n return receipt;\n }\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser createHashinal',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const input: InscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId) {\n return { success: false, error: 'Failed to inscribe metadata' };\n }\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Initial dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to create dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser register',\n };\n }\n\n let input: InscriptionInput;\n if (options.data?.base64) {\n input = {\n type: 'buffer',\n buffer: Buffer.from(options.data.base64, 'base64'),\n fileName: 'data.' + (options.data.mimeType?.split('/')[1] || 'bin'),\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n input = { type: 'url', url: options.data.url };\n } else {\n input = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId)\n return { success: false, error: 'Failed to inscribe data' };\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to register dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Validate that a topic is a valid HCS-6 registry\n * @param topicId The topic ID to validate\n * @returns Promise resolving to true if valid, false otherwise\n */\n async validateHCS6Topic(topicId: string): Promise<boolean> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (invalid memo format)`,\n );\n return false;\n }\n\n if (memoInfo.registryType !== HCS6RegistryType.NON_INDEXED) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (must be non-indexed)`,\n );\n return false;\n }\n\n return true;\n } catch (error) {\n this.logger.error(`Error validating HCS-6 topic ${topicId}: ${error}`);\n return false;\n }\n }\n}\n"],"names":["getInscriptionTopicId"],"mappings":"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"}
@@ -1,111 +1,201 @@
1
- class HashLinkScanner {
2
- constructor(logger) {
1
+ class HashLinkResolver {
2
+ constructor(logger, blockLoader, hrlResolver, network) {
3
3
  this.logger = logger;
4
+ this.blockLoader = blockLoader;
5
+ this.hrlResolver = hrlResolver;
6
+ this.network = network;
7
+ this.cache = /* @__PURE__ */ new Map();
8
+ this.renderStack = /* @__PURE__ */ new Set();
4
9
  }
5
10
  /**
6
- * Scan template for data-hashlink elements
11
+ * Resolve a HashLink reference to a block
7
12
  */
8
- async scanTemplate(html) {
9
- const references = [];
10
- const hashLinkRegex = /<([^>]+)\s+data-hashlink=["']([^"']+)["']([^>]*)>/gs;
11
- let match;
12
- while ((match = hashLinkRegex.exec(html)) !== null) {
13
- const fullMatch = match[0];
14
- const tagName = match[1].split(/\s+/)[0];
15
- const uri = match[2];
16
- const otherAttributes = match[3];
17
- try {
18
- const parsed = this.parseHashLinkURI(uri);
19
- const attributesMatch = otherAttributes.match(
20
- /data-attributes=(['"])((?:(?!\1).)*)\1/s
21
- );
22
- let attributes;
23
- if (attributesMatch) {
24
- try {
25
- const attrString = attributesMatch[2];
26
- attributes = JSON.parse(attrString);
27
- } catch (e) {
28
- this.logger.warn("Failed to parse data-attributes", {
29
- uri,
30
- attributes: attributesMatch[2],
31
- error: e.message
32
- });
33
- }
34
- }
35
- const actionsMatch = otherAttributes.match(
36
- /data-actions=(['"])((?:(?!\1).)*)\1/s
37
- );
38
- let actions;
39
- if (actionsMatch) {
40
- try {
41
- const actionsString = actionsMatch[2];
42
- actions = JSON.parse(actionsString);
43
- } catch (e) {
44
- this.logger.warn("Failed to parse data-actions", {
45
- uri,
46
- actions: actionsMatch[2],
47
- error: e.message
48
- });
49
- }
50
- }
51
- const loadingMatch = otherAttributes.match(
52
- /data-loading=['"]([^'"]+)['"]/
53
- );
54
- const loading = loadingMatch?.[1] || "eager";
55
- references.push({
56
- element: tagName,
57
- uri,
58
- ...parsed,
59
- attributes,
60
- actions,
61
- loading,
62
- placeholder: fullMatch
63
- });
64
- this.logger.debug("Found HashLink reference", { uri, parsed });
65
- } catch (error) {
66
- this.logger.error("Failed to parse HashLink URI", {
67
- uri,
68
- error: error.message
69
- });
13
+ async resolveReference(ref, context) {
14
+ this.logger.debug("Resolving HashLink reference", {
15
+ uri: ref.uri,
16
+ protocol: ref.protocol
17
+ });
18
+ try {
19
+ switch (ref.protocol) {
20
+ case "12":
21
+ return await this.resolveHCS12Block(ref, context);
22
+ case "1":
23
+ return await this.resolveHCS1Block(ref, context);
24
+ case "2":
25
+ return await this.resolveHCS2Block(ref, context);
26
+ default:
27
+ throw new Error(`Unsupported HashLink protocol: ${ref.protocol}`);
70
28
  }
29
+ } catch (error) {
30
+ this.logger.error("Failed to resolve HashLink", {
31
+ uri: ref.uri,
32
+ error: error.message
33
+ });
34
+ return {
35
+ blockId: ref.reference,
36
+ definition: null,
37
+ template: null,
38
+ attributes: {},
39
+ actions: {},
40
+ error: error.message
41
+ };
71
42
  }
72
- return references;
73
43
  }
74
44
  /**
75
- * Parse HashLink URI into components
45
+ * Resolve HCS-12 block by topic ID
76
46
  */
77
- parseHashLinkURI(uri) {
78
- const uriMatch = uri.match(/^hcs:\/\/(\d+)\/(.+)$/);
79
- if (!uriMatch) {
80
- throw new Error(`Invalid HashLink URI format: ${uri}`);
47
+ async resolveHCS12Block(ref, context) {
48
+ const blockId = ref.reference;
49
+ if (this.renderStack.has(blockId)) {
50
+ return {
51
+ blockId,
52
+ definition: null,
53
+ template: null,
54
+ attributes: {},
55
+ actions: {},
56
+ error: "Circular reference detected"
57
+ };
58
+ }
59
+ const cacheKey = this.getCacheKey(blockId, ref.attributes, ref.actions);
60
+ if (this.cache.has(cacheKey)) {
61
+ return this.cache.get(cacheKey);
62
+ }
63
+ try {
64
+ const blockData = await this.blockLoader.loadBlock(blockId);
65
+ if (!blockData || !blockData.definition) {
66
+ throw new Error(`Block not found: ${blockId}`);
67
+ }
68
+ const mergedAttributes = {
69
+ ...this.extractDefaults(blockData.definition),
70
+ ...context.attributes,
71
+ ...ref.attributes
72
+ };
73
+ const mergedActions = {
74
+ ...context.actions,
75
+ ...ref.actions
76
+ };
77
+ const resolved = {
78
+ blockId,
79
+ definition: blockData.definition,
80
+ template: blockData.template,
81
+ attributes: mergedAttributes,
82
+ actions: mergedActions
83
+ };
84
+ this.cache.set(cacheKey, resolved);
85
+ return resolved;
86
+ } catch (error) {
87
+ this.renderStack.delete(blockId);
88
+ throw new Error(
89
+ `Failed to load HCS-12 block ${blockId}: ${error.message}`
90
+ );
81
91
  }
82
- const protocol = uriMatch[1];
83
- const referencePath = uriMatch[2];
84
- if (protocol === "2") {
85
- const parts = referencePath.split("/");
86
- if (parts.length !== 2) {
87
- throw new Error(`Invalid HCS-2 reference format: ${referencePath}`);
92
+ }
93
+ /**
94
+ * Resolve HCS-1 topic as potential block
95
+ */
96
+ async resolveHCS1Block(ref, context) {
97
+ const topicId = ref.reference;
98
+ try {
99
+ const blockData = await this.blockLoader.loadBlock(topicId);
100
+ if (blockData && blockData.definition) {
101
+ return {
102
+ blockId: topicId,
103
+ definition: blockData.definition,
104
+ template: blockData.template,
105
+ attributes: {
106
+ ...this.extractDefaults(blockData.definition),
107
+ ...ref.attributes
108
+ },
109
+ actions: ref.actions || {}
110
+ };
88
111
  }
112
+ const content = await this.hrlResolver.resolve(topicId, {
113
+ network: this.network
114
+ });
115
+ return {
116
+ blockId: topicId,
117
+ definition: null,
118
+ template: content.content,
119
+ attributes: ref.attributes || {},
120
+ actions: ref.actions || {}
121
+ };
122
+ } catch (error) {
123
+ throw new Error(
124
+ `Failed to load HCS-1 content ${topicId}: ${error.message}`
125
+ );
126
+ }
127
+ }
128
+ /**
129
+ * Resolve HCS-2 registry entry
130
+ */
131
+ async resolveHCS2Block(ref, context) {
132
+ if (!ref.registryId || !ref.entryName) {
133
+ throw new Error(
134
+ "Invalid HCS-2 reference: missing registry ID or entry name"
135
+ );
136
+ }
137
+ try {
138
+ const registryUri = `hcs://2/${ref.registryId}`;
139
+ const registryContent = await this.hrlResolver.resolve(registryUri, {
140
+ network: this.network
141
+ });
142
+ this.logger.warn("HCS-2 registry lookup not fully implemented", {
143
+ registryId: ref.registryId,
144
+ entryName: ref.entryName
145
+ });
89
146
  return {
90
- protocol,
91
- reference: referencePath,
92
- registryId: parts[0],
93
- entryName: parts[1]
147
+ blockId: `${ref.registryId}/${ref.entryName}`,
148
+ definition: null,
149
+ template: `<!-- HCS-2 lookup not implemented: ${ref.uri} -->`,
150
+ attributes: ref.attributes || {},
151
+ actions: ref.actions || {}
94
152
  };
153
+ } catch (error) {
154
+ throw new Error(`Failed to resolve HCS-2 entry: ${error.message}`);
155
+ }
156
+ }
157
+ /**
158
+ * Extract default attribute values from block definition
159
+ */
160
+ extractDefaults(definition) {
161
+ const defaults = {};
162
+ if (definition.attributes) {
163
+ Object.entries(definition.attributes).forEach(([key, attr]) => {
164
+ if (attr && typeof attr === "object" && "default" in attr) {
165
+ defaults[key] = attr.default;
166
+ }
167
+ });
95
168
  }
96
- return {
97
- protocol,
98
- reference: referencePath
99
- };
169
+ return defaults;
170
+ }
171
+ /**
172
+ * Get cache key for resolved block
173
+ */
174
+ getCacheKey(blockId, attributes, actions) {
175
+ const attrHash = attributes ? JSON.stringify(attributes) : "";
176
+ const actionHash = actions ? JSON.stringify(actions) : "";
177
+ return `${blockId}:${attrHash}:${actionHash}`;
178
+ }
179
+ /**
180
+ * Add block to render stack (for circular reference detection)
181
+ */
182
+ pushRenderStack(blockId) {
183
+ this.renderStack.add(blockId);
184
+ }
185
+ /**
186
+ * Remove block from render stack
187
+ */
188
+ popRenderStack(blockId) {
189
+ this.renderStack.delete(blockId);
100
190
  }
101
191
  /**
102
- * Create a unique placeholder for replacement
192
+ * Clear cache
103
193
  */
104
- createPlaceholder(ref, index) {
105
- return `<!-- HASHLINK_PLACEHOLDER_${index}_${ref.uri.replace(/[^a-zA-Z0-9]/g, "_")} -->`;
194
+ clearCache() {
195
+ this.cache.clear();
106
196
  }
107
197
  }
108
198
  export {
109
- HashLinkScanner
199
+ HashLinkResolver
110
200
  };
111
201
  //# sourceMappingURL=standards-sdk.es50.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es50.js","sources":["../../src/hcs-12/rendering/hashlink-scanner.ts"],"sourcesContent":["/**\n * HashLink Scanner for Template-Based Block Composition\n *\n * Scans HTML templates for data-hashlink attributes and extracts references\n */\n\nimport { Logger } from '../../utils/logger';\n\nexport interface ScannedHashLink {\n element: string;\n uri: string;\n protocol: string;\n reference: string;\n registryId?: string;\n entryName?: string;\n attributes?: Record<string, any>;\n actions?: Record<string, string>;\n loading?: 'eager' | 'lazy';\n placeholder: string;\n}\n\nexport class HashLinkScanner {\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.logger = logger;\n }\n\n /**\n * Scan template for data-hashlink elements\n */\n async scanTemplate(html: string): Promise<ScannedHashLink[]> {\n const references: ScannedHashLink[] = [];\n\n const hashLinkRegex = /<([^>]+)\\s+data-hashlink=[\"']([^\"']+)[\"']([^>]*)>/gs;\n\n let match;\n while ((match = hashLinkRegex.exec(html)) !== null) {\n const fullMatch = match[0];\n const tagName = match[1].split(/\\s+/)[0];\n const uri = match[2];\n const otherAttributes = match[3];\n\n try {\n const parsed = this.parseHashLinkURI(uri);\n\n const attributesMatch = otherAttributes.match(\n /data-attributes=(['\"])((?:(?!\\1).)*)\\1/s,\n );\n let attributes: Record<string, any> | undefined;\n if (attributesMatch) {\n try {\n const attrString = attributesMatch[2];\n attributes = JSON.parse(attrString);\n } catch (e) {\n this.logger.warn('Failed to parse data-attributes', {\n uri,\n attributes: attributesMatch[2],\n error: e.message,\n });\n }\n }\n\n const actionsMatch = otherAttributes.match(\n /data-actions=(['\"])((?:(?!\\1).)*)\\1/s,\n );\n let actions: Record<string, string> | undefined;\n if (actionsMatch) {\n try {\n const actionsString = actionsMatch[2];\n actions = JSON.parse(actionsString);\n } catch (e) {\n this.logger.warn('Failed to parse data-actions', {\n uri,\n actions: actionsMatch[2],\n error: e.message,\n });\n }\n }\n\n const loadingMatch = otherAttributes.match(\n /data-loading=['\"]([^'\"]+)['\"]/,\n );\n const loading = (loadingMatch?.[1] as 'lazy' | 'eager') || 'eager';\n\n references.push({\n element: tagName,\n uri,\n ...parsed,\n attributes,\n actions,\n loading,\n placeholder: fullMatch,\n });\n\n this.logger.debug('Found HashLink reference', { uri, parsed });\n } catch (error) {\n this.logger.error('Failed to parse HashLink URI', {\n uri,\n error: error.message,\n });\n }\n }\n\n return references;\n }\n\n /**\n * Parse HashLink URI into components\n */\n parseHashLinkURI(uri: string): {\n protocol: string;\n reference: string;\n registryId?: string;\n entryName?: string;\n } {\n const uriMatch = uri.match(/^hcs:\\/\\/(\\d+)\\/(.+)$/);\n if (!uriMatch) {\n throw new Error(`Invalid HashLink URI format: ${uri}`);\n }\n\n const protocol = uriMatch[1];\n const referencePath = uriMatch[2];\n\n if (protocol === '2') {\n const parts = referencePath.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid HCS-2 reference format: ${referencePath}`);\n }\n return {\n protocol,\n reference: referencePath,\n registryId: parts[0],\n entryName: parts[1],\n };\n }\n\n return {\n protocol,\n reference: referencePath,\n };\n }\n\n /**\n * Create a unique placeholder for replacement\n */\n createPlaceholder(ref: ScannedHashLink, index: number): string {\n return `<!-- HASHLINK_PLACEHOLDER_${index}_${ref.uri.replace(/[^a-zA-Z0-9]/g, '_')} -->`;\n }\n}\n"],"names":[],"mappings":"AAqBO,MAAM,gBAAgB;AAAA,EAG3B,YAAY,QAAgB;AAC1B,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,MAA0C;AAC3D,UAAM,aAAgC,CAAA;AAEtC,UAAM,gBAAgB;AAEtB,QAAI;AACJ,YAAQ,QAAQ,cAAc,KAAK,IAAI,OAAO,MAAM;AAClD,YAAM,YAAY,MAAM,CAAC;AACzB,YAAM,UAAU,MAAM,CAAC,EAAE,MAAM,KAAK,EAAE,CAAC;AACvC,YAAM,MAAM,MAAM,CAAC;AACnB,YAAM,kBAAkB,MAAM,CAAC;AAE/B,UAAI;AACF,cAAM,SAAS,KAAK,iBAAiB,GAAG;AAExC,cAAM,kBAAkB,gBAAgB;AAAA,UACtC;AAAA,QAAA;AAEF,YAAI;AACJ,YAAI,iBAAiB;AACnB,cAAI;AACF,kBAAM,aAAa,gBAAgB,CAAC;AACpC,yBAAa,KAAK,MAAM,UAAU;AAAA,UACpC,SAAS,GAAG;AACV,iBAAK,OAAO,KAAK,mCAAmC;AAAA,cAClD;AAAA,cACA,YAAY,gBAAgB,CAAC;AAAA,cAC7B,OAAO,EAAE;AAAA,YAAA,CACV;AAAA,UACH;AAAA,QACF;AAEA,cAAM,eAAe,gBAAgB;AAAA,UACnC;AAAA,QAAA;AAEF,YAAI;AACJ,YAAI,cAAc;AAChB,cAAI;AACF,kBAAM,gBAAgB,aAAa,CAAC;AACpC,sBAAU,KAAK,MAAM,aAAa;AAAA,UACpC,SAAS,GAAG;AACV,iBAAK,OAAO,KAAK,gCAAgC;AAAA,cAC/C;AAAA,cACA,SAAS,aAAa,CAAC;AAAA,cACvB,OAAO,EAAE;AAAA,YAAA,CACV;AAAA,UACH;AAAA,QACF;AAEA,cAAM,eAAe,gBAAgB;AAAA,UACnC;AAAA,QAAA;AAEF,cAAM,UAAW,eAAe,CAAC,KAA0B;AAE3D,mBAAW,KAAK;AAAA,UACd,SAAS;AAAA,UACT;AAAA,UACA,GAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa;AAAA,QAAA,CACd;AAED,aAAK,OAAO,MAAM,4BAA4B,EAAE,KAAK,QAAQ;AAAA,MAC/D,SAAS,OAAO;AACd,aAAK,OAAO,MAAM,gCAAgC;AAAA,UAChD;AAAA,UACA,OAAO,MAAM;AAAA,QAAA,CACd;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,KAKf;AACA,UAAM,WAAW,IAAI,MAAM,uBAAuB;AAClD,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,gCAAgC,GAAG,EAAE;AAAA,IACvD;AAEA,UAAM,WAAW,SAAS,CAAC;AAC3B,UAAM,gBAAgB,SAAS,CAAC;AAEhC,QAAI,aAAa,KAAK;AACpB,YAAM,QAAQ,cAAc,MAAM,GAAG;AACrC,UAAI,MAAM,WAAW,GAAG;AACtB,cAAM,IAAI,MAAM,mCAAmC,aAAa,EAAE;AAAA,MACpE;AACA,aAAO;AAAA,QACL;AAAA,QACA,WAAW;AAAA,QACX,YAAY,MAAM,CAAC;AAAA,QACnB,WAAW,MAAM,CAAC;AAAA,MAAA;AAAA,IAEtB;AAEA,WAAO;AAAA,MACL;AAAA,MACA,WAAW;AAAA,IAAA;AAAA,EAEf;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,KAAsB,OAAuB;AAC7D,WAAO,6BAA6B,KAAK,IAAI,IAAI,IAAI,QAAQ,iBAAiB,GAAG,CAAC;AAAA,EACpF;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es50.js","sources":["../../src/hcs-12/rendering/hashlink-resolver.ts"],"sourcesContent":["/**\n * HashLink Resolver for Template-Based Block Composition\n *\n * Resolves HashLink references to actual blocks and handles loading\n */\n\nimport { Logger } from '../../utils/logger';\nimport { ScannedHashLink } from './hashlink-scanner';\nimport { BlockDefinition } from '../types';\nimport { BlockLoader } from '../registries/block-loader';\nimport { HRLResolver } from '../../utils/hrl-resolver';\nimport { NetworkType } from '../../utils/types';\n\nexport interface RenderContext {\n blockId: string;\n depth: number;\n parentContext?: RenderContext;\n attributes: Record<string, any>;\n actions: Record<string, string>;\n assembly?: any;\n maxDepth?: number;\n}\n\nexport interface ResolvedHashLinkBlock {\n blockId: string;\n definition: BlockDefinition | null;\n template: string | null;\n attributes: Record<string, any>;\n actions: Record<string, string>;\n error?: string;\n}\n\nexport class HashLinkResolver {\n private logger: Logger;\n private blockLoader: BlockLoader;\n private hrlResolver: HRLResolver;\n private network: NetworkType;\n private cache: Map<string, ResolvedHashLinkBlock>;\n private renderStack: Set<string>;\n\n constructor(\n logger: Logger,\n blockLoader: BlockLoader,\n hrlResolver: HRLResolver,\n network: NetworkType,\n ) {\n this.logger = logger;\n this.blockLoader = blockLoader;\n this.hrlResolver = hrlResolver;\n this.network = network;\n this.cache = new Map();\n this.renderStack = new Set();\n }\n\n /**\n * Resolve a HashLink reference to a block\n */\n async resolveReference(\n ref: ScannedHashLink,\n context: RenderContext,\n ): Promise<ResolvedHashLinkBlock> {\n this.logger.debug('Resolving HashLink reference', {\n uri: ref.uri,\n protocol: ref.protocol,\n });\n\n try {\n switch (ref.protocol) {\n case '12':\n return await this.resolveHCS12Block(ref, context);\n\n case '1':\n return await this.resolveHCS1Block(ref, context);\n\n case '2':\n return await this.resolveHCS2Block(ref, context);\n\n default:\n throw new Error(`Unsupported HashLink protocol: ${ref.protocol}`);\n }\n } catch (error) {\n this.logger.error('Failed to resolve HashLink', {\n uri: ref.uri,\n error: error.message,\n });\n\n return {\n blockId: ref.reference,\n definition: null,\n template: null,\n attributes: {},\n actions: {},\n error: error.message,\n };\n }\n }\n\n /**\n * Resolve HCS-12 block by topic ID\n */\n private async resolveHCS12Block(\n ref: ScannedHashLink,\n context: RenderContext,\n ): Promise<ResolvedHashLinkBlock> {\n const blockId = ref.reference;\n\n if (this.renderStack.has(blockId)) {\n return {\n blockId,\n definition: null,\n template: null,\n attributes: {},\n actions: {},\n error: 'Circular reference detected',\n };\n }\n\n const cacheKey = this.getCacheKey(blockId, ref.attributes, ref.actions);\n if (this.cache.has(cacheKey)) {\n return this.cache.get(cacheKey)!;\n }\n\n try {\n const blockData = await this.blockLoader.loadBlock(blockId);\n\n if (!blockData || !blockData.definition) {\n throw new Error(`Block not found: ${blockId}`);\n }\n\n const mergedAttributes = {\n ...this.extractDefaults(blockData.definition),\n ...context.attributes,\n ...ref.attributes,\n };\n\n const mergedActions = {\n ...context.actions,\n ...ref.actions,\n };\n\n const resolved: ResolvedHashLinkBlock = {\n blockId,\n definition: blockData.definition,\n template: blockData.template,\n attributes: mergedAttributes,\n actions: mergedActions,\n };\n\n this.cache.set(cacheKey, resolved);\n\n return resolved;\n } catch (error) {\n this.renderStack.delete(blockId);\n throw new Error(\n `Failed to load HCS-12 block ${blockId}: ${error.message}`,\n );\n }\n }\n\n /**\n * Resolve HCS-1 topic as potential block\n */\n private async resolveHCS1Block(\n ref: ScannedHashLink,\n context: RenderContext,\n ): Promise<ResolvedHashLinkBlock> {\n const topicId = ref.reference;\n\n try {\n const blockData = await this.blockLoader.loadBlock(topicId);\n\n if (blockData && blockData.definition) {\n return {\n blockId: topicId,\n definition: blockData.definition,\n template: blockData.template,\n attributes: {\n ...this.extractDefaults(blockData.definition),\n ...ref.attributes,\n },\n actions: ref.actions || {},\n };\n }\n\n const content = await this.hrlResolver.resolve(topicId, {\n network: this.network,\n });\n\n return {\n blockId: topicId,\n definition: null,\n template: content.content as string,\n attributes: ref.attributes || {},\n actions: ref.actions || {},\n };\n } catch (error) {\n throw new Error(\n `Failed to load HCS-1 content ${topicId}: ${error.message}`,\n );\n }\n }\n\n /**\n * Resolve HCS-2 registry entry\n */\n private async resolveHCS2Block(\n ref: ScannedHashLink,\n context: RenderContext,\n ): Promise<ResolvedHashLinkBlock> {\n if (!ref.registryId || !ref.entryName) {\n throw new Error(\n 'Invalid HCS-2 reference: missing registry ID or entry name',\n );\n }\n\n try {\n const registryUri = `hcs://2/${ref.registryId}`;\n const registryContent = await this.hrlResolver.resolve(registryUri, {\n network: this.network,\n });\n\n this.logger.warn('HCS-2 registry lookup not fully implemented', {\n registryId: ref.registryId,\n entryName: ref.entryName,\n });\n\n return {\n blockId: `${ref.registryId}/${ref.entryName}`,\n definition: null,\n template: `<!-- HCS-2 lookup not implemented: ${ref.uri} -->`,\n attributes: ref.attributes || {},\n actions: ref.actions || {},\n };\n } catch (error) {\n throw new Error(`Failed to resolve HCS-2 entry: ${error.message}`);\n }\n }\n\n /**\n * Extract default attribute values from block definition\n */\n private extractDefaults(definition: BlockDefinition): Record<string, any> {\n const defaults: Record<string, any> = {};\n\n if (definition.attributes) {\n Object.entries(definition.attributes).forEach(([key, attr]) => {\n if (attr && typeof attr === 'object' && 'default' in attr) {\n defaults[key] = attr.default;\n }\n });\n }\n\n return defaults;\n }\n\n /**\n * Get cache key for resolved block\n */\n private getCacheKey(\n blockId: string,\n attributes?: Record<string, any>,\n actions?: Record<string, string>,\n ): string {\n const attrHash = attributes ? JSON.stringify(attributes) : '';\n const actionHash = actions ? JSON.stringify(actions) : '';\n return `${blockId}:${attrHash}:${actionHash}`;\n }\n\n /**\n * Add block to render stack (for circular reference detection)\n */\n pushRenderStack(blockId: string): void {\n this.renderStack.add(blockId);\n }\n\n /**\n * Remove block from render stack\n */\n popRenderStack(blockId: string): void {\n this.renderStack.delete(blockId);\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n this.cache.clear();\n }\n}\n"],"names":[],"mappings":"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"}