@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,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;"}