@hashgraphonline/standards-sdk 0.1.183 → 0.1.185

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 (289) hide show
  1. package/dist/browser/hcs-25/identifiers.d.ts +24 -0
  2. package/dist/browser/hcs-25/identifiers.d.ts.map +1 -0
  3. package/dist/browser/hcs-25/index.d.ts +4 -0
  4. package/dist/browser/hcs-25/index.d.ts.map +1 -0
  5. package/dist/browser/hcs-25/scoring.d.ts +32 -0
  6. package/dist/browser/hcs-25/scoring.d.ts.map +1 -0
  7. package/dist/browser/hcs-25/types.d.ts +363 -0
  8. package/dist/browser/hcs-25/types.d.ts.map +1 -0
  9. package/dist/browser/index.d.ts +1 -0
  10. package/dist/browser/index.d.ts.map +1 -1
  11. package/dist/browser/services/registry-broker/index.d.ts +1 -0
  12. package/dist/browser/services/registry-broker/index.d.ts.map +1 -1
  13. package/dist/browser/services/registry-broker/schemas.d.ts +6 -0
  14. package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
  15. package/dist/browser/services/registry-broker/types.d.ts +7 -1
  16. package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
  17. package/dist/browser/standards-sdk.browser.js.map +1 -1
  18. package/dist/browser-root/hcs-25/identifiers.d.ts +24 -0
  19. package/dist/browser-root/hcs-25/identifiers.d.ts.map +1 -0
  20. package/dist/browser-root/hcs-25/index.d.ts +4 -0
  21. package/dist/browser-root/hcs-25/index.d.ts.map +1 -0
  22. package/dist/browser-root/hcs-25/scoring.d.ts +32 -0
  23. package/dist/browser-root/hcs-25/scoring.d.ts.map +1 -0
  24. package/dist/browser-root/hcs-25/types.d.ts +363 -0
  25. package/dist/browser-root/hcs-25/types.d.ts.map +1 -0
  26. package/dist/browser-root/index.d.ts +1 -0
  27. package/dist/browser-root/index.d.ts.map +1 -1
  28. package/dist/browser-root/services/registry-broker/index.d.ts +1 -0
  29. package/dist/browser-root/services/registry-broker/index.d.ts.map +1 -1
  30. package/dist/browser-root/services/registry-broker/schemas.d.ts +6 -0
  31. package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
  32. package/dist/browser-root/services/registry-broker/types.d.ts +7 -1
  33. package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
  34. package/dist/browser-root/standards-sdk.root-browser.js +8 -1
  35. package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
  36. package/dist/cjs/hcs-25/identifiers.d.ts +24 -0
  37. package/dist/cjs/hcs-25/identifiers.d.ts.map +1 -0
  38. package/dist/cjs/hcs-25/index.d.ts +4 -0
  39. package/dist/cjs/hcs-25/index.d.ts.map +1 -0
  40. package/dist/cjs/hcs-25/scoring.d.ts +32 -0
  41. package/dist/cjs/hcs-25/scoring.d.ts.map +1 -0
  42. package/dist/cjs/hcs-25/types.d.ts +363 -0
  43. package/dist/cjs/hcs-25/types.d.ts.map +1 -0
  44. package/dist/cjs/index.d.ts +1 -0
  45. package/dist/cjs/index.d.ts.map +1 -1
  46. package/dist/cjs/services/registry-broker/index.d.ts +1 -0
  47. package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
  48. package/dist/cjs/services/registry-broker/schemas.d.ts +6 -0
  49. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  50. package/dist/cjs/services/registry-broker/types.d.ts +7 -1
  51. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  52. package/dist/cjs/standards-sdk.cjs +2 -2
  53. package/dist/cjs/standards-sdk.cjs.map +1 -1
  54. package/dist/es/hcs-25/identifiers.d.ts +24 -0
  55. package/dist/es/hcs-25/identifiers.d.ts.map +1 -0
  56. package/dist/es/hcs-25/index.d.ts +4 -0
  57. package/dist/es/hcs-25/index.d.ts.map +1 -0
  58. package/dist/es/hcs-25/scoring.d.ts +32 -0
  59. package/dist/es/hcs-25/scoring.d.ts.map +1 -0
  60. package/dist/es/hcs-25/types.d.ts +363 -0
  61. package/dist/es/hcs-25/types.d.ts.map +1 -0
  62. package/dist/es/index.d.ts +1 -0
  63. package/dist/es/index.d.ts.map +1 -1
  64. package/dist/es/services/registry-broker/index.d.ts +1 -0
  65. package/dist/es/services/registry-broker/index.d.ts.map +1 -1
  66. package/dist/es/services/registry-broker/schemas.d.ts +6 -0
  67. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  68. package/dist/es/services/registry-broker/types.d.ts +7 -1
  69. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  70. package/dist/es/standards-sdk.es.js +69 -39
  71. package/dist/es/standards-sdk.es.js.map +1 -1
  72. package/dist/es/standards-sdk.es101.js +2 -2
  73. package/dist/es/standards-sdk.es103.js +2 -2
  74. package/dist/es/standards-sdk.es104.js +1 -1
  75. package/dist/es/standards-sdk.es106.js +1 -1
  76. package/dist/es/standards-sdk.es108.js +2 -2
  77. package/dist/es/standards-sdk.es11.js +1 -1
  78. package/dist/es/standards-sdk.es110.js +1 -1
  79. package/dist/es/standards-sdk.es111.js +2 -2
  80. package/dist/es/standards-sdk.es115.js +3 -3
  81. package/dist/es/standards-sdk.es116.js +4 -4
  82. package/dist/es/standards-sdk.es117.js +19 -251
  83. package/dist/es/standards-sdk.es117.js.map +1 -1
  84. package/dist/es/standards-sdk.es118.js +60 -475
  85. package/dist/es/standards-sdk.es118.js.map +1 -1
  86. package/dist/es/standards-sdk.es119.js +217 -86
  87. package/dist/es/standards-sdk.es119.js.map +1 -1
  88. package/dist/es/standards-sdk.es12.js +1 -1
  89. package/dist/es/standards-sdk.es120.js +242 -150
  90. package/dist/es/standards-sdk.es120.js.map +1 -1
  91. package/dist/es/standards-sdk.es121.js +470 -26
  92. package/dist/es/standards-sdk.es121.js.map +1 -1
  93. package/dist/es/standards-sdk.es122.js +103 -10
  94. package/dist/es/standards-sdk.es122.js.map +1 -1
  95. package/dist/es/standards-sdk.es123.js +145 -167
  96. package/dist/es/standards-sdk.es123.js.map +1 -1
  97. package/dist/es/standards-sdk.es124.js +30 -25
  98. package/dist/es/standards-sdk.es124.js.map +1 -1
  99. package/dist/es/standards-sdk.es125.js +10 -20
  100. package/dist/es/standards-sdk.es125.js.map +1 -1
  101. package/dist/es/standards-sdk.es126.js +159 -137
  102. package/dist/es/standards-sdk.es126.js.map +1 -1
  103. package/dist/es/standards-sdk.es127.js +27 -199
  104. package/dist/es/standards-sdk.es127.js.map +1 -1
  105. package/dist/es/standards-sdk.es128.js +15 -783
  106. package/dist/es/standards-sdk.es128.js.map +1 -1
  107. package/dist/es/standards-sdk.es129.js +157 -10
  108. package/dist/es/standards-sdk.es129.js.map +1 -1
  109. package/dist/es/standards-sdk.es13.js +1 -1
  110. package/dist/es/standards-sdk.es130.js +198 -564
  111. package/dist/es/standards-sdk.es130.js.map +1 -1
  112. package/dist/es/standards-sdk.es131.js +703 -539
  113. package/dist/es/standards-sdk.es131.js.map +1 -1
  114. package/dist/es/standards-sdk.es132.js +12 -12
  115. package/dist/es/standards-sdk.es132.js.map +1 -1
  116. package/dist/es/standards-sdk.es133.js +567 -2
  117. package/dist/es/standards-sdk.es133.js.map +1 -1
  118. package/dist/es/standards-sdk.es134.js +610 -71
  119. package/dist/es/standards-sdk.es134.js.map +1 -1
  120. package/dist/es/standards-sdk.es135.js +12 -39
  121. package/dist/es/standards-sdk.es135.js.map +1 -1
  122. package/dist/es/standards-sdk.es136.js +2 -2
  123. package/dist/es/standards-sdk.es136.js.map +1 -1
  124. package/dist/es/standards-sdk.es137.js +42 -190
  125. package/dist/es/standards-sdk.es137.js.map +1 -1
  126. package/dist/es/standards-sdk.es138.js +39 -1139
  127. package/dist/es/standards-sdk.es138.js.map +1 -1
  128. package/dist/es/standards-sdk.es139.js +2 -306
  129. package/dist/es/standards-sdk.es139.js.map +1 -1
  130. package/dist/es/standards-sdk.es14.js +1 -1
  131. package/dist/es/standards-sdk.es140.js +231 -418
  132. package/dist/es/standards-sdk.es140.js.map +1 -1
  133. package/dist/es/standards-sdk.es141.js +1135 -350
  134. package/dist/es/standards-sdk.es141.js.map +1 -1
  135. package/dist/es/standards-sdk.es142.js +268 -1084
  136. package/dist/es/standards-sdk.es142.js.map +1 -1
  137. package/dist/es/standards-sdk.es143.js +418 -204
  138. package/dist/es/standards-sdk.es143.js.map +1 -1
  139. package/dist/es/standards-sdk.es144.js +350 -1562
  140. package/dist/es/standards-sdk.es144.js.map +1 -1
  141. package/dist/es/standards-sdk.es145.js +1061 -1096
  142. package/dist/es/standards-sdk.es145.js.map +1 -1
  143. package/dist/es/standards-sdk.es146.js +204 -13
  144. package/dist/es/standards-sdk.es146.js.map +1 -1
  145. package/dist/es/standards-sdk.es147.js +1541 -233
  146. package/dist/es/standards-sdk.es147.js.map +1 -1
  147. package/dist/es/standards-sdk.es148.js +1157 -4
  148. package/dist/es/standards-sdk.es148.js.map +1 -1
  149. package/dist/es/standards-sdk.es149.js +15 -79
  150. package/dist/es/standards-sdk.es149.js.map +1 -1
  151. package/dist/es/standards-sdk.es15.js +1 -1
  152. package/dist/es/standards-sdk.es150.js +250 -78
  153. package/dist/es/standards-sdk.es150.js.map +1 -1
  154. package/dist/es/standards-sdk.es151.js +4 -60
  155. package/dist/es/standards-sdk.es151.js.map +1 -1
  156. package/dist/es/standards-sdk.es152.js +75 -153
  157. package/dist/es/standards-sdk.es152.js.map +1 -1
  158. package/dist/es/standards-sdk.es153.js +87 -7
  159. package/dist/es/standards-sdk.es153.js.map +1 -1
  160. package/dist/es/standards-sdk.es154.js +54 -80
  161. package/dist/es/standards-sdk.es154.js.map +1 -1
  162. package/dist/es/standards-sdk.es155.js +2547 -65
  163. package/dist/es/standards-sdk.es155.js.map +1 -1
  164. package/dist/es/standards-sdk.es156.js +159 -30
  165. package/dist/es/standards-sdk.es156.js.map +1 -1
  166. package/dist/es/standards-sdk.es157.js +7 -34
  167. package/dist/es/standards-sdk.es157.js.map +1 -1
  168. package/dist/es/standards-sdk.es158.js +86 -48
  169. package/dist/es/standards-sdk.es158.js.map +1 -1
  170. package/dist/es/standards-sdk.es159.js +52 -125
  171. package/dist/es/standards-sdk.es159.js.map +1 -1
  172. package/dist/es/standards-sdk.es16.js +5 -5
  173. package/dist/es/standards-sdk.es160.js +30 -42
  174. package/dist/es/standards-sdk.es160.js.map +1 -1
  175. package/dist/es/standards-sdk.es161.js +32 -2538
  176. package/dist/es/standards-sdk.es161.js.map +1 -1
  177. package/dist/es/standards-sdk.es162.js +48 -12482
  178. package/dist/es/standards-sdk.es162.js.map +1 -1
  179. package/dist/es/standards-sdk.es163.js +12479 -53
  180. package/dist/es/standards-sdk.es163.js.map +1 -1
  181. package/dist/es/standards-sdk.es164.js +124 -97
  182. package/dist/es/standards-sdk.es164.js.map +1 -1
  183. package/dist/es/standards-sdk.es165.js +35 -74
  184. package/dist/es/standards-sdk.es165.js.map +1 -1
  185. package/dist/es/standards-sdk.es166.js +14 -197
  186. package/dist/es/standards-sdk.es166.js.map +1 -1
  187. package/dist/es/standards-sdk.es167.js +54 -15
  188. package/dist/es/standards-sdk.es167.js.map +1 -1
  189. package/dist/es/standards-sdk.es168.js +96 -58
  190. package/dist/es/standards-sdk.es168.js.map +1 -1
  191. package/dist/es/standards-sdk.es169.js +69 -660
  192. package/dist/es/standards-sdk.es169.js.map +1 -1
  193. package/dist/es/standards-sdk.es170.js +188 -160
  194. package/dist/es/standards-sdk.es170.js.map +1 -1
  195. package/dist/es/standards-sdk.es171.js +657 -307
  196. package/dist/es/standards-sdk.es171.js.map +1 -1
  197. package/dist/es/standards-sdk.es172.js +64 -337
  198. package/dist/es/standards-sdk.es172.js.map +1 -1
  199. package/dist/es/standards-sdk.es173.js +129 -410
  200. package/dist/es/standards-sdk.es173.js.map +1 -1
  201. package/dist/es/standards-sdk.es174.js +200 -209
  202. package/dist/es/standards-sdk.es174.js.map +1 -1
  203. package/dist/es/standards-sdk.es175.js +334 -64
  204. package/dist/es/standards-sdk.es175.js.map +1 -1
  205. package/dist/es/standards-sdk.es176.js +438 -124
  206. package/dist/es/standards-sdk.es176.js.map +1 -1
  207. package/dist/es/standards-sdk.es177.js +310 -496
  208. package/dist/es/standards-sdk.es177.js.map +1 -1
  209. package/dist/es/standards-sdk.es178.js +60 -243
  210. package/dist/es/standards-sdk.es178.js.map +1 -1
  211. package/dist/es/standards-sdk.es179.js +118 -175
  212. package/dist/es/standards-sdk.es179.js.map +1 -1
  213. package/dist/es/standards-sdk.es18.js +12 -12
  214. package/dist/es/standards-sdk.es180.js +465 -67
  215. package/dist/es/standards-sdk.es180.js.map +1 -1
  216. package/dist/es/standards-sdk.es181.js +250 -143
  217. package/dist/es/standards-sdk.es181.js.map +1 -1
  218. package/dist/es/standards-sdk.es182.js +172 -160
  219. package/dist/es/standards-sdk.es182.js.map +1 -1
  220. package/dist/es/standards-sdk.es183.js +65 -630
  221. package/dist/es/standards-sdk.es183.js.map +1 -1
  222. package/dist/es/standards-sdk.es184.js +128 -161
  223. package/dist/es/standards-sdk.es184.js.map +1 -1
  224. package/dist/es/standards-sdk.es185.js +144 -195
  225. package/dist/es/standards-sdk.es185.js.map +1 -1
  226. package/dist/es/standards-sdk.es186.js +668 -223
  227. package/dist/es/standards-sdk.es186.js.map +1 -1
  228. package/dist/es/standards-sdk.es187.js +188 -0
  229. package/dist/es/standards-sdk.es187.js.map +1 -0
  230. package/dist/es/standards-sdk.es188.js +238 -0
  231. package/dist/es/standards-sdk.es188.js.map +1 -0
  232. package/dist/es/standards-sdk.es189.js +242 -0
  233. package/dist/es/standards-sdk.es189.js.map +1 -0
  234. package/dist/es/standards-sdk.es19.js +9 -9
  235. package/dist/es/standards-sdk.es2.js +2 -2
  236. package/dist/es/standards-sdk.es20.js +1 -1
  237. package/dist/es/standards-sdk.es21.js +1 -1
  238. package/dist/es/standards-sdk.es22.js +1 -1
  239. package/dist/es/standards-sdk.es23.js +1 -1
  240. package/dist/es/standards-sdk.es24.js +1 -1
  241. package/dist/es/standards-sdk.es25.js +1 -1
  242. package/dist/es/standards-sdk.es26.js +1 -1
  243. package/dist/es/standards-sdk.es27.js +12 -12
  244. package/dist/es/standards-sdk.es30.js +2 -2
  245. package/dist/es/standards-sdk.es31.js +4 -4
  246. package/dist/es/standards-sdk.es32.js +1 -1
  247. package/dist/es/standards-sdk.es35.js +6 -6
  248. package/dist/es/standards-sdk.es36.js +4 -4
  249. package/dist/es/standards-sdk.es37.js +2 -2
  250. package/dist/es/standards-sdk.es38.js +2 -2
  251. package/dist/es/standards-sdk.es39.js +1 -1
  252. package/dist/es/standards-sdk.es4.js +2 -2
  253. package/dist/es/standards-sdk.es40.js +1 -1
  254. package/dist/es/standards-sdk.es41.js +2 -2
  255. package/dist/es/standards-sdk.es46.js +1 -1
  256. package/dist/es/standards-sdk.es5.js +2 -2
  257. package/dist/es/standards-sdk.es51.js +1 -1
  258. package/dist/es/standards-sdk.es53.js +1 -1
  259. package/dist/es/standards-sdk.es56.js +2 -2
  260. package/dist/es/standards-sdk.es59.js +1 -1
  261. package/dist/es/standards-sdk.es6.js +2 -2
  262. package/dist/es/standards-sdk.es60.js +1 -1
  263. package/dist/es/standards-sdk.es62.js +1 -1
  264. package/dist/es/standards-sdk.es63.js +2 -2
  265. package/dist/es/standards-sdk.es64.js +1 -1
  266. package/dist/es/standards-sdk.es65.js +1 -1
  267. package/dist/es/standards-sdk.es66.js +1 -1
  268. package/dist/es/standards-sdk.es67.js +7 -7
  269. package/dist/es/standards-sdk.es69.js +1 -1
  270. package/dist/es/standards-sdk.es7.js +1 -1
  271. package/dist/es/standards-sdk.es71.js +2 -2
  272. package/dist/es/standards-sdk.es72.js +3 -3
  273. package/dist/es/standards-sdk.es75.js +5 -5
  274. package/dist/es/standards-sdk.es76.js +3 -3
  275. package/dist/es/standards-sdk.es77.js +2 -2
  276. package/dist/es/standards-sdk.es78.js +1 -1
  277. package/dist/es/standards-sdk.es81.js +2 -2
  278. package/dist/es/standards-sdk.es83.js +2 -2
  279. package/dist/es/standards-sdk.es84.js +4 -4
  280. package/dist/es/standards-sdk.es85.js +1 -1
  281. package/dist/es/standards-sdk.es88.js +1 -1
  282. package/dist/es/standards-sdk.es89.js +2 -2
  283. package/dist/es/standards-sdk.es9.js +2 -2
  284. package/dist/es/standards-sdk.es90.js +4 -4
  285. package/dist/es/standards-sdk.es94.js +3 -3
  286. package/dist/es/standards-sdk.es96.js +2 -2
  287. package/dist/es/standards-sdk.es98.js +1 -1
  288. package/dist/es/standards-sdk.es99.js +3 -3
  289. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es169.js","sources":["../../src/services/registry-broker/client/skills.ts"],"sourcesContent":["import type {\n JsonValue,\n SkillBadgeQuery,\n SkillBadgeResponse,\n SkillCatalogQueryOptions,\n SkillCatalogResponse,\n SkillDeprecationRecord,\n SkillDeprecationSetRequest,\n SkillDeprecationsResponse,\n SkillListOptions,\n SkillRecommendedVersionResponse,\n SkillRecommendedVersionSetRequest,\n SkillRegistryConfigResponse,\n SkillRegistryCategoriesResponse,\n SkillRegistryJobStatusResponse,\n SkillRegistryListResponse,\n SkillRegistryMineResponse,\n SkillRegistryMyListResponse,\n SkillRegistryOwnershipResponse,\n SkillRegistryPublishRequest,\n SkillRegistryPublishResponse,\n SkillRegistryQuoteRequest,\n SkillRegistryQuoteResponse,\n SkillQuotePreviewRequest,\n SkillQuotePreviewResponse,\n SkillRegistryTagsResponse,\n SkillRegistryVoteRequest,\n SkillRegistryVoteStatusResponse,\n SkillStatusRequest,\n SkillStatusResponse,\n SkillPreviewLookupRequest,\n SkillPreviewByRepoRequest,\n SkillPreviewLookupResponse,\n SkillPreviewRecord,\n SkillConversionSignalsResponse,\n UploadSkillPreviewFromGithubOidcRequest,\n SkillInstallResponse,\n SkillInstallCopyTelemetryRequest,\n SkillInstallCopyTelemetryResponse,\n SkillResolverManifestResponse,\n SkillRegistryVersionsResponse,\n SkillSecurityBreakdownRequest,\n SkillSecurityBreakdownResponse,\n SkillVerificationDomainProofChallengeRequest,\n SkillVerificationDomainProofChallengeResponse,\n SkillVerificationDomainProofVerifyRequest,\n SkillVerificationDomainProofVerifyResponse,\n SkillVerificationRequestCreateRequest,\n SkillVerificationRequestCreateResponse,\n SkillVerificationStatusResponse,\n} from '../types';\nimport {\n skillBadgeResponseSchema,\n skillCatalogResponseSchema,\n skillDeprecationRecordSchema,\n skillDeprecationsResponseSchema,\n skillRecommendedVersionResponseSchema,\n skillRegistryConfigResponseSchema,\n skillRegistryCategoriesResponseSchema,\n skillRegistryJobStatusResponseSchema,\n skillRegistryListResponseSchema,\n skillRegistryMineResponseSchema,\n skillRegistryMyListResponseSchema,\n skillRegistryOwnershipResponseSchema,\n skillRegistryPublishResponseSchema,\n skillRegistryQuoteResponseSchema,\n skillQuotePreviewResponseSchema,\n skillConversionSignalsResponseSchema,\n skillRegistryTagsResponseSchema,\n skillRegistryVoteStatusResponseSchema,\n skillStatusResponseSchema,\n skillPreviewLookupResponseSchema,\n skillPreviewRecordSchema,\n skillInstallResponseSchema,\n skillInstallCopyTelemetryResponseSchema,\n skillSecurityBreakdownResponseSchema,\n skillResolverManifestResponseSchema,\n skillVerificationDomainProofChallengeResponseSchema,\n skillVerificationDomainProofVerifyResponseSchema,\n skillRegistryVersionsResponseSchema,\n skillVerificationRequestCreateResponseSchema,\n skillVerificationStatusResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nfunction requireTrimmedString(value: string, fieldName: string): string {\n const normalizedValue = value.trim();\n if (!normalizedValue) {\n throw new Error(`${fieldName} is required`);\n }\n return normalizedValue;\n}\n\nexport async function skillsConfig(\n client: RegistryBrokerClient,\n): Promise<SkillRegistryConfigResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/config', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n skillRegistryConfigResponseSchema,\n 'skill registry config response',\n );\n}\n\nexport async function listSkills(\n client: RegistryBrokerClient,\n params: SkillListOptions = {},\n): Promise<SkillRegistryListResponse> {\n const query = new URLSearchParams();\n if (params.name) {\n query.set('name', params.name);\n }\n if (params.version) {\n query.set('version', params.version);\n }\n if (typeof params.limit === 'number' && Number.isFinite(params.limit)) {\n query.set('limit', String(Math.trunc(params.limit)));\n }\n if (params.cursor) {\n query.set('cursor', params.cursor);\n }\n if (typeof params.includeFiles === 'boolean') {\n query.set('includeFiles', params.includeFiles ? 'true' : 'false');\n }\n if (params.accountId) {\n query.set('accountId', params.accountId);\n }\n if (params.q) {\n query.set('q', params.q);\n }\n if (params.tag) {\n query.set('tag', params.tag);\n }\n if (params.category) {\n query.set('category', params.category);\n }\n if (typeof params.featured === 'boolean') {\n query.set('featured', params.featured ? 'true' : 'false');\n }\n if (typeof params.verified === 'boolean') {\n query.set('verified', params.verified ? 'true' : 'false');\n }\n if (params.view) {\n query.set('view', params.view);\n }\n\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n\n const raw = await client.requestJson<JsonValue>(`/skills${suffix}`, {\n method: 'GET',\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryListResponseSchema,\n 'skill registry list response',\n );\n}\n\nexport async function getSkillSecurityBreakdown(\n client: RegistryBrokerClient,\n params: SkillSecurityBreakdownRequest,\n): Promise<SkillSecurityBreakdownResponse> {\n const normalizedJobId = requireTrimmedString(params.jobId, 'jobId');\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/${encodeURIComponent(normalizedJobId)}/security-breakdown`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillSecurityBreakdownResponseSchema,\n 'skill security breakdown response',\n );\n}\n\nexport async function getSkillsCatalog(\n client: RegistryBrokerClient,\n params: SkillCatalogQueryOptions = {},\n): Promise<SkillCatalogResponse> {\n const query = new URLSearchParams();\n if (params.q) {\n query.set('q', params.q);\n }\n if (params.category) {\n query.set('category', params.category);\n }\n params.tags?.forEach(tag => {\n if (tag.trim()) {\n query.append('tag', tag.trim());\n }\n });\n if (typeof params.featured === 'boolean') {\n query.set('featured', params.featured ? 'true' : 'false');\n }\n if (typeof params.verified === 'boolean') {\n query.set('verified', params.verified ? 'true' : 'false');\n }\n if (params.channel) {\n query.set('channel', params.channel);\n }\n if (params.sortBy) {\n query.set('sortBy', params.sortBy);\n }\n if (typeof params.limit === 'number' && Number.isFinite(params.limit)) {\n query.set('limit', String(Math.trunc(params.limit)));\n }\n if (params.cursor) {\n query.set('cursor', params.cursor);\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n\n const raw = await client.requestJson<JsonValue>(`/skills/catalog${suffix}`, {\n method: 'GET',\n });\n\n return client.parseWithSchema(\n raw,\n skillCatalogResponseSchema,\n 'skill catalog response',\n );\n}\n\nexport async function listSkillVersions(\n client: RegistryBrokerClient,\n params: { name: string },\n): Promise<SkillRegistryVersionsResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/versions?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillRegistryVersionsResponseSchema,\n 'skill registry versions response',\n );\n}\n\nexport async function listMySkills(\n client: RegistryBrokerClient,\n params: { limit?: number } = {},\n): Promise<SkillRegistryMineResponse> {\n const query = new URLSearchParams();\n if (typeof params.limit === 'number' && Number.isFinite(params.limit)) {\n query.set('limit', String(Math.trunc(params.limit)));\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n\n const raw = await client.requestJson<JsonValue>(`/skills/mine${suffix}`, {\n method: 'GET',\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryMineResponseSchema,\n 'skill registry mine response',\n );\n}\n\nexport async function getMySkillsList(\n client: RegistryBrokerClient,\n params: { limit?: number; cursor?: string; accountId?: string } = {},\n): Promise<SkillRegistryMyListResponse> {\n const query = new URLSearchParams();\n if (typeof params.limit === 'number' && Number.isFinite(params.limit)) {\n query.set('limit', String(Math.trunc(params.limit)));\n }\n if (params.cursor) {\n query.set('cursor', params.cursor);\n }\n if (params.accountId) {\n query.set('accountId', params.accountId);\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n\n const raw = await client.requestJson<JsonValue>(`/skills/my-list${suffix}`, {\n method: 'GET',\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryMyListResponseSchema,\n 'skill registry my list response',\n );\n}\n\nexport async function quoteSkillPublish(\n client: RegistryBrokerClient,\n payload: SkillRegistryQuoteRequest,\n): Promise<SkillRegistryQuoteResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/quote', {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryQuoteResponseSchema,\n 'skill registry quote response',\n );\n}\n\nexport async function quoteSkillPublishPreview(\n client: RegistryBrokerClient,\n payload: SkillQuotePreviewRequest,\n): Promise<SkillQuotePreviewResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/quote-preview', {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n skillQuotePreviewResponseSchema,\n 'skill quote preview response',\n );\n}\n\nexport async function publishSkill(\n client: RegistryBrokerClient,\n payload: SkillRegistryPublishRequest,\n): Promise<SkillRegistryPublishResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/publish', {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryPublishResponseSchema,\n 'skill registry publish response',\n );\n}\n\nexport async function getSkillPublishJob(\n client: RegistryBrokerClient,\n jobId: string,\n params: { accountId?: string } = {},\n): Promise<SkillRegistryJobStatusResponse> {\n const normalized = requireTrimmedString(jobId, 'jobId');\n\n const query = new URLSearchParams();\n if (params.accountId) {\n query.set('accountId', params.accountId);\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/jobs/${encodeURIComponent(normalized)}${suffix}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillRegistryJobStatusResponseSchema,\n 'skill registry job status response',\n );\n}\n\nexport async function getSkillOwnership(\n client: RegistryBrokerClient,\n params: { name: string; accountId?: string },\n): Promise<SkillRegistryOwnershipResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n if (params.accountId) {\n query.set('accountId', params.accountId);\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/ownership?${query.toString()}`,\n {\n method: 'GET',\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillRegistryOwnershipResponseSchema,\n 'skill registry ownership response',\n );\n}\n\nexport async function getRecommendedSkillVersion(\n client: RegistryBrokerClient,\n params: { name: string },\n): Promise<SkillRecommendedVersionResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n const raw = await client.requestJson<JsonValue>(\n `/skills/recommended?${query.toString()}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n skillRecommendedVersionResponseSchema,\n 'skill recommended version response',\n );\n}\n\nexport async function setRecommendedSkillVersion(\n client: RegistryBrokerClient,\n payload: SkillRecommendedVersionSetRequest,\n): Promise<SkillRecommendedVersionResponse> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n const normalizedVersion = requireTrimmedString(payload.version, 'version');\n const raw = await client.requestJson<JsonValue>('/skills/recommended', {\n method: 'POST',\n body: {\n name: normalizedName,\n version: normalizedVersion,\n },\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n skillRecommendedVersionResponseSchema,\n 'skill recommended version response',\n );\n}\n\nexport async function getSkillDeprecations(\n client: RegistryBrokerClient,\n params: { name: string },\n): Promise<SkillDeprecationsResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n const raw = await client.requestJson<JsonValue>(\n `/skills/deprecations?${query.toString()}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n skillDeprecationsResponseSchema,\n 'skill deprecations response',\n );\n}\n\nexport async function setSkillDeprecation(\n client: RegistryBrokerClient,\n payload: SkillDeprecationSetRequest,\n): Promise<SkillDeprecationRecord> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n const version = payload.version?.trim();\n const reason = requireTrimmedString(payload.reason, 'reason');\n const replacementRef = payload.replacementRef?.trim();\n const raw = await client.requestJson<JsonValue>('/skills/deprecate', {\n method: 'POST',\n body: {\n name: normalizedName,\n version,\n reason,\n replacementRef,\n },\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n skillDeprecationRecordSchema,\n 'skill deprecation response',\n );\n}\n\nexport async function getSkillBadge(\n client: RegistryBrokerClient,\n params: SkillBadgeQuery,\n): Promise<SkillBadgeResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n if (params.metric) {\n query.set('metric', params.metric);\n }\n if (params.label?.trim()) {\n query.set('label', params.label.trim());\n }\n if (params.style) {\n query.set('style', params.style);\n }\n const raw = await client.requestJson<JsonValue>(\n `/skills/badge?${query.toString()}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n skillBadgeResponseSchema,\n 'skill badge response',\n );\n}\n\nexport async function getSkillStatus(\n client: RegistryBrokerClient,\n params: SkillStatusRequest,\n): Promise<SkillStatusResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n if (params.version?.trim()) {\n query.set('version', params.version.trim());\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/status?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillStatusResponseSchema,\n 'skill status response',\n );\n}\n\nexport async function getSkillStatusByRepo(\n client: RegistryBrokerClient,\n params: SkillPreviewByRepoRequest,\n): Promise<SkillStatusResponse> {\n const repo = requireTrimmedString(params.repo, 'repo');\n const skillDir = requireTrimmedString(params.skillDir, 'skillDir');\n\n const query = new URLSearchParams();\n query.set('repo', repo);\n query.set('skillDir', skillDir);\n if (params.ref?.trim()) {\n query.set('ref', params.ref.trim());\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/status/by-repo?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillStatusResponseSchema,\n 'skill status response',\n );\n}\n\nexport async function getSkillConversionSignalsByRepo(\n client: RegistryBrokerClient,\n params: SkillPreviewByRepoRequest,\n): Promise<SkillConversionSignalsResponse> {\n const repo = requireTrimmedString(params.repo, 'repo');\n const skillDir = requireTrimmedString(params.skillDir, 'skillDir');\n\n const query = new URLSearchParams();\n query.set('repo', repo);\n query.set('skillDir', skillDir);\n if (params.ref?.trim()) {\n query.set('ref', params.ref.trim());\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/conversion-signals/by-repo?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillConversionSignalsResponseSchema,\n 'skill conversion signals response',\n );\n}\n\nexport async function uploadSkillPreviewFromGithubOidc(\n client: RegistryBrokerClient,\n payload: UploadSkillPreviewFromGithubOidcRequest,\n): Promise<SkillPreviewRecord> {\n const token = requireTrimmedString(payload.token, 'token');\n\n const raw = await client.requestJson<JsonValue>(\n '/skills/preview/github-oidc',\n {\n method: 'POST',\n body: payload.report,\n headers: {\n 'content-type': 'application/json',\n authorization: `Bearer ${token}`,\n },\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillPreviewRecordSchema,\n 'skill preview record response',\n );\n}\n\nexport async function getSkillPreview(\n client: RegistryBrokerClient,\n params: SkillPreviewLookupRequest,\n): Promise<SkillPreviewLookupResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n if (params.version?.trim()) {\n query.set('version', params.version.trim());\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/preview?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillPreviewLookupResponseSchema,\n 'skill preview response',\n );\n}\n\nexport async function getSkillPreviewByRepo(\n client: RegistryBrokerClient,\n params: SkillPreviewByRepoRequest,\n): Promise<SkillPreviewLookupResponse> {\n const repo = requireTrimmedString(params.repo, 'repo');\n const skillDir = requireTrimmedString(params.skillDir, 'skillDir');\n\n const query = new URLSearchParams();\n query.set('repo', repo);\n query.set('skillDir', skillDir);\n if (params.ref?.trim()) {\n query.set('ref', params.ref.trim());\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/preview/by-repo?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillPreviewLookupResponseSchema,\n 'skill preview by repo response',\n );\n}\n\nexport async function getSkillPreviewById(\n client: RegistryBrokerClient,\n previewId: string,\n): Promise<SkillPreviewLookupResponse> {\n const normalizedPreviewId = requireTrimmedString(previewId, 'previewId');\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/preview/${encodeURIComponent(normalizedPreviewId)}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillPreviewLookupResponseSchema,\n 'skill preview by id response',\n );\n}\n\nexport async function getSkillInstall(\n client: RegistryBrokerClient,\n skillRef: string,\n): Promise<SkillInstallResponse> {\n const normalizedSkillRef = requireTrimmedString(skillRef, 'skillRef');\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/${encodeURIComponent(normalizedSkillRef)}/install`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillInstallResponseSchema,\n 'skill install response',\n );\n}\n\nexport async function recordSkillInstallCopy(\n client: RegistryBrokerClient,\n skillRef: string,\n payload: SkillInstallCopyTelemetryRequest = {},\n): Promise<SkillInstallCopyTelemetryResponse> {\n const normalizedSkillRef = requireTrimmedString(skillRef, 'skillRef');\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/${encodeURIComponent(normalizedSkillRef)}/telemetry/install-copy`,\n {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillInstallCopyTelemetryResponseSchema,\n 'skill install copy telemetry response',\n );\n}\n\nexport async function listSkillTags(\n client: RegistryBrokerClient,\n): Promise<SkillRegistryTagsResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/tags', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n skillRegistryTagsResponseSchema,\n 'skill tags response',\n );\n}\n\nexport async function listSkillCategories(\n client: RegistryBrokerClient,\n): Promise<SkillRegistryCategoriesResponse> {\n const raw = await client.requestJson<JsonValue>('/skills/categories', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n skillRegistryCategoriesResponseSchema,\n 'skill categories response',\n );\n}\n\nexport async function resolveSkillMarkdown(\n client: RegistryBrokerClient,\n skillRef: string,\n): Promise<string> {\n const normalizedSkillRef = requireTrimmedString(skillRef, 'skillRef');\n const response = await client.request(\n `/skills/${encodeURIComponent(normalizedSkillRef)}/SKILL.md`,\n {\n method: 'GET',\n headers: {\n accept: 'text/markdown, text/plain;q=0.9, */*;q=0.8',\n },\n },\n );\n return response.text();\n}\n\nexport async function resolveSkillManifest(\n client: RegistryBrokerClient,\n skillRef: string,\n): Promise<SkillResolverManifestResponse> {\n const normalizedSkillRef = requireTrimmedString(skillRef, 'skillRef');\n const raw = await client.requestJson<JsonValue>(\n `/skills/${encodeURIComponent(normalizedSkillRef)}/manifest`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n skillResolverManifestResponseSchema,\n 'skill resolver manifest response',\n );\n}\n\nexport async function getSkillVoteStatus(\n client: RegistryBrokerClient,\n params: { name: string },\n): Promise<SkillRegistryVoteStatusResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/vote?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillRegistryVoteStatusResponseSchema,\n 'skill registry vote status response',\n );\n}\n\nexport async function setSkillVote(\n client: RegistryBrokerClient,\n payload: SkillRegistryVoteRequest,\n): Promise<SkillRegistryVoteStatusResponse> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n\n const raw = await client.requestJson<JsonValue>('/skills/vote', {\n method: 'POST',\n body: { name: normalizedName, upvoted: payload.upvoted },\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n skillRegistryVoteStatusResponseSchema,\n 'skill registry vote status response',\n );\n}\n\nexport async function requestSkillVerification(\n client: RegistryBrokerClient,\n payload: SkillVerificationRequestCreateRequest,\n): Promise<SkillVerificationRequestCreateResponse> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n\n const raw = await client.requestJson<JsonValue>(\n '/skills/verification/request',\n {\n method: 'POST',\n body: {\n name: normalizedName,\n version: payload.version,\n tier: payload.tier,\n },\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillVerificationRequestCreateResponseSchema,\n 'skill verification request create response',\n );\n}\n\nexport async function getSkillVerificationStatus(\n client: RegistryBrokerClient,\n params: { name: string; version?: string },\n): Promise<SkillVerificationStatusResponse> {\n const normalizedName = requireTrimmedString(params.name, 'name');\n\n const query = new URLSearchParams();\n query.set('name', normalizedName);\n if (params.version) {\n query.set('version', params.version);\n }\n\n const raw = await client.requestJson<JsonValue>(\n `/skills/verification/status?${query.toString()}`,\n { method: 'GET' },\n );\n\n return client.parseWithSchema(\n raw,\n skillVerificationStatusResponseSchema,\n 'skill verification status response',\n );\n}\n\nexport async function createSkillDomainProofChallenge(\n client: RegistryBrokerClient,\n payload: SkillVerificationDomainProofChallengeRequest,\n): Promise<SkillVerificationDomainProofChallengeResponse> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n\n const raw = await client.requestJson<JsonValue>(\n '/skills/verification/domain/challenge',\n {\n method: 'POST',\n body: {\n name: normalizedName,\n version: payload.version,\n domain: payload.domain,\n },\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillVerificationDomainProofChallengeResponseSchema,\n 'skill domain proof challenge response',\n );\n}\n\nexport async function verifySkillDomainProof(\n client: RegistryBrokerClient,\n payload: SkillVerificationDomainProofVerifyRequest,\n): Promise<SkillVerificationDomainProofVerifyResponse> {\n const normalizedName = requireTrimmedString(payload.name, 'name');\n const challengeToken = requireTrimmedString(\n payload.challengeToken,\n 'challengeToken',\n );\n\n const raw = await client.requestJson<JsonValue>(\n '/skills/verification/domain/verify',\n {\n method: 'POST',\n body: {\n name: normalizedName,\n version: payload.version,\n domain: payload.domain,\n challengeToken,\n },\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n skillVerificationDomainProofVerifyResponseSchema,\n 'skill domain proof verify response',\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es169.js","sources":["../../src/hcs-14/resolvers/profile-utils.ts"],"sourcesContent":["import type { ParsedHcs14Did } from '../types';\n\nconst orderedParamKeys = [\n 'uid',\n 'registry',\n 'proto',\n 'nativeId',\n 'domain',\n 'src',\n] as const;\n\nconst fqdnLabelRegex = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;\n\nexport function uaidTargetFromParsed(parsed: ParsedHcs14Did): 'aid' | 'did' {\n return parsed.method === 'aid' ? 'aid' : 'did';\n}\n\nexport function normalizeDomain(value: string): string {\n return value.trim().replace(/\\.$/, '').toLowerCase();\n}\n\nexport function isFqdn(value: string): boolean {\n const normalized = normalizeDomain(value);\n if (!normalized || normalized.length > 253 || !normalized.includes('.')) {\n return false;\n }\n const labels = normalized.split('.');\n for (const label of labels) {\n if (!label || label.length > 63 || !fqdnLabelRegex.test(label)) {\n return false;\n }\n }\n return true;\n}\n\nexport function normalizeTxtValue(value: string): string {\n const trimmed = value.trim();\n if (trimmed.length >= 2 && trimmed.startsWith('\"') && trimmed.endsWith('\"')) {\n return trimmed.slice(1, -1);\n }\n const markdownLinkMatch = trimmed.match(/^\\[(.+)\\]\\((.+)\\)$/);\n if (markdownLinkMatch) {\n return markdownLinkMatch[2].trim();\n }\n return trimmed;\n}\n\nexport function parseSemicolonFields(input: string): Record<string, string> {\n const fields: Record<string, string> = {};\n for (const part of input.split(';')) {\n const trimmed = part.trim();\n if (!trimmed) {\n continue;\n }\n const equalsIndex = trimmed.indexOf('=');\n if (equalsIndex <= 0) {\n continue;\n }\n const key = trimmed.slice(0, equalsIndex).trim();\n const value = normalizeTxtValue(trimmed.slice(equalsIndex + 1));\n if (!key || !value) {\n continue;\n }\n fields[key] = value;\n }\n return fields;\n}\n\nexport function buildCanonicalUaid(\n target: 'aid' | 'did',\n id: string,\n params: Record<string, string>,\n): string {\n const entries: string[] = [];\n const usedKeys = new Set<string>();\n\n for (const key of orderedParamKeys) {\n const value = params[key];\n if (value) {\n entries.push(`${key}=${value}`);\n usedKeys.add(key);\n }\n }\n\n const extraKeys = Object.keys(params)\n .filter(key => !usedKeys.has(key) && params[key])\n .sort((a, b) => a.localeCompare(b));\n\n for (const key of extraKeys) {\n entries.push(`${key}=${params[key]}`);\n }\n\n return entries.length > 0\n ? `uaid:${target}:${id};${entries.join(';')}`\n : `uaid:${target}:${id}`;\n}\n\nexport function canonicalizeUaidFromParsed(parsed: ParsedHcs14Did): string {\n return buildCanonicalUaid(\n uaidTargetFromParsed(parsed),\n parsed.id,\n parsed.params,\n );\n}\n"],"names":[],"mappings":"AAEA,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,iBAAiB;AAEhB,SAAS,qBAAqB,QAAuC;AAC1E,SAAO,OAAO,WAAW,QAAQ,QAAQ;AAC3C;AAEO,SAAS,gBAAgB,OAAuB;AACrD,SAAO,MAAM,OAAO,QAAQ,OAAO,EAAE,EAAE,YAAA;AACzC;AAEO,SAAS,OAAO,OAAwB;AAC7C,QAAM,aAAa,gBAAgB,KAAK;AACxC,MAAI,CAAC,cAAc,WAAW,SAAS,OAAO,CAAC,WAAW,SAAS,GAAG,GAAG;AACvE,WAAO;AAAA,EACT;AACA,QAAM,SAAS,WAAW,MAAM,GAAG;AACnC,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,SAAS,MAAM,SAAS,MAAM,CAAC,eAAe,KAAK,KAAK,GAAG;AAC9D,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,QAAM,UAAU,MAAM,KAAA;AACtB,MAAI,QAAQ,UAAU,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,GAAG;AAC3E,WAAO,QAAQ,MAAM,GAAG,EAAE;AAAA,EAC5B;AACA,QAAM,oBAAoB,QAAQ,MAAM,oBAAoB;AAC5D,MAAI,mBAAmB;AACrB,WAAO,kBAAkB,CAAC,EAAE,KAAA;AAAA,EAC9B;AACA,SAAO;AACT;AAEO,SAAS,qBAAqB,OAAuC;AAC1E,QAAM,SAAiC,CAAA;AACvC,aAAW,QAAQ,MAAM,MAAM,GAAG,GAAG;AACnC,UAAM,UAAU,KAAK,KAAA;AACrB,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,cAAc,QAAQ,QAAQ,GAAG;AACvC,QAAI,eAAe,GAAG;AACpB;AAAA,IACF;AACA,UAAM,MAAM,QAAQ,MAAM,GAAG,WAAW,EAAE,KAAA;AAC1C,UAAM,QAAQ,kBAAkB,QAAQ,MAAM,cAAc,CAAC,CAAC;AAC9D,QAAI,CAAC,OAAO,CAAC,OAAO;AAClB;AAAA,IACF;AACA,WAAO,GAAG,IAAI;AAAA,EAChB;AACA,SAAO;AACT;AAEO,SAAS,mBACd,QACA,IACA,QACQ;AACR,QAAM,UAAoB,CAAA;AAC1B,QAAM,+BAAe,IAAA;AAErB,aAAW,OAAO,kBAAkB;AAClC,UAAM,QAAQ,OAAO,GAAG;AACxB,QAAI,OAAO;AACT,cAAQ,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE;AAC9B,eAAS,IAAI,GAAG;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,YAAY,OAAO,KAAK,MAAM,EACjC,OAAO,CAAA,QAAO,CAAC,SAAS,IAAI,GAAG,KAAK,OAAO,GAAG,CAAC,EAC/C,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAEpC,aAAW,OAAO,WAAW;AAC3B,YAAQ,KAAK,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,EAAE;AAAA,EACtC;AAEA,SAAO,QAAQ,SAAS,IACpB,QAAQ,MAAM,IAAI,EAAE,IAAI,QAAQ,KAAK,GAAG,CAAC,KACzC,QAAQ,MAAM,IAAI,EAAE;AAC1B;"}
@@ -1,175 +1,203 @@
1
- import { Long, AccountId } from "@hashgraph/sdk";
2
- import { parseKey } from "./standards-sdk.es175.js";
3
- import { Buffer } from "buffer";
4
- class HCSParser {
5
- static parseConsensusCreateTopic(body) {
6
- if (!body) return void 0;
7
- const data = {};
8
- if (body.memo) {
9
- data.memo = body.memo;
10
- }
11
- data.adminKey = parseKey(body.adminKey);
12
- data.submitKey = parseKey(body.submitKey);
13
- if (body.autoRenewPeriod?.seconds) {
14
- data.autoRenewPeriod = Long.fromValue(
15
- body.autoRenewPeriod.seconds
16
- ).toString();
17
- }
18
- if (body.autoRenewAccount) {
19
- data.autoRenewAccountId = new AccountId(
20
- body.autoRenewAccount.shardNum ?? 0,
21
- body.autoRenewAccount.realmNum ?? 0,
22
- body.autoRenewAccount.accountNum ?? 0
23
- ).toString();
24
- }
25
- return data;
1
+ import { parseSemicolonFields } from "./standards-sdk.es169.js";
2
+ const ANS_HCS27_REGISTRY = "ans";
3
+ function isObjectRecord(value) {
4
+ return typeof value === "object" && value !== null;
5
+ }
6
+ function asString(value) {
7
+ if (typeof value !== "string") {
8
+ return null;
26
9
  }
27
- static parseConsensusSubmitMessage(body) {
28
- if (!body) return void 0;
29
- const data = {};
30
- if (body.topicID) {
31
- data.topicId = `${body.topicID.shardNum ?? 0}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
32
- }
33
- if (body.message?.length > 0) {
34
- const messageBuffer = Buffer.from(body.message);
35
- const utf8String = messageBuffer.toString("utf8");
36
- if (/[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(utf8String) || utf8String.includes("�")) {
37
- data.message = messageBuffer.toString("base64");
38
- data.messageEncoding = "base64";
39
- } else {
40
- data.message = utf8String;
41
- data.messageEncoding = "utf8";
42
- }
43
- }
44
- if (body.chunkInfo) {
45
- if (body.chunkInfo.initialTransactionID) {
46
- const txId = body.chunkInfo.initialTransactionID.accountID;
47
- const taValidStart = body.chunkInfo.initialTransactionID.transactionValidStart;
48
- if (txId && taValidStart) {
49
- data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${txId.realmNum ?? 0}.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${taValidStart.nanos ?? 0}`;
50
- }
51
- }
52
- if (body.chunkInfo.number !== void 0 && body.chunkInfo.number !== null) {
53
- data.chunkInfoNumber = body.chunkInfo.number;
54
- }
55
- if (body.chunkInfo.total !== void 0 && body.chunkInfo.total !== null) {
56
- data.chunkInfoTotal = body.chunkInfo.total;
57
- }
58
- }
59
- return data;
10
+ const trimmed = value.trim();
11
+ if (!trimmed) {
12
+ return null;
13
+ }
14
+ return trimmed;
15
+ }
16
+ function isSemver(value) {
17
+ return /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(
18
+ value
19
+ );
20
+ }
21
+ function normalizeAnsVersion(value) {
22
+ const trimmed = value.trim();
23
+ if (!trimmed) {
24
+ return null;
60
25
  }
61
- static parseConsensusUpdateTopic(body) {
62
- if (!body) return void 0;
63
- const data = {};
64
- if (body.topicID) {
65
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
26
+ const withoutPrefix = trimmed.startsWith("v") || trimmed.startsWith("V") ? trimmed.slice(1) : trimmed;
27
+ if (!isSemver(withoutPrefix)) {
28
+ return null;
29
+ }
30
+ return withoutPrefix;
31
+ }
32
+ function parseAnsDnsTxtRecord(rawRecord) {
33
+ const fields = parseSemicolonFields(rawRecord);
34
+ const version = fields["v"];
35
+ const urlValue = fields["url"];
36
+ if (!version || !urlValue || version.toLowerCase() !== "ans1") {
37
+ return null;
38
+ }
39
+ let parsedUrl;
40
+ try {
41
+ parsedUrl = new URL(urlValue);
42
+ } catch {
43
+ return null;
44
+ }
45
+ if (parsedUrl.protocol.toLowerCase() !== "https:") {
46
+ return null;
47
+ }
48
+ const rawAnsVersion = fields["version"];
49
+ let normalizedAnsVersion;
50
+ if (rawAnsVersion !== void 0) {
51
+ const parsedVersion = normalizeAnsVersion(rawAnsVersion);
52
+ if (!parsedVersion) {
53
+ return null;
66
54
  }
67
- if (body.memo?.value !== void 0) {
68
- data.memo = body.memo.value;
55
+ normalizedAnsVersion = parsedVersion;
56
+ }
57
+ return {
58
+ version: normalizedAnsVersion,
59
+ url: parsedUrl.toString()
60
+ };
61
+ }
62
+ function isValidAnsProfileVersion(value) {
63
+ return !!value && normalizeAnsVersion(value) !== null;
64
+ }
65
+ function hasProtocolPathSegment(pathname, protocol) {
66
+ const normalizedProtocol = protocol.trim().toLowerCase();
67
+ if (!normalizedProtocol) {
68
+ return false;
69
+ }
70
+ const pathSegments = pathname.split("/").map((segment) => segment.trim()).filter((segment) => segment.length > 0);
71
+ for (const segment of pathSegments) {
72
+ if (segment.toLowerCase() === normalizedProtocol) {
73
+ return true;
69
74
  }
70
- if (body.adminKey === null) {
71
- data.clearAdminKey = true;
72
- data.adminKey = void 0;
73
- } else if (body.adminKey) {
74
- data.adminKey = parseKey(body.adminKey);
75
- } else {
76
- data.adminKey = void 0;
75
+ }
76
+ return false;
77
+ }
78
+ function extractEndpointCandidates(endpoints, supportedSchemes) {
79
+ const candidates = [];
80
+ for (const [key, value] of Object.entries(endpoints)) {
81
+ if (!isObjectRecord(value)) {
82
+ continue;
77
83
  }
78
- if (body.submitKey === null) {
79
- data.clearSubmitKey = true;
80
- data.submitKey = void 0;
81
- } else if (body.submitKey) {
82
- data.submitKey = parseKey(body.submitKey);
83
- } else {
84
- data.submitKey = void 0;
84
+ const endpoint = asString(value["url"]);
85
+ if (!endpoint) {
86
+ continue;
85
87
  }
86
- if (body.autoRenewPeriod?.seconds) {
87
- data.autoRenewPeriod = Long.fromValue(
88
- body.autoRenewPeriod.seconds
89
- ).toString();
88
+ let parsedUrl;
89
+ try {
90
+ parsedUrl = new URL(endpoint);
91
+ } catch {
92
+ continue;
90
93
  }
91
- if (body.autoRenewAccount) {
92
- data.autoRenewAccountId = new AccountId(
93
- body.autoRenewAccount.shardNum ?? 0,
94
- body.autoRenewAccount.realmNum ?? 0,
95
- body.autoRenewAccount.accountNum ?? 0
96
- ).toString();
94
+ const scheme = parsedUrl.protocol.replace(/:$/, "").toLowerCase();
95
+ if (!supportedSchemes.has(scheme)) {
96
+ continue;
97
97
  }
98
- return data;
98
+ candidates.push({
99
+ key,
100
+ endpointUrl: parsedUrl.toString(),
101
+ parsedUrl
102
+ });
99
103
  }
100
- static parseConsensusDeleteTopic(body) {
101
- if (!body) return void 0;
102
- const data = {};
103
- if (body.topicID) {
104
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
105
- }
106
- return data;
104
+ return candidates;
105
+ }
106
+ function validateAnsHcs27Hints(input) {
107
+ if (!isObjectRecord(input)) {
108
+ return void 0;
107
109
  }
108
- /**
109
- * Parse HCS transaction from Transaction object with comprehensive extraction
110
- * This is the unified entry point that handles both protobuf and internal field extraction
111
- */
112
- static parseFromTransactionObject(transaction) {
113
- try {
114
- const transactionBody = transaction._transactionBody;
115
- if (!transactionBody) {
116
- return {};
117
- }
118
- if (transactionBody.consensusCreateTopic) {
119
- const consensusCreateTopic = this.parseConsensusCreateTopic(
120
- transactionBody.consensusCreateTopic
121
- );
122
- if (consensusCreateTopic) {
123
- return {
124
- type: "TOPICCREATE",
125
- humanReadableType: "Topic Create",
126
- consensusCreateTopic
127
- };
128
- }
129
- }
130
- if (transactionBody.consensusSubmitMessage) {
131
- const consensusSubmitMessage = this.parseConsensusSubmitMessage(
132
- transactionBody.consensusSubmitMessage
133
- );
134
- if (consensusSubmitMessage) {
135
- return {
136
- type: "CONSENSUSSUBMITMESSAGE",
137
- humanReadableType: "Submit Message",
138
- consensusSubmitMessage
139
- };
140
- }
141
- }
142
- if (transactionBody.consensusUpdateTopic) {
143
- const consensusUpdateTopic = this.parseConsensusUpdateTopic(
144
- transactionBody.consensusUpdateTopic
145
- );
146
- if (consensusUpdateTopic) {
147
- return {
148
- type: "TOPICUPDATE",
149
- humanReadableType: "Topic Update",
150
- consensusUpdateTopic
151
- };
152
- }
153
- }
154
- if (transactionBody.consensusDeleteTopic) {
155
- const consensusDeleteTopic = this.parseConsensusDeleteTopic(
156
- transactionBody.consensusDeleteTopic
157
- );
158
- if (consensusDeleteTopic) {
159
- return {
160
- type: "TOPICDELETE",
161
- humanReadableType: "Topic Delete",
162
- consensusDeleteTopic
163
- };
164
- }
165
- }
166
- return {};
167
- } catch (error) {
168
- return {};
169
- }
110
+ const checkpointTopicId = asString(input["checkpoint_topic_id"]);
111
+ const registry = asString(input["registry"]);
112
+ const logId = asString(input["log_id"]);
113
+ if (!checkpointTopicId || !registry || !logId || registry !== ANS_HCS27_REGISTRY) {
114
+ return void 0;
115
+ }
116
+ const checkpointUri = asString(input["checkpoint_uri"]) ?? void 0;
117
+ const viewerUri = asString(input["viewer_uri"]) ?? void 0;
118
+ return {
119
+ checkpointTopicId,
120
+ registry,
121
+ logId,
122
+ checkpointUri,
123
+ viewerUri
124
+ };
125
+ }
126
+ function validateHcs28Hints(input) {
127
+ if (!isObjectRecord(input)) {
128
+ return void 0;
129
+ }
130
+ const directoryTopicId = asString(input["directory_topic_id"]);
131
+ const tId = asString(input["t_id"]);
132
+ const agentId = asString(input["agent_id"]);
133
+ if (!directoryTopicId || !tId || !agentId) {
134
+ return void 0;
135
+ }
136
+ const proofProfile = asString(input["proof_profile"]) ?? void 0;
137
+ return {
138
+ directoryTopicId,
139
+ tId,
140
+ agentId,
141
+ proofProfile
142
+ };
143
+ }
144
+ function parseTransparencyHints(input) {
145
+ if (!isObjectRecord(input)) {
146
+ return void 0;
147
+ }
148
+ const hcs27 = validateAnsHcs27Hints(input["hcs27"]);
149
+ const hcs28 = validateHcs28Hints(input["hcs28"]);
150
+ if (!hcs27 && !hcs28) {
151
+ return void 0;
152
+ }
153
+ return {
154
+ hcs27,
155
+ hcs28
156
+ };
157
+ }
158
+ function parseAnsAgentCard(input) {
159
+ if (!isObjectRecord(input)) {
160
+ return null;
161
+ }
162
+ const ansName = asString(input["ansName"]);
163
+ const endpoints = input["endpoints"];
164
+ if (!ansName || !isObjectRecord(endpoints)) {
165
+ return null;
166
+ }
167
+ return {
168
+ ansName,
169
+ endpoints,
170
+ transparencyHints: parseTransparencyHints(input["transparency"])
171
+ };
172
+ }
173
+ function selectPreferredEndpoint(candidates, protocol) {
174
+ if (candidates.length === 0) {
175
+ return null;
176
+ }
177
+ const sortedCandidates = [...candidates].sort(
178
+ (a, b) => a.key.localeCompare(b.key)
179
+ );
180
+ const protocolMatches = sortedCandidates.filter(
181
+ (candidate) => hasProtocolPathSegment(candidate.parsedUrl.pathname, protocol)
182
+ );
183
+ if (protocolMatches.length > 0) {
184
+ return protocolMatches[0];
185
+ }
186
+ return sortedCandidates[0];
187
+ }
188
+ function toErrorMessage(error) {
189
+ if (error instanceof Error && error.message) {
190
+ return error.message;
170
191
  }
192
+ return null;
171
193
  }
