@hashgraphonline/standards-sdk 0.1.143 → 0.1.144-feat-solana-register.canary.d5edcec.80

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 (475) 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-12/validation/schemas.d.ts +8 -8
  12. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  13. package/dist/cjs/hcs-15/browser.d.ts +2 -0
  14. package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
  15. package/dist/cjs/hcs-15/sdk.d.ts +7 -1
  16. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  17. package/dist/cjs/hcs-15/tx.d.ts +4 -0
  18. package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
  19. package/dist/cjs/hcs-15/types.d.ts +16 -1
  20. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  21. package/dist/cjs/hcs-16/browser.d.ts +11 -2
  22. package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
  23. package/dist/cjs/hcs-16/sdk.d.ts +62 -1
  24. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  25. package/dist/cjs/hcs-16/tx.d.ts +21 -3
  26. package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
  27. package/dist/cjs/hcs-17/base-client.d.ts +1 -0
  28. package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
  29. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  30. package/dist/cjs/hcs-17/tx.d.ts +2 -0
  31. package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
  32. package/dist/cjs/hcs-17/types.d.ts +4 -0
  33. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  34. package/dist/cjs/hcs-21/types.d.ts +75 -75
  35. package/dist/cjs/index.d.ts.map +1 -1
  36. package/dist/cjs/services/registry-broker/client/adapters.d.ts +20 -0
  37. package/dist/cjs/services/registry-broker/client/adapters.d.ts.map +1 -0
  38. package/dist/cjs/services/registry-broker/client/agents.d.ts +16 -0
  39. package/dist/cjs/services/registry-broker/client/agents.d.ts.map +1 -0
  40. package/dist/cjs/services/registry-broker/client/base-client.d.ts +70 -0
  41. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -0
  42. package/dist/cjs/services/registry-broker/client/chat-history.d.ts +23 -0
  43. package/dist/cjs/services/registry-broker/client/chat-history.d.ts.map +1 -0
  44. package/dist/cjs/services/registry-broker/client/chat.d.ts +33 -0
  45. package/dist/cjs/services/registry-broker/client/chat.d.ts.map +1 -0
  46. package/dist/cjs/services/registry-broker/client/credits.d.ts +40 -0
  47. package/dist/cjs/services/registry-broker/client/credits.d.ts.map +1 -0
  48. package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
  49. package/dist/cjs/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
  50. package/dist/cjs/services/registry-broker/client/encryption.d.ts +33 -0
  51. package/dist/cjs/services/registry-broker/client/encryption.d.ts.map +1 -0
  52. package/dist/cjs/services/registry-broker/client/errors.d.ts +19 -0
  53. package/dist/cjs/services/registry-broker/client/errors.d.ts.map +1 -0
  54. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  55. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  56. package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts +10 -0
  57. package/dist/cjs/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
  58. package/dist/cjs/services/registry-broker/client/search.d.ts +19 -0
  59. package/dist/cjs/services/registry-broker/client/search.d.ts.map +1 -0
  60. package/dist/cjs/services/registry-broker/client/utils.d.ts +21 -0
  61. package/dist/cjs/services/registry-broker/client/utils.d.ts.map +1 -0
  62. package/dist/cjs/services/registry-broker/client.d.ts +2 -205
  63. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  64. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  65. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  66. package/dist/cjs/services/registry-broker/schemas.d.ts +2509 -816
  67. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  68. package/dist/cjs/services/registry-broker/types.d.ts +64 -2
  69. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  70. package/dist/cjs/standards-sdk.cjs +3 -3
  71. package/dist/cjs/standards-sdk.cjs.map +1 -1
  72. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  73. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  74. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  75. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  76. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  77. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  78. package/dist/es/hcs-10/sdk.d.ts +8 -0
  79. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  80. package/dist/es/hcs-11/client.d.ts +2 -2
  81. package/dist/es/hcs-11/client.d.ts.map +1 -1
  82. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  83. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  84. package/dist/es/hcs-11/types.d.ts +1 -0
  85. package/dist/es/hcs-11/types.d.ts.map +1 -1
  86. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  87. package/dist/es/hcs-12/validation/schemas.d.ts +8 -8
  88. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  89. package/dist/es/hcs-15/browser.d.ts +2 -0
  90. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  91. package/dist/es/hcs-15/sdk.d.ts +7 -1
  92. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  93. package/dist/es/hcs-15/tx.d.ts +4 -0
  94. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  95. package/dist/es/hcs-15/types.d.ts +16 -1
  96. package/dist/es/hcs-15/types.d.ts.map +1 -1
  97. package/dist/es/hcs-16/browser.d.ts +11 -2
  98. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  99. package/dist/es/hcs-16/sdk.d.ts +62 -1
  100. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  101. package/dist/es/hcs-16/tx.d.ts +21 -3
  102. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  103. package/dist/es/hcs-17/base-client.d.ts +1 -0
  104. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  105. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  106. package/dist/es/hcs-17/tx.d.ts +2 -0
  107. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  108. package/dist/es/hcs-17/types.d.ts +4 -0
  109. package/dist/es/hcs-17/types.d.ts.map +1 -1
  110. package/dist/es/hcs-21/types.d.ts +75 -75
  111. package/dist/es/index.d.ts.map +1 -1
  112. package/dist/es/services/registry-broker/client/adapters.d.ts +20 -0
  113. package/dist/es/services/registry-broker/client/adapters.d.ts.map +1 -0
  114. package/dist/es/services/registry-broker/client/agents.d.ts +16 -0
  115. package/dist/es/services/registry-broker/client/agents.d.ts.map +1 -0
  116. package/dist/es/services/registry-broker/client/base-client.d.ts +70 -0
  117. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -0
  118. package/dist/es/services/registry-broker/client/chat-history.d.ts +23 -0
  119. package/dist/es/services/registry-broker/client/chat-history.d.ts.map +1 -0
  120. package/dist/es/services/registry-broker/client/chat.d.ts +33 -0
  121. package/dist/es/services/registry-broker/client/chat.d.ts.map +1 -0
  122. package/dist/es/services/registry-broker/client/credits.d.ts +40 -0
  123. package/dist/es/services/registry-broker/client/credits.d.ts.map +1 -0
  124. package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts +35 -0
  125. package/dist/es/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
  126. package/dist/es/services/registry-broker/client/encryption.d.ts +33 -0
  127. package/dist/es/services/registry-broker/client/encryption.d.ts.map +1 -0
  128. package/dist/es/services/registry-broker/client/errors.d.ts +19 -0
  129. package/dist/es/services/registry-broker/client/errors.d.ts.map +1 -0
  130. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  131. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  132. package/dist/es/services/registry-broker/client/ledger-auth.d.ts +10 -0
  133. package/dist/es/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
  134. package/dist/es/services/registry-broker/client/search.d.ts +19 -0
  135. package/dist/es/services/registry-broker/client/search.d.ts.map +1 -0
  136. package/dist/es/services/registry-broker/client/utils.d.ts +21 -0
  137. package/dist/es/services/registry-broker/client/utils.d.ts.map +1 -0
  138. package/dist/es/services/registry-broker/client.d.ts +2 -205
  139. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  140. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  141. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  142. package/dist/es/services/registry-broker/schemas.d.ts +2509 -816
  143. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  144. package/dist/es/services/registry-broker/types.d.ts +64 -2
  145. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  146. package/dist/es/standards-sdk.es.js +148 -133
  147. package/dist/es/standards-sdk.es.js.map +1 -1
  148. package/dist/es/standards-sdk.es10.js +70 -90
  149. package/dist/es/standards-sdk.es10.js.map +1 -1
  150. package/dist/es/standards-sdk.es100.js +229 -26
  151. package/dist/es/standards-sdk.es100.js.map +1 -1
  152. package/dist/es/standards-sdk.es101.js +109 -228
  153. package/dist/es/standards-sdk.es101.js.map +1 -1
  154. package/dist/es/standards-sdk.es102.js +15 -94
  155. package/dist/es/standards-sdk.es102.js.map +1 -1
  156. package/dist/es/standards-sdk.es103.js +80 -30
  157. package/dist/es/standards-sdk.es103.js.map +1 -1
  158. package/dist/es/standards-sdk.es104.js +27 -80
  159. package/dist/es/standards-sdk.es104.js.map +1 -1
  160. package/dist/es/standards-sdk.es105.js +136 -25
  161. package/dist/es/standards-sdk.es105.js.map +1 -1
  162. package/dist/es/standards-sdk.es106.js +27 -140
  163. package/dist/es/standards-sdk.es106.js.map +1 -1
  164. package/dist/es/standards-sdk.es107.js +20 -27
  165. package/dist/es/standards-sdk.es107.js.map +1 -1
  166. package/dist/es/standards-sdk.es108.js +156 -18
  167. package/dist/es/standards-sdk.es108.js.map +1 -1
  168. package/dist/es/standards-sdk.es109.js +198 -148
  169. package/dist/es/standards-sdk.es109.js.map +1 -1
  170. package/dist/es/standards-sdk.es11.js +121 -45
  171. package/dist/es/standards-sdk.es11.js.map +1 -1
  172. package/dist/es/standards-sdk.es110.js +747 -160
  173. package/dist/es/standards-sdk.es110.js.map +1 -1
  174. package/dist/es/standards-sdk.es111.js +9 -786
  175. package/dist/es/standards-sdk.es111.js.map +1 -1
  176. package/dist/es/standards-sdk.es112.js +567 -13
  177. package/dist/es/standards-sdk.es112.js.map +1 -1
  178. package/dist/es/standards-sdk.es113.js +576 -541
  179. package/dist/es/standards-sdk.es113.js.map +1 -1
  180. package/dist/es/standards-sdk.es114.js +12 -601
  181. package/dist/es/standards-sdk.es114.js.map +1 -1
  182. package/dist/es/standards-sdk.es115.js +2 -13
  183. package/dist/es/standards-sdk.es115.js.map +1 -1
  184. package/dist/es/standards-sdk.es116.js +87 -2
  185. package/dist/es/standards-sdk.es116.js.map +1 -1
  186. package/dist/es/standards-sdk.es117.js +37 -80
  187. package/dist/es/standards-sdk.es117.js.map +1 -1
  188. package/dist/es/standards-sdk.es118.js +2 -39
  189. package/dist/es/standards-sdk.es118.js.map +1 -1
  190. package/dist/es/standards-sdk.es119.js +231 -2
  191. package/dist/es/standards-sdk.es119.js.map +1 -1
  192. package/dist/es/standards-sdk.es12.js +60 -159
  193. package/dist/es/standards-sdk.es12.js.map +1 -1
  194. package/dist/es/standards-sdk.es120.js +1110 -193
  195. package/dist/es/standards-sdk.es120.js.map +1 -1
  196. package/dist/es/standards-sdk.es121.js +225 -1059
  197. package/dist/es/standards-sdk.es121.js.map +1 -1
  198. package/dist/es/standards-sdk.es122.js +419 -303
  199. package/dist/es/standards-sdk.es122.js.map +1 -1
  200. package/dist/es/standards-sdk.es123.js +351 -418
  201. package/dist/es/standards-sdk.es123.js.map +1 -1
  202. package/dist/es/standards-sdk.es124.js +872 -347
  203. package/dist/es/standards-sdk.es124.js.map +1 -1
  204. package/dist/es/standards-sdk.es125.js +182 -854
  205. package/dist/es/standards-sdk.es125.js.map +1 -1
  206. package/dist/es/standards-sdk.es126.js +1512 -153
  207. package/dist/es/standards-sdk.es126.js.map +1 -1
  208. package/dist/es/standards-sdk.es127.js +157 -1547
  209. package/dist/es/standards-sdk.es127.js.map +1 -1
  210. package/dist/es/standards-sdk.es128.js +184 -2190
  211. package/dist/es/standards-sdk.es128.js.map +1 -1
  212. package/dist/es/standards-sdk.es129.js +100 -63
  213. package/dist/es/standards-sdk.es129.js.map +1 -1
  214. package/dist/es/standards-sdk.es13.js +200 -60
  215. package/dist/es/standards-sdk.es13.js.map +1 -1
  216. package/dist/es/standards-sdk.es130.js +112 -78
  217. package/dist/es/standards-sdk.es130.js.map +1 -1
  218. package/dist/es/standards-sdk.es131.js +232 -144
  219. package/dist/es/standards-sdk.es131.js.map +1 -1
  220. package/dist/es/standards-sdk.es132.js +181 -8
  221. package/dist/es/standards-sdk.es132.js.map +1 -1
  222. package/dist/es/standards-sdk.es133.js +118 -82
  223. package/dist/es/standards-sdk.es133.js.map +1 -1
  224. package/dist/es/standards-sdk.es134.js +322 -61
  225. package/dist/es/standards-sdk.es134.js.map +1 -1
  226. package/dist/es/standards-sdk.es135.js +464 -28
  227. package/dist/es/standards-sdk.es135.js.map +1 -1
  228. package/dist/es/standards-sdk.es136.js +14 -135
  229. package/dist/es/standards-sdk.es136.js.map +1 -1
  230. package/dist/es/standards-sdk.es137.js +78 -39
  231. package/dist/es/standards-sdk.es137.js.map +1 -1
  232. package/dist/es/standards-sdk.es138.js +85 -764
  233. package/dist/es/standards-sdk.es138.js.map +1 -1
  234. package/dist/es/standards-sdk.es139.js +135 -12250
  235. package/dist/es/standards-sdk.es139.js.map +1 -1
  236. package/dist/es/standards-sdk.es14.js +149 -178
  237. package/dist/es/standards-sdk.es14.js.map +1 -1
  238. package/dist/es/standards-sdk.es140.js +7 -56
  239. package/dist/es/standards-sdk.es140.js.map +1 -1
  240. package/dist/es/standards-sdk.es141.js +72 -68
  241. package/dist/es/standards-sdk.es141.js.map +1 -1
  242. package/dist/es/standards-sdk.es142.js +61 -13
  243. package/dist/es/standards-sdk.es142.js.map +1 -1
  244. package/dist/es/standards-sdk.es143.js +30 -172
  245. package/dist/es/standards-sdk.es143.js.map +1 -1
  246. package/dist/es/standards-sdk.es144.js +34 -322
  247. package/dist/es/standards-sdk.es144.js.map +1 -1
  248. package/dist/es/standards-sdk.es145.js +28 -346
  249. package/dist/es/standards-sdk.es145.js.map +1 -1
  250. package/dist/es/standards-sdk.es146.js +112 -427
  251. package/dist/es/standards-sdk.es146.js.map +1 -1
  252. package/dist/es/standards-sdk.es147.js +40 -329
  253. package/dist/es/standards-sdk.es147.js.map +1 -1
  254. package/dist/es/standards-sdk.es148.js +12279 -66
  255. package/dist/es/standards-sdk.es148.js.map +1 -1
  256. package/dist/es/standards-sdk.es149.js +961 -0
  257. package/dist/es/standards-sdk.es149.js.map +1 -0
  258. package/dist/es/standards-sdk.es15.js +152 -151
  259. package/dist/es/standards-sdk.es15.js.map +1 -1
  260. package/dist/es/standards-sdk.es150.js +20 -0
  261. package/dist/es/standards-sdk.es150.js.map +1 -0
  262. package/dist/es/standards-sdk.es151.js +59 -0
  263. package/dist/es/standards-sdk.es151.js.map +1 -0
  264. package/dist/es/standards-sdk.es152.js +87 -0
  265. package/dist/es/standards-sdk.es152.js.map +1 -0
  266. package/dist/es/standards-sdk.es153.js +175 -0
  267. package/dist/es/standards-sdk.es153.js.map +1 -0
  268. package/dist/es/standards-sdk.es154.js +325 -0
  269. package/dist/es/standards-sdk.es154.js.map +1 -0
  270. package/dist/es/standards-sdk.es155.js +349 -0
  271. package/dist/es/standards-sdk.es155.js.map +1 -0
  272. package/dist/es/standards-sdk.es156.js +456 -0
  273. package/dist/es/standards-sdk.es156.js.map +1 -0
  274. package/dist/es/standards-sdk.es157.js +334 -0
  275. package/dist/es/standards-sdk.es157.js.map +1 -0
  276. package/dist/es/standards-sdk.es158.js +79 -0
  277. package/dist/es/standards-sdk.es158.js.map +1 -0
  278. package/dist/es/standards-sdk.es159.js +242 -0
  279. package/dist/es/standards-sdk.es159.js.map +1 -0
  280. package/dist/es/standards-sdk.es16.js +917 -136
  281. package/dist/es/standards-sdk.es16.js.map +1 -1
  282. package/dist/es/standards-sdk.es160.js +247 -0
  283. package/dist/es/standards-sdk.es160.js.map +1 -0
  284. package/dist/es/standards-sdk.es17.js +23 -938
  285. package/dist/es/standards-sdk.es17.js.map +1 -1
  286. package/dist/es/standards-sdk.es18.js +2422 -24
  287. package/dist/es/standards-sdk.es18.js.map +1 -1
  288. package/dist/es/standards-sdk.es19.js +826 -2075
  289. package/dist/es/standards-sdk.es19.js.map +1 -1
  290. package/dist/es/standards-sdk.es2.js +654 -189
  291. package/dist/es/standards-sdk.es2.js.map +1 -1
  292. package/dist/es/standards-sdk.es20.js +205 -1086
  293. package/dist/es/standards-sdk.es20.js.map +1 -1
  294. package/dist/es/standards-sdk.es21.js +858 -221
  295. package/dist/es/standards-sdk.es21.js.map +1 -1
  296. package/dist/es/standards-sdk.es22.js +179 -903
  297. package/dist/es/standards-sdk.es22.js.map +1 -1
  298. package/dist/es/standards-sdk.es23.js +164 -179
  299. package/dist/es/standards-sdk.es23.js.map +1 -1
  300. package/dist/es/standards-sdk.es24.js +62 -118
  301. package/dist/es/standards-sdk.es24.js.map +1 -1
  302. package/dist/es/standards-sdk.es25.js +377 -52
  303. package/dist/es/standards-sdk.es25.js.map +1 -1
  304. package/dist/es/standards-sdk.es26.js +36 -394
  305. package/dist/es/standards-sdk.es26.js.map +1 -1
  306. package/dist/es/standards-sdk.es27.js +901 -50
  307. package/dist/es/standards-sdk.es27.js.map +1 -1
  308. package/dist/es/standards-sdk.es28.js +134 -897
  309. package/dist/es/standards-sdk.es28.js.map +1 -1
  310. package/dist/es/standards-sdk.es29.js +7 -134
  311. package/dist/es/standards-sdk.es29.js.map +1 -1
  312. package/dist/es/standards-sdk.es3.js +63 -680
  313. package/dist/es/standards-sdk.es3.js.map +1 -1
  314. package/dist/es/standards-sdk.es30.js +344 -7
  315. package/dist/es/standards-sdk.es30.js.map +1 -1
  316. package/dist/es/standards-sdk.es31.js +302 -287
  317. package/dist/es/standards-sdk.es31.js.map +1 -1
  318. package/dist/es/standards-sdk.es32.js +94 -322
  319. package/dist/es/standards-sdk.es32.js.map +1 -1
  320. package/dist/es/standards-sdk.es33.js +458 -101
  321. package/dist/es/standards-sdk.es33.js.map +1 -1
  322. package/dist/es/standards-sdk.es34.js +132 -451
  323. package/dist/es/standards-sdk.es34.js.map +1 -1
  324. package/dist/es/standards-sdk.es35.js +216 -130
  325. package/dist/es/standards-sdk.es35.js.map +1 -1
  326. package/dist/es/standards-sdk.es36.js +274 -191
  327. package/dist/es/standards-sdk.es36.js.map +1 -1
  328. package/dist/es/standards-sdk.es37.js +148 -87
  329. package/dist/es/standards-sdk.es37.js.map +1 -1
  330. package/dist/es/standards-sdk.es38.js +183 -320
  331. package/dist/es/standards-sdk.es38.js.map +1 -1
  332. package/dist/es/standards-sdk.es39.js +238 -161
  333. package/dist/es/standards-sdk.es39.js.map +1 -1
  334. package/dist/es/standards-sdk.es4.js +425 -63
  335. package/dist/es/standards-sdk.es4.js.map +1 -1
  336. package/dist/es/standards-sdk.es40.js +136 -254
  337. package/dist/es/standards-sdk.es40.js.map +1 -1
  338. package/dist/es/standards-sdk.es41.js +225 -176
  339. package/dist/es/standards-sdk.es41.js.map +1 -1
  340. package/dist/es/standards-sdk.es42.js +199 -261
  341. package/dist/es/standards-sdk.es42.js.map +1 -1
  342. package/dist/es/standards-sdk.es43.js +237 -199
  343. package/dist/es/standards-sdk.es43.js.map +1 -1
  344. package/dist/es/standards-sdk.es44.js +209 -201
  345. package/dist/es/standards-sdk.es44.js.map +1 -1
  346. package/dist/es/standards-sdk.es45.js +305 -201
  347. package/dist/es/standards-sdk.es45.js.map +1 -1
  348. package/dist/es/standards-sdk.es46.js +371 -261
  349. package/dist/es/standards-sdk.es46.js.map +1 -1
  350. package/dist/es/standards-sdk.es47.js +316 -371
  351. package/dist/es/standards-sdk.es47.js.map +1 -1
  352. package/dist/es/standards-sdk.es48.js +404 -336
  353. package/dist/es/standards-sdk.es48.js.map +1 -1
  354. package/dist/es/standards-sdk.es49.js +83 -449
  355. package/dist/es/standards-sdk.es49.js.map +1 -1
  356. package/dist/es/standards-sdk.es5.js +232 -354
  357. package/dist/es/standards-sdk.es5.js.map +1 -1
  358. package/dist/es/standards-sdk.es50.js +179 -89
  359. package/dist/es/standards-sdk.es50.js.map +1 -1
  360. package/dist/es/standards-sdk.es51.js +231 -165
  361. package/dist/es/standards-sdk.es51.js.map +1 -1
  362. package/dist/es/standards-sdk.es52.js +25 -262
  363. package/dist/es/standards-sdk.es52.js.map +1 -1
  364. package/dist/es/standards-sdk.es53.js +56 -26
  365. package/dist/es/standards-sdk.es53.js.map +1 -1
  366. package/dist/es/standards-sdk.es54.js +12 -57
  367. package/dist/es/standards-sdk.es54.js.map +1 -1
  368. package/dist/es/standards-sdk.es55.js +49 -12
  369. package/dist/es/standards-sdk.es55.js.map +1 -1
  370. package/dist/es/standards-sdk.es56.js +115 -43
  371. package/dist/es/standards-sdk.es56.js.map +1 -1
  372. package/dist/es/standards-sdk.es57.js +42 -115
  373. package/dist/es/standards-sdk.es57.js.map +1 -1
  374. package/dist/es/standards-sdk.es58.js +52 -43
  375. package/dist/es/standards-sdk.es58.js.map +1 -1
  376. package/dist/es/standards-sdk.es59.js +36 -50
  377. package/dist/es/standards-sdk.es59.js.map +1 -1
  378. package/dist/es/standards-sdk.es6.js +125 -246
  379. package/dist/es/standards-sdk.es6.js.map +1 -1
  380. package/dist/es/standards-sdk.es60.js +207 -39
  381. package/dist/es/standards-sdk.es60.js.map +1 -1
  382. package/dist/es/standards-sdk.es61.js +24 -195
  383. package/dist/es/standards-sdk.es61.js.map +1 -1
  384. package/dist/es/standards-sdk.es62.js +87 -25
  385. package/dist/es/standards-sdk.es62.js.map +1 -1
  386. package/dist/es/standards-sdk.es63.js +3 -51
  387. package/dist/es/standards-sdk.es63.js.map +1 -1
  388. package/dist/es/standards-sdk.es64.js +100 -3
  389. package/dist/es/standards-sdk.es64.js.map +1 -1
  390. package/dist/es/standards-sdk.es65.js +61 -62
  391. package/dist/es/standards-sdk.es65.js.map +1 -1
  392. package/dist/es/standards-sdk.es66.js +17 -98
  393. package/dist/es/standards-sdk.es66.js.map +1 -1
  394. package/dist/es/standards-sdk.es67.js +77 -19
  395. package/dist/es/standards-sdk.es67.js.map +1 -1
  396. package/dist/es/standards-sdk.es68.js +458 -77
  397. package/dist/es/standards-sdk.es68.js.map +1 -1
  398. package/dist/es/standards-sdk.es69.js +106 -240
  399. package/dist/es/standards-sdk.es69.js.map +1 -1
  400. package/dist/es/standards-sdk.es7.js +28 -183
  401. package/dist/es/standards-sdk.es7.js.map +1 -1
  402. package/dist/es/standards-sdk.es70.js +170 -286
  403. package/dist/es/standards-sdk.es70.js.map +1 -1
  404. package/dist/es/standards-sdk.es71.js +71 -207
  405. package/dist/es/standards-sdk.es71.js.map +1 -1
  406. package/dist/es/standards-sdk.es72.js +71 -72
  407. package/dist/es/standards-sdk.es72.js.map +1 -1
  408. package/dist/es/standards-sdk.es73.js +143 -71
  409. package/dist/es/standards-sdk.es73.js.map +1 -1
  410. package/dist/es/standards-sdk.es74.js +62 -136
  411. package/dist/es/standards-sdk.es74.js.map +1 -1
  412. package/dist/es/standards-sdk.es75.js +380 -45
  413. package/dist/es/standards-sdk.es75.js.map +1 -1
  414. package/dist/es/standards-sdk.es76.js +222 -130
  415. package/dist/es/standards-sdk.es76.js.map +1 -1
  416. package/dist/es/standards-sdk.es77.js +320 -444
  417. package/dist/es/standards-sdk.es77.js.map +1 -1
  418. package/dist/es/standards-sdk.es78.js +88 -364
  419. package/dist/es/standards-sdk.es78.js.map +1 -1
  420. package/dist/es/standards-sdk.es79.js +125 -89
  421. package/dist/es/standards-sdk.es79.js.map +1 -1
  422. package/dist/es/standards-sdk.es8.js +80 -29
  423. package/dist/es/standards-sdk.es8.js.map +1 -1
  424. package/dist/es/standards-sdk.es80.js +8 -125
  425. package/dist/es/standards-sdk.es80.js.map +1 -1
  426. package/dist/es/standards-sdk.es81.js +45 -6
  427. package/dist/es/standards-sdk.es81.js.map +1 -1
  428. package/dist/es/standards-sdk.es82.js +98 -44
  429. package/dist/es/standards-sdk.es82.js.map +1 -1
  430. package/dist/es/standards-sdk.es83.js +331 -84
  431. package/dist/es/standards-sdk.es83.js.map +1 -1
  432. package/dist/es/standards-sdk.es84.js +93 -160
  433. package/dist/es/standards-sdk.es84.js.map +1 -1
  434. package/dist/es/standards-sdk.es85.js +55 -275
  435. package/dist/es/standards-sdk.es85.js.map +1 -1
  436. package/dist/es/standards-sdk.es86.js +43 -55
  437. package/dist/es/standards-sdk.es86.js.map +1 -1
  438. package/dist/es/standards-sdk.es87.js +145 -22
  439. package/dist/es/standards-sdk.es87.js.map +1 -1
  440. package/dist/es/standards-sdk.es88.js +34 -47
  441. package/dist/es/standards-sdk.es88.js.map +1 -1
  442. package/dist/es/standards-sdk.es89.js +22 -57
  443. package/dist/es/standards-sdk.es89.js.map +1 -1
  444. package/dist/es/standards-sdk.es9.js +104 -80
  445. package/dist/es/standards-sdk.es9.js.map +1 -1
  446. package/dist/es/standards-sdk.es90.js +23 -28
  447. package/dist/es/standards-sdk.es90.js.map +1 -1
  448. package/dist/es/standards-sdk.es91.js +238 -23
  449. package/dist/es/standards-sdk.es91.js.map +1 -1
  450. package/dist/es/standards-sdk.es92.js +265 -152
  451. package/dist/es/standards-sdk.es92.js.map +1 -1
  452. package/dist/es/standards-sdk.es93.js +95 -68
  453. package/dist/es/standards-sdk.es93.js.map +1 -1
  454. package/dist/es/standards-sdk.es94.js +124 -136
  455. package/dist/es/standards-sdk.es94.js.map +1 -1
  456. package/dist/es/standards-sdk.es95.js +42 -138
  457. package/dist/es/standards-sdk.es95.js.map +1 -1
  458. package/dist/es/standards-sdk.es96.js +259 -42
  459. package/dist/es/standards-sdk.es96.js.map +1 -1
  460. package/dist/es/standards-sdk.es97.js +82 -243
  461. package/dist/es/standards-sdk.es97.js.map +1 -1
  462. package/dist/es/standards-sdk.es98.js +48 -47
  463. package/dist/es/standards-sdk.es98.js.map +1 -1
  464. package/dist/es/standards-sdk.es99.js +29 -100
  465. package/dist/es/standards-sdk.es99.js.map +1 -1
  466. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  467. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  468. package/dist/es/utils/dynamic-import.d.ts +5 -1
  469. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  470. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  471. package/package.json +15 -16
  472. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  473. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  474. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  475. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1,477 +1,111 @@