172
194
  export {
173
- HCSParser
195
+ extractEndpointCandidates,
196
+ isValidAnsProfileVersion,
197
+ normalizeAnsVersion,
198
+ parseAnsAgentCard,
199
+ parseAnsDnsTxtRecord,
200
+ selectPreferredEndpoint,
201
+ toErrorMessage
174
202
  };
175
203
  //# sourceMappingURL=standards-sdk.es170.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es170.js","sources":["../../src/utils/parsers/hcs-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { AccountId, Long, Transaction } from '@hashgraph/sdk';\nimport {\n ConsensusCreateTopicData,\n ConsensusSubmitMessageData,\n ConsensusUpdateTopicData,\n ConsensusDeleteTopicData,\n} from '../transaction-parser-types';\nimport { parseKey } from './parser-utils';\nimport { Buffer } from 'buffer';\n\nexport class HCSParser {\n static parseConsensusCreateTopic(\n body: proto.IConsensusCreateTopicTransactionBody,\n ): ConsensusCreateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusCreateTopicData = {};\n if (body.memo) {\n data.memo = body.memo;\n }\n data.adminKey = parseKey(body.adminKey);\n data.submitKey = parseKey(body.submitKey);\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusSubmitMessage(\n body: proto.IConsensusSubmitMessageTransactionBody,\n ): ConsensusSubmitMessageData | undefined {\n if (!body) return undefined;\n const data: ConsensusSubmitMessageData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum ?? 0}.${\n body.topicID.realmNum ?? 0\n }.${body.topicID.topicNum ?? 0}`;\n }\n if (body.message?.length > 0) {\n const messageBuffer = Buffer.from(body.message);\n const utf8String = messageBuffer.toString('utf8');\n if (\n /[\\x00-\\x08\\x0B\\x0E-\\x1F\\x7F]/.test(utf8String) ||\n utf8String.includes('\\uFFFD')\n ) {\n data.message = messageBuffer.toString('base64');\n data.messageEncoding = 'base64';\n } else {\n data.message = utf8String;\n data.messageEncoding = 'utf8';\n }\n }\n if (body.chunkInfo) {\n if (body.chunkInfo.initialTransactionID) {\n const txId = body.chunkInfo.initialTransactionID.accountID;\n const taValidStart =\n body.chunkInfo.initialTransactionID.transactionValidStart;\n if (txId && taValidStart) {\n data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${\n txId.realmNum ?? 0\n }.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${\n taValidStart.nanos ?? 0\n }`;\n }\n }\n if (\n body.chunkInfo.number !== undefined &&\n body.chunkInfo.number !== null\n ) {\n data.chunkInfoNumber = body.chunkInfo.number;\n }\n if (body.chunkInfo.total !== undefined && body.chunkInfo.total !== null) {\n data.chunkInfoTotal = body.chunkInfo.total;\n }\n }\n return data;\n }\n\n static parseConsensusUpdateTopic(\n body: proto.IConsensusUpdateTopicTransactionBody,\n ): ConsensusUpdateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusUpdateTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.adminKey === null) {\n data.clearAdminKey = true;\n data.adminKey = undefined;\n } else if (body.adminKey) {\n data.adminKey = parseKey(body.adminKey);\n } else {\n data.adminKey = undefined;\n }\n if (body.submitKey === null) {\n data.clearSubmitKey = true;\n data.submitKey = undefined;\n } else if (body.submitKey) {\n data.submitKey = parseKey(body.submitKey);\n } else {\n data.submitKey = undefined;\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusDeleteTopic(\n body: proto.IConsensusDeleteTopicTransactionBody,\n ): ConsensusDeleteTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusDeleteTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${\n body.topicID.topicNum ?? 0\n }`;\n }\n return data;\n }\n\n /**\n * Parse HCS transaction from Transaction object with comprehensive extraction\n * This is the unified entry point that handles both protobuf and internal field extraction\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: unknown }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (!transactionBody) {\n return {};\n }\n\n if (transactionBody.consensusCreateTopic) {\n const consensusCreateTopic = this.parseConsensusCreateTopic(\n transactionBody.consensusCreateTopic,\n );\n if (consensusCreateTopic) {\n return {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Create',\n consensusCreateTopic,\n };\n }\n }\n\n if (transactionBody.consensusSubmitMessage) {\n const consensusSubmitMessage = this.parseConsensusSubmitMessage(\n transactionBody.consensusSubmitMessage,\n );\n if (consensusSubmitMessage) {\n return {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n consensusSubmitMessage,\n };\n }\n }\n\n if (transactionBody.consensusUpdateTopic) {\n const consensusUpdateTopic = this.parseConsensusUpdateTopic(\n transactionBody.consensusUpdateTopic,\n );\n if (consensusUpdateTopic) {\n return {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n consensusUpdateTopic,\n };\n }\n }\n\n if (transactionBody.consensusDeleteTopic) {\n const consensusDeleteTopic = this.parseConsensusDeleteTopic(\n transactionBody.consensusDeleteTopic,\n );\n if (consensusDeleteTopic) {\n return {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Delete',\n consensusDeleteTopic,\n };\n }\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es170.js","sources":["../../src/hcs-14/resolvers/ans-dns-web-profile-utils.ts"],"sourcesContent":["import type {\n ProfileResolutionHcs27TransparencyHints,\n ProfileResolutionHcs28TransparencyHints,\n ProfileResolutionTransparencyHints,\n} from './types';\nimport { parseSemicolonFields } from './profile-utils';\n\nexport interface AnsDnsTxtRecord {\n version?: string;\n url: string;\n}\n\nexport interface AnsEndpointCandidate {\n key: string;\n endpointUrl: string;\n parsedUrl: URL;\n}\n\nexport interface ParsedAnsAgentCard {\n ansName: string;\n endpoints: Record<string, unknown>;\n transparencyHints?: ProfileResolutionTransparencyHints;\n}\n\nconst ANS_HCS27_REGISTRY = 'ans';\n\nfunction isObjectRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction asString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n return trimmed;\n}\n\nfunction isSemver(value: string): boolean {\n return /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$/.test(\n value,\n );\n}\n\nexport function normalizeAnsVersion(value: string): string | null {\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const withoutPrefix =\n trimmed.startsWith('v') || trimmed.startsWith('V')\n ? trimmed.slice(1)\n : trimmed;\n if (!isSemver(withoutPrefix)) {\n return null;\n }\n return withoutPrefix;\n}\n\nexport function parseAnsDnsTxtRecord(\n rawRecord: string,\n): AnsDnsTxtRecord | null {\n const fields = parseSemicolonFields(rawRecord);\n const version = fields['v'];\n const urlValue = fields['url'];\n if (!version || !urlValue || version.toLowerCase() !== 'ans1') {\n return null;\n }\n\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(urlValue);\n } catch {\n return null;\n }\n\n if (parsedUrl.protocol.toLowerCase() !== 'https:') {\n return null;\n }\n\n const rawAnsVersion = fields['version'];\n let normalizedAnsVersion: string | undefined;\n if (rawAnsVersion !== undefined) {\n const parsedVersion = normalizeAnsVersion(rawAnsVersion);\n if (!parsedVersion) {\n return null;\n }\n normalizedAnsVersion = parsedVersion;\n }\n\n return {\n version: normalizedAnsVersion,\n url: parsedUrl.toString(),\n };\n}\n\nexport function isValidAnsProfileVersion(value: string | undefined): boolean {\n return !!value && normalizeAnsVersion(value) !== null;\n}\n\nfunction hasProtocolPathSegment(pathname: string, protocol: string): boolean {\n const normalizedProtocol = protocol.trim().toLowerCase();\n if (!normalizedProtocol) {\n return false;\n }\n\n const pathSegments = pathname\n .split('/')\n .map(segment => segment.trim())\n .filter(segment => segment.length > 0);\n for (const segment of pathSegments) {\n if (segment.toLowerCase() === normalizedProtocol) {\n return true;\n }\n }\n return false;\n}\n\nexport function extractEndpointCandidates(\n endpoints: Record<string, unknown>,\n supportedSchemes: Set<string>,\n): AnsEndpointCandidate[] {\n const candidates: AnsEndpointCandidate[] = [];\n for (const [key, value] of Object.entries(endpoints)) {\n if (!isObjectRecord(value)) {\n continue;\n }\n const endpoint = asString(value['url']);\n if (!endpoint) {\n continue;\n }\n\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(endpoint);\n } catch {\n continue;\n }\n\n const scheme = parsedUrl.protocol.replace(/:$/, '').toLowerCase();\n if (!supportedSchemes.has(scheme)) {\n continue;\n }\n\n candidates.push({\n key,\n endpointUrl: parsedUrl.toString(),\n parsedUrl,\n });\n }\n\n return candidates;\n}\n\nfunction validateAnsHcs27Hints(\n input: unknown,\n): ProfileResolutionHcs27TransparencyHints | undefined {\n if (!isObjectRecord(input)) {\n return undefined;\n }\n const checkpointTopicId = asString(input['checkpoint_topic_id']);\n const registry = asString(input['registry']);\n const logId = asString(input['log_id']);\n if (\n !checkpointTopicId ||\n !registry ||\n !logId ||\n registry !== ANS_HCS27_REGISTRY\n ) {\n return undefined;\n }\n const checkpointUri = asString(input['checkpoint_uri']) ?? undefined;\n const viewerUri = asString(input['viewer_uri']) ?? undefined;\n return {\n checkpointTopicId,\n registry,\n logId,\n checkpointUri,\n viewerUri,\n };\n}\n\nfunction validateHcs28Hints(\n input: unknown,\n): ProfileResolutionHcs28TransparencyHints | undefined {\n if (!isObjectRecord(input)) {\n return undefined;\n }\n const directoryTopicId = asString(input['directory_topic_id']);\n const tId = asString(input['t_id']);\n const agentId = asString(input['agent_id']);\n if (!directoryTopicId || !tId || !agentId) {\n return undefined;\n }\n const proofProfile = asString(input['proof_profile']) ?? undefined;\n return {\n directoryTopicId,\n tId,\n agentId,\n proofProfile,\n };\n}\n\nfunction parseTransparencyHints(\n input: unknown,\n): ProfileResolutionTransparencyHints | undefined {\n if (!isObjectRecord(input)) {\n return undefined;\n }\n const hcs27 = validateAnsHcs27Hints(input['hcs27']);\n const hcs28 = validateHcs28Hints(input['hcs28']);\n if (!hcs27 && !hcs28) {\n return undefined;\n }\n return {\n hcs27,\n hcs28,\n };\n}\n\nexport function parseAnsAgentCard(input: unknown): ParsedAnsAgentCard | null {\n if (!isObjectRecord(input)) {\n return null;\n }\n const ansName = asString(input['ansName']);\n const endpoints = input['endpoints'];\n if (!ansName || !isObjectRecord(endpoints)) {\n return null;\n }\n return {\n ansName,\n endpoints,\n transparencyHints: parseTransparencyHints(input['transparency']),\n };\n}\n\nexport function selectPreferredEndpoint(\n candidates: AnsEndpointCandidate[],\n protocol: string,\n): AnsEndpointCandidate | null {\n if (candidates.length === 0) {\n return null;\n }\n\n const sortedCandidates = [...candidates].sort((a, b) =>\n a.key.localeCompare(b.key),\n );\n const protocolMatches = sortedCandidates.filter(candidate =>\n hasProtocolPathSegment(candidate.parsedUrl.pathname, protocol),\n );\n if (protocolMatches.length > 0) {\n return protocolMatches[0];\n }\n return sortedCandidates[0];\n}\n\nexport function toErrorMessage(error: unknown): string | null {\n if (error instanceof Error && error.message) {\n return error.message;\n }\n return null;\n}\n"],"names":[],"mappings":"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"}