1
- import { WasmExecutor } from "./standards-sdk.es52.js";
2
- import { HashLinkScanner } from "./standards-sdk.es50.js";
3
- import { HashLinkResolver } from "./standards-sdk.es51.js";
4
- class BlockRenderer {
5
- constructor(logger, gutenbergBridge, templateEngine, stateManager) {
6
- this.MAX_DEPTH = 10;
1
+ class HashLinkScanner {
2
+ constructor(logger) {
7
3
  this.logger = logger;
8
- this.gutenbergBridge = gutenbergBridge;
9
- this.templateEngine = templateEngine;
10
- this.stateManager = stateManager;
11
- this.hashLinkScanner = new HashLinkScanner(logger);
12
4
  }
13
5
  /**
14
- * Render a block
6
+ * Scan template for data-hashlink elements
15
7
  */
16
- async render(block, options = {}) {
17
- try {
18
- this.currentBlock = block;
19
- this.currentOptions = options;
20
- if (options.assembly) {
21
- this.assembly = options.assembly;
22
- }
23
- if (options.actionRegistry) {
24
- this.actionRegistry = options.actionRegistry;
25
- }
26
- if (options.network && !this.wasmExecutor) {
27
- this.wasmExecutor = new WasmExecutor(this.logger, options.network);
28
- }
29
- if (options.initialState) {
30
- this.stateManager.setBlockState(block.id, options.initialState);
31
- }
32
- let state = this.stateManager.getBlockState(block.id) || {
33
- attributes: {},
34
- actionResults: {}
35
- };
36
- if (!state.attributes || typeof state.attributes !== "object") {
37
- this.logger.warn("Invalid state structure, fixing...", { state });
38
- state = {
39
- attributes: state || {},
40
- actionResults: {}
41
- };
42
- }
43
- let actions = {};
44
- let attributes = block.attributes || {};
45
- if (this.assembly) {
46
- const assemblyBlock = this.assembly.state?.blocks?.find(
47
- (b) => b.block_t_id === block.id || b.block_t_id === block.t_id
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
48
21
  );
49
- if (assemblyBlock) {
50
- actions = assemblyBlock.actions || {};
51
- attributes = {
52
- ...assemblyBlock.attributes,
53
- ...attributes
54
- };
55
- }
56
- }
57
- const defaultAttributes = {};
58
- if (block.attributes) {
59
- Object.entries(block.attributes).forEach(
60
- ([key, attrDef]) => {
61
- if (attrDef && typeof attrDef === "object" && "default" in attrDef) {
62
- defaultAttributes[key] = attrDef.default;
63
- }
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
+ });
64
33
  }
34
+ }
35
+ const actionsMatch = otherAttributes.match(
36
+ /data-actions=(['"])((?:(?!\1).)*)\1/s
65
37
  );
66
- }
67
- const mergedAttributes = { ...defaultAttributes };
68
- if (attributes && typeof attributes === "object") {
69
- Object.entries(attributes).forEach(([key, value]) => {
70
- if (typeof value !== "object" || value === null) {
71
- mergedAttributes[key] = value;
72
- }
73
- });
74
- }
75
- if (state.attributes && typeof state.attributes === "object") {
76
- Object.entries(state.attributes).forEach(([key, value]) => {
77
- if (typeof value !== "object" || value === null) {
78
- mergedAttributes[key] = value;
79
- }
80
- });
81
- }
82
- state.attributes = { ...mergedAttributes };
83
- this.stateManager.setBlockState(block.id, state);
84
- const templateContext = {
85
- attributes: mergedAttributes,
86
- actions,
87
- blockId: block.id,
88
- actionResults: state.actionResults || {}
89
- };
90
- this.logger.debug("Template context", {
91
- blockId: block.id,
92
- attributes: templateContext.attributes,
93
- hasActions: !!actions,
94
- actionKeys: Object.keys(actions),
95
- rawState: state,
96
- mergedAttributes
97
- });
98
- let html = await this.templateEngine.render(
99
- block.template || "",
100
- templateContext
101
- );
102
- if (this.shouldProcessHashLinks(options)) {
103
- html = await this.processHashLinks(html, block, options);
104
- }
105
- if (options.container && typeof window !== "undefined") {
106
- const container = typeof options.container === "string" ? document.querySelector(options.container) : options.container;
107
- if (container instanceof HTMLElement) {
108
- container.innerHTML = html;
109
- if (block.styles) {
110
- this.applyStyles(block.id, block.styles);
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
+ });
111
49
  }
112
- this.setupEventHandlers(container, block.id);
113
- return {
114
- element: container,
115
- html,
116
- cleanup: () => this.cleanup(block.id)
117
- };
118
50
  }
119
- }
120
- return { html };
121
- } catch (error) {
122
- this.logger.error("Block render failed", {
123
- blockId: block.id,
124
- error
125
- });
126
- throw error;
127
- }
128
- }
129
- /**
130
- * Apply block styles
131
- */
132
- applyStyles(blockId, styles) {
133
- if (typeof document === "undefined") return;
134
- const styleId = `hashlink-styles-${blockId}`;
135
- let styleElement = document.getElementById(styleId);
136
- if (!styleElement) {
137
- styleElement = document.createElement("style");
138
- styleElement.id = styleId;
139
- document.head.appendChild(styleElement);
140
- }
141
- styleElement.textContent = styles;
142
- }
143
- /**
144
- * Setup event handlers for block
145
- */
146
- setupEventHandlers(container, blockId) {
147
- this.stateManager.onStateChange(blockId, (state) => {
148
- this.updateBlockUI(container, state);
149
- });
150
- container.querySelectorAll("[data-action]").forEach((element) => {
151
- element.addEventListener("click", async (e) => {
152
- e.preventDefault();
153
- const actionTopicId = element.dataset.action;
154
- const paramsStr = element.dataset.params;
155
- this.logger.debug("Action button clicked", {
156
- actionTopicId,
157
- paramsStr,
158
- hasAction: !!actionTopicId
159
- });
160
- if (actionTopicId) {
161
- await this.executeAction(blockId, actionTopicId, paramsStr);
162
- }
163
- });
164
- });
165
- }
166
- /**
167
- * Update the block display by re-rendering with new state
168
- */
169
- async updateBlockDisplay(blockId, newState) {
170
- try {
171
- this.logger.debug("updateBlockDisplay called", { blockId, newState });
172
- const blockElement = document.querySelector(
173
- `[data-block-id="${blockId}"]`
174
- );
175
- if (!blockElement || !blockElement.parentElement) {
176
- this.logger.warn("Block element not found for re-render", { blockId });
177
- return;
178
- }
179
- const container = blockElement.parentElement;
180
- if (this.currentBlock && this.currentBlock.id === blockId && this.currentOptions) {
181
- const updatedOptions = {
182
- ...this.currentOptions,
183
- container,
184
- initialState: newState
185
- };
186
- const renderResult = await this.render(
187
- this.currentBlock,
188
- updatedOptions
51
+ const loadingMatch = otherAttributes.match(
52
+ /data-loading=['"]([^'"]+)['"]/
189
53
  );
190
- this.logger.debug("Block re-rendered with updated state", {
191
- blockId,
192
- newState
193
- });
194
- } else {
195
- }
196
- } catch (error) {
197
- this.logger.error("Failed to re-render block", {
198
- blockId,
199
- error: error.message
200
- });
201
- }
202
- }
203
- /**
204
- * Execute a WASM action
205
- */
206
- async executeAction(blockId, actionTopicId, paramsStr) {
207
- try {
208
- this.logger.debug("Executing action", { blockId, actionTopicId });
209
- let params = {};
210
- if (paramsStr) {
211
- try {
212
- params = JSON.parse(paramsStr);
213
- } catch (e) {
214
- this.logger.warn("Failed to parse action params", { paramsStr });
215
- }
216
- }
217
- const currentState = this.stateManager.getBlockState(blockId) || {
218
- attributes: {},
219
- actionResults: {}
220
- };
221
- if (this.wasmExecutor && this.actionRegistry) {
222
- this.logger.debug("Looking up action in registry", { actionTopicId });
223
- const action = await this.actionRegistry.getActionByTopicId(actionTopicId);
224
- this.logger.debug("Action lookup result", {
225
- found: !!action,
226
- actionTopicId,
227
- actionData: action
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
228
63
  });
229
- if (!action) {
230
- throw new Error(`Action not found: ${actionTopicId}`);
231
- }
232
- this.logger.debug("Executing WASM", {
233
- actionData: action,
234
- params,
235
- state: currentState.attributes
236
- });
237
- const result = await this.wasmExecutor.execute(action, {
238
- method: "POST",
239
- params,
240
- state: currentState.attributes
241
- });
242
- this.logger.debug("WASM execution result", { result });
243
- if (result.success && result.data) {
244
- const operation = params.operation || "default";
245
- let wasmData = result.data;
246
- if (wasmData.success && wasmData.data) {
247
- wasmData = wasmData.data;
248
- }
249
- const newState = {
250
- ...currentState,
251
- attributes: {
252
- ...currentState.attributes,
253
- ...wasmData
254
- },
255
- actionResults: {
256
- ...currentState.actionResults,
257
- [operation]: wasmData
258
- }
259
- };
260
- this.stateManager.updateBlockState(blockId, newState);
261
- await this.updateBlockDisplay(blockId, newState);
262
- } else {
263
- this.logger.error("Action execution failed", { result });
264
- }
265
- } else {
266
- this.stateManager.sendMessage(blockId, "action", {
267
- action: actionTopicId,
268
- params
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
269
69
  });
270
70
  }
271
- } catch (error) {
272
- this.logger.error("Failed to execute action", {
273
- blockId,
274
- actionTopicId,
275
- error: error.message
276
- });
277
- this.stateManager.sendMessage(blockId, "action-error", {
278
- action: actionTopicId,
279
- error: error.message
280
- });
281
71
  }
72
+ return references;
282
73
  }
283
74
  /**
284
- * Update block UI on state change
75
+ * Parse HashLink URI into components
285
76
  */
286
- updateBlockUI(container, state) {
287
- Object.entries(state).forEach(([key, value]) => {
288
- const elements = container.querySelectorAll(`[data-bind="${key}"]`);
289
- elements.forEach((element) => {
290
- if (element instanceof HTMLElement) {
291
- element.textContent = String(value);
292
- }
293
- });
294
- });
295
- }
296
- /**
297
- * Cleanup block resources
298
- */
299
- cleanup(blockId) {
300
- const styleElement = document.getElementById(`hashlink-styles-${blockId}`);
301
- if (styleElement) {
302
- styleElement.remove();
303
- }
304
- this.stateManager.removeBlockState(blockId);
305
- }
306
- /**
307
- * Check if HashLink processing should be enabled
308
- */
309
- shouldProcessHashLinks(options) {
310
- const depth = options.depth || 0;
311
- const maxDepth = options.maxDepth || this.MAX_DEPTH;
312
- if (depth >= maxDepth) {
313
- this.logger.warn(
314
- "Max render depth reached, skipping HashLink processing",
315
- {
316
- depth,
317
- maxDepth
318
- }
319
- );
320
- return false;
77
+ parseHashLinkURI(uri) {
78
+ const uriMatch = uri.match(/^hcs:\/\/(\d+)\/(.+)$/);
79
+ if (!uriMatch) {
80
+ throw new Error(`Invalid HashLink URI format: ${uri}`);
321
81
  }
322
- return !!(options.network && (options.blockLoader || this.blockLoader));
323
- }
324
- /**
325
- * Initialize HashLink resolver if needed
326
- */
327
- ensureHashLinkResolver(options) {
328
- if (!this.hashLinkResolver && options.network) {
329
- this.blockLoader = options.blockLoader || this.blockLoader;
330
- this.hrlResolver = options.hrlResolver || this.hrlResolver;
331
- if (this.blockLoader && this.hrlResolver) {
332
- this.hashLinkResolver = new HashLinkResolver(
333
- this.logger,
334
- this.blockLoader,
335
- this.hrlResolver,
336
- options.network
337
- );
338
- }
339
- }
340
- }
341
- /**
342
- * Process HashLinks in rendered HTML
343
- */
344
- async processHashLinks(html, parentBlock, options) {
345
- this.ensureHashLinkResolver(options);
346
- if (!this.hashLinkResolver) {
347
- this.logger.warn("HashLink resolver not available, skipping processing");
348
- return html;
349
- }
350
- this.hashLinkResolver.pushRenderStack(parentBlock.id);
351
- try {
352
- const references = await this.hashLinkScanner.scanTemplate(html);
353
- if (references.length === 0) {
354
- return html;
355
- }
356
- this.logger.debug("Processing HashLinks", {
357
- parentBlockId: parentBlock.id,
358
- referenceCount: references.length
359
- });
360
- const parentContext = {
361
- blockId: parentBlock.id,
362
- depth: (options.depth || 0) + 1,
363
- parentContext: options.parentContext,
364
- attributes: options.initialState?.attributes || {},
365
- actions: {},
366
- assembly: this.assembly,
367
- maxDepth: options.maxDepth || this.MAX_DEPTH
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}`);
88
+ }
89
+ return {
90
+ protocol,
91
+ reference: referencePath,
92
+ registryId: parts[0],
93
+ entryName: parts[1]
368
94
  };
369
- if (this.assembly) {
370
- const assemblyBlock = this.assembly.state?.blocks?.find(
371
- (b) => b.block_t_id === parentBlock.id || b.block_t_id === parentBlock.t_id
372
- );
373
- if (assemblyBlock?.actions) {
374
- parentContext.actions = assemblyBlock.actions;
375
- }
376
- }
377
- let processedHtml = html;
378
- for (let i = 0; i < references.length; i++) {
379
- const ref = references[i];
380
- try {
381
- const resolved = await this.hashLinkResolver.resolveReference(
382
- ref,
383
- parentContext
384
- );
385
- if (resolved.error) {
386
- this.logger.error("Failed to resolve HashLink", {
387
- uri: ref.uri,
388
- error: resolved.error
389
- });
390
- const errorHtml = `<!-- HashLink Error: ${resolved.error} -->`;
391
- processedHtml = processedHtml.replace(ref.placeholder, errorHtml);
392
- continue;
393
- }
394
- let childHtml;
395
- if (resolved.definition) {
396
- const childBlock = {
397
- id: resolved.blockId,
398
- template: resolved.template || "",
399
- attributes: resolved.definition.attributes,
400
- p: "hcs-12",
401
- op: "register",
402
- name: resolved.definition.name,
403
- version: "1.0.0",
404
- title: resolved.definition.title,
405
- description: resolved.definition.description
406
- };
407
- const childState = {
408
- attributes: resolved.attributes,
409
- actionResults: {}
410
- };
411
- const childTemplateContext = {
412
- attributes: resolved.attributes,
413
- actions: resolved.actions,
414
- blockId: resolved.blockId,
415
- actionResults: {}
416
- };
417
- if (resolved.template) {
418
- childHtml = await this.templateEngine.render(
419
- resolved.template,
420
- childTemplateContext
421
- );
422
- const childOptions = {
423
- ...options,
424
- depth: parentContext.depth,
425
- parentContext,
426
- initialState: childState
427
- };
428
- if (this.shouldProcessHashLinks(childOptions)) {
429
- childHtml = await this.processHashLinks(
430
- childHtml,
431
- childBlock,
432
- childOptions
433
- );
434
- }
435
- } else {
436
- childHtml = "<!-- Block has no template -->";
437
- }
438
- } else if (resolved.template) {
439
- childHtml = resolved.template;
440
- } else {
441
- childHtml = "<!-- Empty block -->";
442
- }
443
- if (ref.loading === "lazy") {
444
- childHtml = this.wrapLazyLoad(childHtml, ref);
445
- }
446
- processedHtml = processedHtml.replace(ref.placeholder, childHtml);
447
- } catch (error) {
448
- this.logger.error("Error processing HashLink", {
449
- uri: ref.uri,
450
- error: error.message
451
- });
452
- const errorHtml = `<!-- HashLink Error: ${error.message} -->`;
453
- processedHtml = processedHtml.replace(ref.placeholder, errorHtml);
454
- }
455
- }
456
- return processedHtml;
457
- } finally {
458
- this.hashLinkResolver.popRenderStack(parentBlock.id);
459
95
  }
96
+ return {
97
+ protocol,
98
+ reference: referencePath
99
+ };
460
100
  }
461
101
  /**
462
- * Wrap content for lazy loading
102
+ * Create a unique placeholder for replacement
463
103
  */
464
- wrapLazyLoad(html, ref) {
465
- const wrapperId = `lazy-${ref.uri.replace(/[^a-zA-Z0-9]/g, "-")}`;
466
- return `
467
- <div id="${wrapperId}" class="hashlink-lazy-container" data-hashlink-lazy="${ref.uri}">
468
- <div class="hashlink-lazy-placeholder">Loading...</div>
469
- <template class="hashlink-lazy-content">${html}</template>
470
- </div>
471
- `;
104
+ createPlaceholder(ref, index) {
105
+ return `<!-- HASHLINK_PLACEHOLDER_${index}_${ref.uri.replace(/[^a-zA-Z0-9]/g, "_")} -->`;
472
106
  }
473
107
  }
474
108
  export {
475
- BlockRenderer
109
+ HashLinkScanner
476
110
  };
477
111
  //# sourceMappingURL=standards-sdk.es49.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es49.js","sources":["../../src/hcs-12/rendering/block-renderer.ts"],"sourcesContent":["/**\n * Block Renderer for HCS-12 HashLinks\n *\n * Renders Gutenberg blocks with HashLink integration\n */\n\nimport { Logger } from '../../utils/logger';\nimport { GutenbergBridge } from './gutenberg-bridge';\nimport { TemplateEngine, TemplateContext } from './template-engine';\nimport { BlockStateManager, BlockState } from './block-state-manager';\nimport { GutenbergBlockType, ActionRegistration } from '../types';\nimport { WasmExecutor } from '../wasm/wasm-executor';\nimport { NetworkType } from '../../utils/types';\nimport type { ActionRegistry } from '../registries/action-registry';\nimport type { Assembly } from '../assembly/assembly-engine';\nimport { HashLinkScanner } from './hashlink-scanner';\nimport { HashLinkResolver, RenderContext } from './hashlink-resolver';\nimport { BlockLoader } from '../registries/block-loader';\nimport { HRLResolver } from '../../utils/hrl-resolver';\n\nexport interface BlockDefinitionWithUI {\n id: string;\n template?: string;\n attributes?: Record<string, any>;\n styles?: string;\n\n p: 'hcs-12';\n op: 'register' | 'template' | 'pattern';\n name: string;\n version: string;\n blockJson?: GutenbergBlockType;\n t_id?: string;\n title?: string;\n description?: string;\n categories?: string[];\n content?: string | Record<string, any> | any[];\n}\n\nexport interface RenderOptions {\n container?: string | HTMLElement;\n initialState?: BlockState;\n theme?: 'light' | 'dark';\n responsive?: boolean;\n assembly?: Assembly;\n actionRegistry?: ActionRegistry;\n network?: NetworkType;\n depth?: number;\n maxDepth?: number;\n parentContext?: RenderContext;\n blockLoader?: BlockLoader;\n hrlResolver?: HRLResolver;\n}\n\nexport interface RenderResult {\n element?: HTMLElement;\n html?: string;\n cleanup?: () => void;\n}\n\n/**\n * Renders HashLink blocks to DOM or HTML\n */\nexport class BlockRenderer {\n private logger: Logger;\n private gutenbergBridge: GutenbergBridge;\n private templateEngine: TemplateEngine;\n private stateManager: BlockStateManager;\n private wasmExecutor?: WasmExecutor;\n private currentBlock?: BlockDefinitionWithUI;\n private currentOptions?: RenderOptions;\n private assembly?: Assembly;\n private actionRegistry?: ActionRegistry;\n private hashLinkScanner: HashLinkScanner;\n private hashLinkResolver?: HashLinkResolver;\n private blockLoader?: BlockLoader;\n private hrlResolver?: HRLResolver;\n private readonly MAX_DEPTH = 10;\n\n constructor(\n logger: Logger,\n gutenbergBridge: GutenbergBridge,\n templateEngine: TemplateEngine,\n stateManager: BlockStateManager,\n ) {\n this.logger = logger;\n this.gutenbergBridge = gutenbergBridge;\n this.templateEngine = templateEngine;\n this.stateManager = stateManager;\n this.hashLinkScanner = new HashLinkScanner(logger);\n }\n\n /**\n * Render a block\n */\n async render(\n block: BlockDefinitionWithUI,\n options: RenderOptions = {},\n ): Promise<RenderResult> {\n try {\n this.currentBlock = block;\n this.currentOptions = options;\n\n if (options.assembly) {\n this.assembly = options.assembly;\n }\n if (options.actionRegistry) {\n this.actionRegistry = options.actionRegistry;\n }\n\n if (options.network && !this.wasmExecutor) {\n this.wasmExecutor = new WasmExecutor(this.logger, options.network);\n }\n\n if (options.initialState) {\n this.stateManager.setBlockState(block.id, options.initialState);\n }\n\n let state = this.stateManager.getBlockState(block.id) || {\n attributes: {},\n actionResults: {},\n };\n\n if (!state.attributes || typeof state.attributes !== 'object') {\n this.logger.warn('Invalid state structure, fixing...', { state });\n state = {\n attributes: (state as any) || {},\n actionResults: {},\n };\n }\n\n let actions = {};\n let attributes = block.attributes || {};\n\n if (this.assembly) {\n const assemblyBlock = this.assembly.state?.blocks?.find(\n b => b.block_t_id === block.id || b.block_t_id === block.t_id,\n );\n\n if (assemblyBlock) {\n actions = assemblyBlock.actions || {};\n attributes = {\n ...assemblyBlock.attributes,\n ...attributes,\n };\n }\n }\n\n const defaultAttributes: Record<string, any> = {};\n if (block.attributes) {\n Object.entries(block.attributes).forEach(\n ([key, attrDef]: [string, any]) => {\n if (\n attrDef &&\n typeof attrDef === 'object' &&\n 'default' in attrDef\n ) {\n defaultAttributes[key] = attrDef.default;\n }\n },\n );\n }\n\n const mergedAttributes: Record<string, any> = { ...defaultAttributes };\n\n if (attributes && typeof attributes === 'object') {\n Object.entries(attributes).forEach(([key, value]) => {\n if (typeof value !== 'object' || value === null) {\n mergedAttributes[key] = value;\n }\n });\n }\n\n if (state.attributes && typeof state.attributes === 'object') {\n Object.entries(state.attributes).forEach(([key, value]) => {\n if (typeof value !== 'object' || value === null) {\n mergedAttributes[key] = value;\n }\n });\n }\n\n state.attributes = { ...mergedAttributes };\n this.stateManager.setBlockState(block.id, state);\n\n const templateContext = {\n attributes: mergedAttributes,\n actions,\n blockId: block.id,\n actionResults: state.actionResults || {},\n };\n\n this.logger.debug('Template context', {\n blockId: block.id,\n attributes: templateContext.attributes,\n hasActions: !!actions,\n actionKeys: Object.keys(actions),\n rawState: state,\n mergedAttributes: mergedAttributes,\n });\n\n let html = await this.templateEngine.render(\n block.template || '',\n templateContext,\n );\n\n if (this.shouldProcessHashLinks(options)) {\n html = await this.processHashLinks(html, block, options);\n }\n\n if (options.container && typeof window !== 'undefined') {\n const container =\n typeof options.container === 'string'\n ? document.querySelector(options.container)\n : options.container;\n\n if (container instanceof HTMLElement) {\n container.innerHTML = html;\n\n if (block.styles) {\n this.applyStyles(block.id, block.styles);\n }\n\n this.setupEventHandlers(container, block.id);\n\n return {\n element: container,\n html,\n cleanup: () => this.cleanup(block.id),\n };\n }\n }\n\n return { html };\n } catch (error) {\n this.logger.error('Block render failed', {\n blockId: block.id,\n error,\n });\n throw error;\n }\n }\n\n /**\n * Apply block styles\n */\n private applyStyles(blockId: string, styles: string): void {\n if (typeof document === 'undefined') return;\n\n const styleId = `hashlink-styles-${blockId}`;\n let styleElement = document.getElementById(styleId);\n\n if (!styleElement) {\n styleElement = document.createElement('style');\n styleElement.id = styleId;\n document.head.appendChild(styleElement);\n }\n\n styleElement.textContent = styles;\n }\n\n /**\n * Setup event handlers for block\n */\n private setupEventHandlers(container: HTMLElement, blockId: string): void {\n this.stateManager.onStateChange(blockId, state => {\n this.updateBlockUI(container, state);\n });\n\n container.querySelectorAll('[data-action]').forEach(element => {\n element.addEventListener('click', async e => {\n e.preventDefault();\n const actionTopicId = (element as HTMLElement).dataset.action;\n const paramsStr = (element as HTMLElement).dataset.params;\n\n this.logger.debug('Action button clicked', {\n actionTopicId,\n paramsStr,\n hasAction: !!actionTopicId,\n });\n\n if (actionTopicId) {\n await this.executeAction(blockId, actionTopicId, paramsStr);\n }\n });\n });\n }\n\n /**\n * Update the block display by re-rendering with new state\n */\n private async updateBlockDisplay(\n blockId: string,\n newState: BlockState,\n ): Promise<void> {\n try {\n this.logger.debug('updateBlockDisplay called', { blockId, newState });\n\n const blockElement = document.querySelector(\n `[data-block-id=\"${blockId}\"]`,\n );\n\n if (!blockElement || !blockElement.parentElement) {\n this.logger.warn('Block element not found for re-render', { blockId });\n return;\n }\n\n const container = blockElement.parentElement;\n\n if (\n this.currentBlock &&\n this.currentBlock.id === blockId &&\n this.currentOptions\n ) {\n const updatedOptions = {\n ...this.currentOptions,\n container,\n initialState: newState,\n };\n\n const renderResult = await this.render(\n this.currentBlock,\n updatedOptions,\n );\n\n this.logger.debug('Block re-rendered with updated state', {\n blockId,\n newState,\n });\n } else {\n }\n } catch (error) {\n this.logger.error('Failed to re-render block', {\n blockId,\n error: error.message,\n });\n }\n }\n\n /**\n * Execute a WASM action\n */\n private async executeAction(\n blockId: string,\n actionTopicId: string,\n paramsStr?: string,\n ): Promise<void> {\n try {\n this.logger.debug('Executing action', { blockId, actionTopicId });\n\n let params = {};\n if (paramsStr) {\n try {\n params = JSON.parse(paramsStr);\n } catch (e) {\n this.logger.warn('Failed to parse action params', { paramsStr });\n }\n }\n\n const currentState = this.stateManager.getBlockState(blockId) || {\n attributes: {},\n actionResults: {},\n };\n\n if (this.wasmExecutor && this.actionRegistry) {\n this.logger.debug('Looking up action in registry', { actionTopicId });\n\n const action =\n await this.actionRegistry.getActionByTopicId(actionTopicId);\n\n this.logger.debug('Action lookup result', {\n found: !!action,\n actionTopicId,\n actionData: action,\n });\n\n if (!action) {\n throw new Error(`Action not found: ${actionTopicId}`);\n }\n\n this.logger.debug('Executing WASM', {\n actionData: action,\n params,\n state: currentState.attributes,\n });\n\n const result = await this.wasmExecutor.execute(action, {\n method: 'POST',\n params,\n state: currentState.attributes,\n });\n\n this.logger.debug('WASM execution result', { result });\n\n if (result.success && result.data) {\n const operation = (params as any).operation || 'default';\n\n let wasmData = result.data;\n if (wasmData.success && wasmData.data) {\n wasmData = wasmData.data;\n }\n\n const newState = {\n ...currentState,\n attributes: {\n ...currentState.attributes,\n ...wasmData,\n },\n actionResults: {\n ...currentState.actionResults,\n [operation]: wasmData,\n },\n };\n\n this.stateManager.updateBlockState(blockId, newState);\n\n await this.updateBlockDisplay(blockId, newState);\n } else {\n this.logger.error('Action execution failed', { result });\n }\n } else {\n this.stateManager.sendMessage(blockId, 'action', {\n action: actionTopicId,\n params,\n });\n }\n } catch (error) {\n this.logger.error('Failed to execute action', {\n blockId,\n actionTopicId,\n error: error.message,\n });\n\n this.stateManager.sendMessage(blockId, 'action-error', {\n action: actionTopicId,\n error: error.message,\n });\n }\n }\n\n /**\n * Update block UI on state change\n */\n private updateBlockUI(container: HTMLElement, state: BlockState): void {\n Object.entries(state).forEach(([key, value]) => {\n const elements = container.querySelectorAll(`[data-bind=\"${key}\"]`);\n elements.forEach(element => {\n if (element instanceof HTMLElement) {\n element.textContent = String(value);\n }\n });\n });\n }\n\n /**\n * Cleanup block resources\n */\n private cleanup(blockId: string): void {\n const styleElement = document.getElementById(`hashlink-styles-${blockId}`);\n if (styleElement) {\n styleElement.remove();\n }\n\n this.stateManager.removeBlockState(blockId);\n }\n\n /**\n * Check if HashLink processing should be enabled\n */\n private shouldProcessHashLinks(options: RenderOptions): boolean {\n const depth = options.depth || 0;\n const maxDepth = options.maxDepth || this.MAX_DEPTH;\n\n if (depth >= maxDepth) {\n this.logger.warn(\n 'Max render depth reached, skipping HashLink processing',\n {\n depth,\n maxDepth,\n },\n );\n return false;\n }\n\n return !!(options.network && (options.blockLoader || this.blockLoader));\n }\n\n /**\n * Initialize HashLink resolver if needed\n */\n private ensureHashLinkResolver(options: RenderOptions): void {\n if (!this.hashLinkResolver && options.network) {\n this.blockLoader = options.blockLoader || this.blockLoader;\n this.hrlResolver = options.hrlResolver || this.hrlResolver;\n\n if (this.blockLoader && this.hrlResolver) {\n this.hashLinkResolver = new HashLinkResolver(\n this.logger,\n this.blockLoader,\n this.hrlResolver,\n options.network,\n );\n }\n }\n }\n\n /**\n * Process HashLinks in rendered HTML\n */\n private async processHashLinks(\n html: string,\n parentBlock: BlockDefinitionWithUI,\n options: RenderOptions,\n ): Promise<string> {\n this.ensureHashLinkResolver(options);\n\n if (!this.hashLinkResolver) {\n this.logger.warn('HashLink resolver not available, skipping processing');\n return html;\n }\n\n this.hashLinkResolver.pushRenderStack(parentBlock.id);\n\n try {\n const references = await this.hashLinkScanner.scanTemplate(html);\n\n if (references.length === 0) {\n return html;\n }\n\n this.logger.debug('Processing HashLinks', {\n parentBlockId: parentBlock.id,\n referenceCount: references.length,\n });\n\n const parentContext: RenderContext = {\n blockId: parentBlock.id,\n depth: (options.depth || 0) + 1,\n parentContext: options.parentContext,\n attributes: options.initialState?.attributes || {},\n actions: {},\n assembly: this.assembly,\n maxDepth: options.maxDepth || this.MAX_DEPTH,\n };\n\n if (this.assembly) {\n const assemblyBlock = this.assembly.state?.blocks?.find(\n b =>\n b.block_t_id === parentBlock.id ||\n b.block_t_id === parentBlock.t_id,\n );\n if (assemblyBlock?.actions) {\n parentContext.actions = assemblyBlock.actions;\n }\n }\n\n let processedHtml = html;\n\n for (let i = 0; i < references.length; i++) {\n const ref = references[i];\n\n try {\n const resolved = await this.hashLinkResolver.resolveReference(\n ref,\n parentContext,\n );\n\n if (resolved.error) {\n this.logger.error('Failed to resolve HashLink', {\n uri: ref.uri,\n error: resolved.error,\n });\n\n const errorHtml = `<!-- HashLink Error: ${resolved.error} -->`;\n processedHtml = processedHtml.replace(ref.placeholder, errorHtml);\n continue;\n }\n\n let childHtml: string;\n\n if (resolved.definition) {\n const childBlock: BlockDefinitionWithUI = {\n id: resolved.blockId,\n template: resolved.template || '',\n attributes: resolved.definition.attributes,\n p: 'hcs-12',\n op: 'register',\n name: resolved.definition.name,\n version: '1.0.0',\n title: resolved.definition.title,\n description: resolved.definition.description,\n };\n\n const childState = {\n attributes: resolved.attributes,\n actionResults: {},\n };\n\n const childTemplateContext = {\n attributes: resolved.attributes,\n actions: resolved.actions,\n blockId: resolved.blockId,\n actionResults: {},\n };\n\n if (resolved.template) {\n childHtml = await this.templateEngine.render(\n resolved.template,\n childTemplateContext,\n );\n\n const childOptions: RenderOptions = {\n ...options,\n depth: parentContext.depth,\n parentContext,\n initialState: childState,\n };\n\n if (this.shouldProcessHashLinks(childOptions)) {\n childHtml = await this.processHashLinks(\n childHtml,\n childBlock,\n childOptions,\n );\n }\n } else {\n childHtml = '<!-- Block has no template -->';\n }\n } else if (resolved.template) {\n childHtml = resolved.template;\n } else {\n childHtml = '<!-- Empty block -->';\n }\n\n if (ref.loading === 'lazy') {\n childHtml = this.wrapLazyLoad(childHtml, ref);\n }\n\n processedHtml = processedHtml.replace(ref.placeholder, childHtml);\n } catch (error) {\n this.logger.error('Error processing HashLink', {\n uri: ref.uri,\n error: error.message,\n });\n\n const errorHtml = `<!-- HashLink Error: ${error.message} -->`;\n processedHtml = processedHtml.replace(ref.placeholder, errorHtml);\n }\n }\n\n return processedHtml;\n } finally {\n this.hashLinkResolver.popRenderStack(parentBlock.id);\n }\n }\n\n /**\n * Wrap content for lazy loading\n */\n private wrapLazyLoad(html: string, ref: any): string {\n const wrapperId = `lazy-${ref.uri.replace(/[^a-zA-Z0-9]/g, '-')}`;\n return `\n <div id=\"${wrapperId}\" class=\"hashlink-lazy-container\" data-hashlink-lazy=\"${ref.uri}\">\n <div class=\"hashlink-lazy-placeholder\">Loading...</div>\n <template class=\"hashlink-lazy-content\">${html}</template>\n </div>\n `;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es49.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;"}