@hashgraphonline/standards-sdk 0.1.157 → 0.1.159

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 (275) hide show
  1. package/dist/cjs/hcs-12/validation/schemas.d.ts +2 -2
  2. package/dist/cjs/hcs-17/types.d.ts +4 -4
  3. package/dist/cjs/hcs-2/types.d.ts +20 -20
  4. package/dist/cjs/hcs-20/types.d.ts +8 -8
  5. package/dist/cjs/hcs-26/base-client.d.ts +83 -0
  6. package/dist/cjs/hcs-26/base-client.d.ts.map +1 -0
  7. package/dist/cjs/hcs-26/browser.d.ts +11 -0
  8. package/dist/cjs/hcs-26/browser.d.ts.map +1 -0
  9. package/dist/cjs/hcs-26/index.d.ts +7 -0
  10. package/dist/cjs/hcs-26/index.d.ts.map +1 -0
  11. package/dist/cjs/hcs-26/memos.d.ts +28 -0
  12. package/dist/cjs/hcs-26/memos.d.ts.map +1 -0
  13. package/dist/cjs/hcs-26/resolver.d.ts +60 -0
  14. package/dist/cjs/hcs-26/resolver.d.ts.map +1 -0
  15. package/dist/cjs/hcs-26/sdk.d.ts +10 -0
  16. package/dist/cjs/hcs-26/sdk.d.ts.map +1 -0
  17. package/dist/cjs/hcs-26/types.d.ts +2752 -0
  18. package/dist/cjs/hcs-26/types.d.ts.map +1 -0
  19. package/dist/cjs/index.d.ts +1 -0
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/inscribe/inscriber.d.ts +1 -1
  22. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  23. package/dist/cjs/inscribe/inscription-cost.d.ts +12 -0
  24. package/dist/cjs/inscribe/inscription-cost.d.ts.map +1 -0
  25. package/dist/cjs/inscribe/types.d.ts +5 -1
  26. package/dist/cjs/inscribe/types.d.ts.map +1 -1
  27. package/dist/cjs/services/registry-broker/client/base-client.d.ts +19 -1
  28. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  29. package/dist/cjs/services/registry-broker/client/skills.d.ts +20 -1
  30. package/dist/cjs/services/registry-broker/client/skills.d.ts.map +1 -1
  31. package/dist/cjs/services/registry-broker/schemas.d.ts +2515 -86
  32. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  33. package/dist/cjs/services/registry-broker/types.d.ts +21 -3
  34. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  35. package/dist/cjs/services/types.d.ts +2 -1
  36. package/dist/cjs/services/types.d.ts.map +1 -1
  37. package/dist/cjs/standards-sdk.cjs +2 -2
  38. package/dist/cjs/standards-sdk.cjs.map +1 -1
  39. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  40. package/dist/es/hcs-12/validation/schemas.d.ts +2 -2
  41. package/dist/es/hcs-17/types.d.ts +4 -4
  42. package/dist/es/hcs-2/types.d.ts +20 -20
  43. package/dist/es/hcs-20/types.d.ts +8 -8
  44. package/dist/es/hcs-26/base-client.d.ts +83 -0
  45. package/dist/es/hcs-26/base-client.d.ts.map +1 -0
  46. package/dist/es/hcs-26/browser.d.ts +11 -0
  47. package/dist/es/hcs-26/browser.d.ts.map +1 -0
  48. package/dist/es/hcs-26/index.d.ts +7 -0
  49. package/dist/es/hcs-26/index.d.ts.map +1 -0
  50. package/dist/es/hcs-26/memos.d.ts +28 -0
  51. package/dist/es/hcs-26/memos.d.ts.map +1 -0
  52. package/dist/es/hcs-26/resolver.d.ts +60 -0
  53. package/dist/es/hcs-26/resolver.d.ts.map +1 -0
  54. package/dist/es/hcs-26/sdk.d.ts +10 -0
  55. package/dist/es/hcs-26/sdk.d.ts.map +1 -0
  56. package/dist/es/hcs-26/types.d.ts +2752 -0
  57. package/dist/es/hcs-26/types.d.ts.map +1 -0
  58. package/dist/es/index.d.ts +1 -0
  59. package/dist/es/index.d.ts.map +1 -1
  60. package/dist/es/inscribe/inscriber.d.ts +1 -1
  61. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  62. package/dist/es/inscribe/inscription-cost.d.ts +12 -0
  63. package/dist/es/inscribe/inscription-cost.d.ts.map +1 -0
  64. package/dist/es/inscribe/types.d.ts +5 -1
  65. package/dist/es/inscribe/types.d.ts.map +1 -1
  66. package/dist/es/services/registry-broker/client/base-client.d.ts +19 -1
  67. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  68. package/dist/es/services/registry-broker/client/skills.d.ts +20 -1
  69. package/dist/es/services/registry-broker/client/skills.d.ts.map +1 -1
  70. package/dist/es/services/registry-broker/schemas.d.ts +2515 -86
  71. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  72. package/dist/es/services/registry-broker/types.d.ts +21 -3
  73. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  74. package/dist/es/services/types.d.ts +2 -1
  75. package/dist/es/services/types.d.ts.map +1 -1
  76. package/dist/es/standards-sdk.es.js +70 -32
  77. package/dist/es/standards-sdk.es.js.map +1 -1
  78. package/dist/es/standards-sdk.es101.js +2 -2
  79. package/dist/es/standards-sdk.es103.js +1 -1
  80. package/dist/es/standards-sdk.es104.js +2 -2
  81. package/dist/es/standards-sdk.es105.js +247 -137
  82. package/dist/es/standards-sdk.es105.js.map +1 -1
  83. package/dist/es/standards-sdk.es106.js +477 -28
  84. package/dist/es/standards-sdk.es106.js.map +1 -1
  85. package/dist/es/standards-sdk.es107.js +103 -20
  86. package/dist/es/standards-sdk.es107.js.map +1 -1
  87. package/dist/es/standards-sdk.es108.js +141 -141
  88. package/dist/es/standards-sdk.es108.js.map +1 -1
  89. package/dist/es/standards-sdk.es109.js +31 -200
  90. package/dist/es/standards-sdk.es109.js.map +1 -1
  91. package/dist/es/standards-sdk.es11.js +1 -1
  92. package/dist/es/standards-sdk.es110.js +9 -787
  93. package/dist/es/standards-sdk.es110.js.map +1 -1
  94. package/dist/es/standards-sdk.es111.js +140 -11
  95. package/dist/es/standards-sdk.es111.js.map +1 -1
  96. package/dist/es/standards-sdk.es112.js +29 -567
  97. package/dist/es/standards-sdk.es112.js.map +1 -1
  98. package/dist/es/standards-sdk.es113.js +17 -597
  99. package/dist/es/standards-sdk.es113.js.map +1 -1
  100. package/dist/es/standards-sdk.es114.js +159 -12
  101. package/dist/es/standards-sdk.es114.js.map +1 -1
  102. package/dist/es/standards-sdk.es115.js +203 -2
  103. package/dist/es/standards-sdk.es115.js.map +1 -1
  104. package/dist/es/standards-sdk.es116.js +774 -71
  105. package/dist/es/standards-sdk.es116.js.map +1 -1
  106. package/dist/es/standards-sdk.es117.js +11 -38
  107. package/dist/es/standards-sdk.es117.js.map +1 -1
  108. package/dist/es/standards-sdk.es118.js +567 -2
  109. package/dist/es/standards-sdk.es118.js.map +1 -1
  110. package/dist/es/standards-sdk.es119.js +576 -205
  111. package/dist/es/standards-sdk.es119.js.map +1 -1
  112. package/dist/es/standards-sdk.es12.js +1 -1
  113. package/dist/es/standards-sdk.es120.js +12 -1139
  114. package/dist/es/standards-sdk.es120.js.map +1 -1
  115. package/dist/es/standards-sdk.es121.js +2 -306
  116. package/dist/es/standards-sdk.es121.js.map +1 -1
  117. package/dist/es/standards-sdk.es122.js +83 -418
  118. package/dist/es/standards-sdk.es122.js.map +1 -1
  119. package/dist/es/standards-sdk.es123.js +36 -351
  120. package/dist/es/standards-sdk.es123.js.map +1 -1
  121. package/dist/es/standards-sdk.es124.js +2 -1117
  122. package/dist/es/standards-sdk.es124.js.map +1 -1
  123. package/dist/es/standards-sdk.es125.js +215 -188
  124. package/dist/es/standards-sdk.es125.js.map +1 -1
  125. package/dist/es/standards-sdk.es126.js +1055 -1482
  126. package/dist/es/standards-sdk.es126.js.map +1 -1
  127. package/dist/es/standards-sdk.es127.js +306 -1138
  128. package/dist/es/standards-sdk.es127.js.map +1 -1
  129. package/dist/es/standards-sdk.es128.js +419 -14
  130. package/dist/es/standards-sdk.es128.js.map +1 -1
  131. package/dist/es/standards-sdk.es129.js +350 -82
  132. package/dist/es/standards-sdk.es129.js.map +1 -1
  133. package/dist/es/standards-sdk.es13.js +1 -1
  134. package/dist/es/standards-sdk.es130.js +1107 -72
  135. package/dist/es/standards-sdk.es130.js.map +1 -1
  136. package/dist/es/standards-sdk.es131.js +181 -845
  137. package/dist/es/standards-sdk.es131.js.map +1 -1
  138. package/dist/es/standards-sdk.es132.js +1558 -51
  139. package/dist/es/standards-sdk.es132.js.map +1 -1
  140. package/dist/es/standards-sdk.es133.js +1236 -159
  141. package/dist/es/standards-sdk.es133.js.map +1 -1
  142. package/dist/es/standards-sdk.es134.js +17 -7
  143. package/dist/es/standards-sdk.es134.js.map +1 -1
  144. package/dist/es/standards-sdk.es135.js +79 -78
  145. package/dist/es/standards-sdk.es135.js.map +1 -1
  146. package/dist/es/standards-sdk.es136.js +75 -59
  147. package/dist/es/standards-sdk.es136.js.map +1 -1
  148. package/dist/es/standards-sdk.es137.js +893 -30
  149. package/dist/es/standards-sdk.es137.js.map +1 -1
  150. package/dist/es/standards-sdk.es138.js +60 -34
  151. package/dist/es/standards-sdk.es138.js.map +1 -1
  152. package/dist/es/standards-sdk.es139.js +159 -28
  153. package/dist/es/standards-sdk.es139.js.map +1 -1
  154. package/dist/es/standards-sdk.es14.js +1 -1
  155. package/dist/es/standards-sdk.es140.js +7 -138
  156. package/dist/es/standards-sdk.es140.js.map +1 -1
  157. package/dist/es/standards-sdk.es141.js +80 -36
  158. package/dist/es/standards-sdk.es141.js.map +1 -1
  159. package/dist/es/standards-sdk.es142.js +58 -49
  160. package/dist/es/standards-sdk.es142.js.map +1 -1
  161. package/dist/es/standards-sdk.es143.js +30 -84
  162. package/dist/es/standards-sdk.es143.js.map +1 -1
  163. package/dist/es/standards-sdk.es144.js +34 -12320
  164. package/dist/es/standards-sdk.es144.js.map +1 -1
  165. package/dist/es/standards-sdk.es145.js +28 -17
  166. package/dist/es/standards-sdk.es145.js.map +1 -1
  167. package/dist/es/standards-sdk.es146.js +118 -152
  168. package/dist/es/standards-sdk.es146.js.map +1 -1
  169. package/dist/es/standards-sdk.es147.js +34 -314
  170. package/dist/es/standards-sdk.es147.js.map +1 -1
  171. package/dist/es/standards-sdk.es148.js +12426 -290
  172. package/dist/es/standards-sdk.es148.js.map +1 -1
  173. package/dist/es/standards-sdk.es149.js +231 -442
  174. package/dist/es/standards-sdk.es149.js.map +1 -1
  175. package/dist/es/standards-sdk.es15.js +1 -1
  176. package/dist/es/standards-sdk.es150.js +142 -301
  177. package/dist/es/standards-sdk.es150.js.map +1 -1
  178. package/dist/es/standards-sdk.es151.js +310 -64
  179. package/dist/es/standards-sdk.es151.js.map +1 -1
  180. package/dist/es/standards-sdk.es152.js +332 -158
  181. package/dist/es/standards-sdk.es152.js.map +1 -1
  182. package/dist/es/standards-sdk.es153.js +441 -210
  183. package/dist/es/standards-sdk.es153.js.map +1 -1
  184. package/dist/es/standards-sdk.es154.js +314 -222
  185. package/dist/es/standards-sdk.es154.js.map +1 -1
  186. package/dist/es/standards-sdk.es155.js +65 -108
  187. package/dist/es/standards-sdk.es155.js.map +1 -1
  188. package/dist/es/standards-sdk.es156.js +14 -123
  189. package/dist/es/standards-sdk.es156.js.map +1 -1
  190. package/dist/es/standards-sdk.es157.js +60 -148
  191. package/dist/es/standards-sdk.es157.js.map +1 -1
  192. package/dist/es/standards-sdk.es158.js +47 -176
  193. package/dist/es/standards-sdk.es158.js.map +1 -1
  194. package/dist/es/standards-sdk.es159.js +65 -120
  195. package/dist/es/standards-sdk.es159.js.map +1 -1
  196. package/dist/es/standards-sdk.es16.js +5 -5
  197. package/dist/es/standards-sdk.es160.js +147 -306
  198. package/dist/es/standards-sdk.es160.js.map +1 -1
  199. package/dist/es/standards-sdk.es161.js +205 -242
  200. package/dist/es/standards-sdk.es161.js.map +1 -1
  201. package/dist/es/standards-sdk.es162.js +233 -110
  202. package/dist/es/standards-sdk.es162.js.map +1 -1
  203. package/dist/es/standards-sdk.es163.js +84 -78
  204. package/dist/es/standards-sdk.es163.js.map +1 -1
  205. package/dist/es/standards-sdk.es164.js +129 -0
  206. package/dist/es/standards-sdk.es164.js.map +1 -0
  207. package/dist/es/standards-sdk.es165.js +164 -0
  208. package/dist/es/standards-sdk.es165.js.map +1 -0
  209. package/dist/es/standards-sdk.es166.js +188 -0
  210. package/dist/es/standards-sdk.es166.js.map +1 -0
  211. package/dist/es/standards-sdk.es167.js +142 -0
  212. package/dist/es/standards-sdk.es167.js.map +1 -0
  213. package/dist/es/standards-sdk.es168.js +334 -0
  214. package/dist/es/standards-sdk.es168.js.map +1 -0
  215. package/dist/es/standards-sdk.es169.js +262 -0
  216. package/dist/es/standards-sdk.es169.js.map +1 -0
  217. package/dist/es/standards-sdk.es170.js +119 -0
  218. package/dist/es/standards-sdk.es170.js.map +1 -0
  219. package/dist/es/standards-sdk.es18.js +12 -12
  220. package/dist/es/standards-sdk.es19.js +9 -9
  221. package/dist/es/standards-sdk.es2.js +2 -2
  222. package/dist/es/standards-sdk.es20.js +1 -1
  223. package/dist/es/standards-sdk.es21.js +1 -1
  224. package/dist/es/standards-sdk.es22.js +1 -1
  225. package/dist/es/standards-sdk.es23.js +1 -1
  226. package/dist/es/standards-sdk.es24.js +1 -1
  227. package/dist/es/standards-sdk.es25.js +1 -1
  228. package/dist/es/standards-sdk.es26.js +1 -1
  229. package/dist/es/standards-sdk.es27.js +12 -12
  230. package/dist/es/standards-sdk.es30.js +2 -2
  231. package/dist/es/standards-sdk.es31.js +4 -4
  232. package/dist/es/standards-sdk.es32.js +1 -1
  233. package/dist/es/standards-sdk.es35.js +6 -6
  234. package/dist/es/standards-sdk.es36.js +4 -4
  235. package/dist/es/standards-sdk.es37.js +2 -2
  236. package/dist/es/standards-sdk.es38.js +2 -2
  237. package/dist/es/standards-sdk.es39.js +1 -1
  238. package/dist/es/standards-sdk.es4.js +2 -2
  239. package/dist/es/standards-sdk.es40.js +1 -1
  240. package/dist/es/standards-sdk.es41.js +2 -2
  241. package/dist/es/standards-sdk.es46.js +1 -1
  242. package/dist/es/standards-sdk.es5.js +2 -2
  243. package/dist/es/standards-sdk.es51.js +1 -1
  244. package/dist/es/standards-sdk.es53.js +1 -1
  245. package/dist/es/standards-sdk.es56.js +2 -2
  246. package/dist/es/standards-sdk.es58.js +1 -1
  247. package/dist/es/standards-sdk.es59.js +1 -1
  248. package/dist/es/standards-sdk.es6.js +2 -2
  249. package/dist/es/standards-sdk.es60.js +7 -7
  250. package/dist/es/standards-sdk.es62.js +1 -1
  251. package/dist/es/standards-sdk.es64.js +2 -2
  252. package/dist/es/standards-sdk.es65.js +3 -3
  253. package/dist/es/standards-sdk.es68.js +2 -2
  254. package/dist/es/standards-sdk.es69.js +3 -3
  255. package/dist/es/standards-sdk.es7.js +1 -1
  256. package/dist/es/standards-sdk.es70.js +2 -2
  257. package/dist/es/standards-sdk.es71.js +1 -1
  258. package/dist/es/standards-sdk.es74.js +2 -2
  259. package/dist/es/standards-sdk.es76.js +2 -2
  260. package/dist/es/standards-sdk.es77.js +4 -4
  261. package/dist/es/standards-sdk.es78.js +1 -1
  262. package/dist/es/standards-sdk.es81.js +1 -1
  263. package/dist/es/standards-sdk.es82.js +2 -2
  264. package/dist/es/standards-sdk.es83.js +4 -4
  265. package/dist/es/standards-sdk.es87.js +3 -3
  266. package/dist/es/standards-sdk.es89.js +2 -2
  267. package/dist/es/standards-sdk.es9.js +2 -2
  268. package/dist/es/standards-sdk.es91.js +1 -1
  269. package/dist/es/standards-sdk.es92.js +3 -3
  270. package/dist/es/standards-sdk.es94.js +2 -2
  271. package/dist/es/standards-sdk.es96.js +2 -2
  272. package/dist/es/standards-sdk.es97.js +1 -1
  273. package/dist/es/standards-sdk.es99.js +1 -1
  274. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  275. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es125.js","sources":["../../src/inscribe/quote-cache.ts"],"sourcesContent":["/**\n * Performance optimization utilities for quote generation\n */\n\nimport { InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport {\n InscriptionOptions,\n QuoteResult,\n NodeHederaClientConfig,\n} from './types';\n\ninterface CacheKey {\n inputHash: string;\n clientConfigHash: string;\n optionsHash: string;\n}\n\ninterface CacheEntry {\n quote: QuoteResult;\n timestamp: number;\n ttlMs: number;\n}\n\ninterface SDKCacheEntry {\n sdk: InscriptionSDK;\n timestamp: number;\n config: string;\n}\n\n/**\n * LRU Cache for quote results to improve performance\n */\nclass QuoteCache {\n private cache = new Map<string, CacheEntry>();\n private maxSize = 100;\n private defaultTtlMs = 5 * 60 * 1000; // 5 minutes\n\n /**\n * Generate cache key from input parameters\n */\n private generateKey(key: CacheKey): string {\n return `${key.inputHash}-${key.clientConfigHash}-${key.optionsHash}`;\n }\n\n /**\n * Hash object to string for cache key\n */\n private hashObject(obj: unknown): string {\n return Buffer.from(JSON.stringify(obj)).toString('base64').slice(0, 16);\n }\n\n /**\n * Create cache key from parameters\n */\n createCacheKey(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n ): CacheKey {\n return {\n inputHash: this.hashObject(input),\n clientConfigHash: this.hashObject({\n accountId: clientConfig.accountId,\n network: clientConfig.network,\n }),\n optionsHash: this.hashObject({\n mode: options.mode,\n apiKey: options.apiKey ? 'present' : 'absent',\n network: options.network,\n metadata: options.metadata,\n }),\n };\n }\n\n /**\n * Get cached quote if available and not expired\n */\n get(key: CacheKey): QuoteResult | null {\n const cacheKey = this.generateKey(key);\n const entry = this.cache.get(cacheKey);\n\n if (!entry) {\n return null;\n }\n\n const now = Date.now();\n if (now - entry.timestamp > entry.ttlMs) {\n this.cache.delete(cacheKey);\n return null;\n }\n\n this.cache.delete(cacheKey);\n this.cache.set(cacheKey, entry);\n\n return entry.quote;\n }\n\n /**\n * Store quote in cache\n */\n set(\n key: CacheKey,\n quote: QuoteResult,\n ttlMs: number = this.defaultTtlMs,\n ): void {\n const cacheKey = this.generateKey(key);\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(cacheKey, {\n quote,\n timestamp: Date.now(),\n ttlMs,\n });\n }\n\n /**\n * Clear all cached entries\n */\n clear(): void {\n this.cache.clear();\n }\n}\n\n/**\n * SDK instance cache for reuse\n */\nclass SDKCache {\n private cache = new Map<string, SDKCacheEntry>();\n private maxSize = 10;\n private defaultTtlMs = 30 * 60 * 1000; // 30 minutes\n\n /**\n * Generate config key for SDK instance\n */\n private generateConfigKey(config: unknown): string {\n return Buffer.from(JSON.stringify(config)).toString('base64');\n }\n\n /**\n * Get cached SDK instance\n */\n get(config: Record<string, unknown>): InscriptionSDK | null {\n const configKey = this.generateConfigKey(config);\n const entry = this.cache.get(configKey);\n\n if (!entry) {\n return null;\n }\n\n const now = Date.now();\n if (now - entry.timestamp > this.defaultTtlMs) {\n this.cache.delete(configKey);\n return null;\n }\n\n return entry.sdk;\n }\n\n /**\n * Store SDK instance in cache\n */\n set(config: Record<string, unknown>, sdk: InscriptionSDK): void {\n const configKey = this.generateConfigKey(config);\n\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(configKey, {\n sdk,\n timestamp: Date.now(),\n config: configKey,\n });\n }\n\n /**\n * Clear all cached SDK instances\n */\n clear(): void {\n this.cache.clear();\n }\n}\n\nconst quoteCache = new QuoteCache();\nconst sdkCache = new SDKCache();\n\n/**\n * Get or create SDK instance with caching\n */\nexport async function getOrCreateSDK(\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n existingSDK?: InscriptionSDK,\n): Promise<InscriptionSDK> {\n if (existingSDK) {\n return existingSDK;\n }\n\n const connectionMode = options.connectionMode ?? 'websocket';\n\n const cacheConfig = {\n apiKey: options.apiKey,\n accountId: clientConfig.accountId,\n network: clientConfig.network || 'mainnet',\n authType: options.apiKey ? 'api' : 'server',\n connectionMode,\n };\n\n const cachedSDK = sdkCache.get(cacheConfig);\n if (cachedSDK) {\n return cachedSDK;\n }\n\n let sdk: InscriptionSDK;\n\n if (options.apiKey) {\n sdk = new InscriptionSDK({\n apiKey: options.apiKey,\n network: clientConfig.network || 'mainnet',\n connectionMode,\n });\n } else {\n sdk = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId: clientConfig.accountId,\n privateKey:\n typeof clientConfig.privateKey === 'string'\n ? clientConfig.privateKey\n : clientConfig.privateKey.toString(),\n network: clientConfig.network || 'mainnet',\n connectionMode,\n });\n }\n\n sdkCache.set(cacheConfig, sdk);\n return sdk;\n}\n\n/**\n * Check if quote is cached and return it if valid\n */\nexport function getCachedQuote(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n): QuoteResult | null {\n const cacheKey = quoteCache.createCacheKey(input, clientConfig, options);\n return quoteCache.get(cacheKey);\n}\n\n/**\n * Cache a generated quote\n */\nexport function cacheQuote(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n quote: QuoteResult,\n): void {\n const cacheKey = quoteCache.createCacheKey(input, clientConfig, options);\n const quoteTtlMs = 10 * 60 * 1000;\n quoteCache.set(cacheKey, quote, quoteTtlMs);\n}\n\n/**\n * Pre-validate parameters for early error detection\n */\nexport function validateQuoteParameters(\n input: unknown,\n clientConfig: NodeHederaClientConfig,\n options: InscriptionOptions,\n): void {\n if (!input || typeof input !== 'object' || !('type' in input)) {\n throw new Error('Invalid inscription input: type is required');\n }\n\n if (!clientConfig || !clientConfig.accountId) {\n throw new Error('Invalid client config: accountId is required');\n }\n\n if (!options) {\n throw new Error('Options are required');\n }\n\n if (options.mode === 'hashinal') {\n if (!options.metadata) {\n throw new Error('Hashinal mode requires metadata');\n }\n\n const requiredFields = ['name', 'creator', 'description', 'type'];\n const missingFields = requiredFields.filter(\n field => !options.metadata || !options.metadata[field],\n );\n\n if (missingFields.length > 0) {\n throw new Error(\n `Missing required Hashinal metadata fields: ${missingFields.join(', ')}`,\n );\n }\n }\n}\n\n/**\n * Clear all caches (useful for testing or memory management)\n */\nexport function clearAllCaches(): void {\n quoteCache.clear();\n sdkCache.clear();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es125.js","sources":["../../src/utils/crypto-abstraction.ts"],"sourcesContent":["/**\n * Crypto Abstraction Layer\n *\n * Provides a unified interface for cryptographic operations that works\n * across Node.js, browser, and SSR environments.\n */\n\nimport { detectCryptoEnvironment } from './crypto-env';\nimport {\n HashAdapter,\n NodeHashAdapter,\n WebHashAdapter,\n FallbackHashAdapter,\n} from './hash-adapter';\n\n/**\n * HMAC Adapter interface\n */\nexport interface HmacAdapter {\n update(data: Buffer): HmacAdapter;\n digest(encoding?: string): string | Buffer | Promise<string | Buffer>;\n}\n\n/**\n * Node.js HMAC adapter\n */\nexport class NodeHmacAdapter implements HmacAdapter {\n constructor(private nodeHmac: any) {}\n\n update(data: Buffer): HmacAdapter {\n this.nodeHmac.update(data);\n return this;\n }\n\n digest(encoding?: string): string | Buffer {\n return this.nodeHmac.digest(encoding);\n }\n}\n\n/**\n * WebCrypto HMAC adapter\n */\nexport class WebHmacAdapter implements HmacAdapter {\n private data: Buffer[] = [];\n\n constructor(\n private key: Buffer,\n private algorithm: string = 'sha256',\n ) {}\n\n update(data: Buffer): HmacAdapter {\n this.data.push(data);\n return this;\n }\n\n async digest(encoding?: string): Promise<string | Buffer> {\n const combined = Buffer.concat(this.data);\n const keyBytes = new Uint8Array(this.key);\n const webCrypto = globalThis.crypto;\n if (!webCrypto?.subtle) {\n throw new Error('WebCrypto not available');\n }\n const keyBuffer = await webCrypto.subtle.importKey(\n 'raw',\n keyBytes,\n { name: 'HMAC', hash: this.mapAlgorithm(this.algorithm) },\n false,\n ['sign'],\n );\n\n const signature = await webCrypto.subtle.sign(\n 'HMAC',\n keyBuffer,\n new Uint8Array(combined),\n );\n\n if (encoding === 'hex') {\n return Array.from(new Uint8Array(signature))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n return Buffer.from(signature);\n }\n\n private mapAlgorithm(algorithm: string): string {\n const algorithmMap: Record<string, string> = {\n sha256: 'SHA-256',\n sha1: 'SHA-1',\n sha512: 'SHA-512',\n };\n\n return algorithmMap[algorithm.toLowerCase()] || 'SHA-256';\n }\n}\n\n/**\n * Fallback HMAC adapter\n */\nexport class FallbackHmacAdapter implements HmacAdapter {\n private data: Buffer[] = [];\n\n constructor(\n private key: Buffer,\n private algorithm: string = 'sha256',\n ) {}\n\n update(data: Buffer): HmacAdapter {\n this.data.push(data);\n return this;\n }\n\n digest(encoding?: string): string {\n const combined = Buffer.concat(this.data);\n const hash = this.simpleHmac(combined, this.key);\n\n if (encoding === 'hex') {\n return hash.toString(16).padStart(8, '0');\n }\n\n return hash.toString();\n }\n\n private simpleHmac(data: Buffer, key: Buffer): number {\n let hash = 0;\n for (let i = 0; i < data.length; i++) {\n const keyByte = key[i % key.length];\n hash = ((hash << 5) - hash + data[i] + keyByte) & 0xffffffff;\n }\n return Math.abs(hash);\n }\n}\n\n/**\n * Main crypto adapter interface\n */\nexport interface CryptoAdapter {\n createHash(algorithm: string): HashAdapter;\n createHmac(algorithm: string, key: Buffer): HmacAdapter;\n pbkdf2(\n password: string,\n salt: Buffer,\n iterations: number,\n keylen: number,\n digest: string,\n ): Promise<Buffer>;\n timingSafeEqual(a: Buffer, b: Buffer): boolean;\n}\n\ndeclare const require: any;\n\n/**\n * Node.js crypto adapter\n */\nexport class NodeCryptoAdapter implements CryptoAdapter {\n private crypto: any;\n\n constructor() {\n try {\n const moduleName = 'cry' + 'pto';\n this.crypto = require(moduleName);\n } catch (error) {\n throw new Error('Node.js crypto module not available');\n }\n }\n\n createHash(algorithm: string): HashAdapter {\n return new NodeHashAdapter(this.crypto.createHash(algorithm));\n }\n\n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new NodeHmacAdapter(this.crypto.createHmac(algorithm, key));\n }\n\n async pbkdf2(\n password: string,\n salt: Buffer,\n iterations: number,\n keylen: number,\n digest: string,\n ): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n this.crypto.pbkdf2(\n password,\n salt,\n iterations,\n keylen,\n digest,\n (err: any, derivedKey: Buffer) => {\n if (err) reject(err);\n else resolve(derivedKey);\n },\n );\n });\n }\n\n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n return this.crypto.timingSafeEqual(a, b);\n }\n}\n\n/**\n * WebCrypto adapter\n */\nexport class WebCryptoAdapter implements CryptoAdapter {\n createHash(algorithm: string): HashAdapter {\n return new WebHashAdapter(algorithm);\n }\n\n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new WebHmacAdapter(key, algorithm);\n }\n\n async pbkdf2(\n password: string,\n salt: Buffer,\n iterations: number,\n keylen: number,\n digest: string,\n ): Promise<Buffer> {\n const encoder = new TextEncoder();\n const webCrypto = globalThis.crypto;\n if (!webCrypto?.subtle) {\n throw new Error('WebCrypto not available');\n }\n const keyMaterial = await webCrypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n { name: 'PBKDF2' },\n false,\n ['deriveBits'],\n );\n\n const derivedBits = await webCrypto.subtle.deriveBits(\n {\n name: 'PBKDF2',\n salt: new Uint8Array(salt),\n iterations: iterations,\n hash: this.mapDigest(digest),\n },\n keyMaterial,\n keylen * 8,\n );\n\n return Buffer.from(derivedBits);\n }\n\n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n if (a.length !== b.length) return false;\n\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return result === 0;\n }\n\n private mapDigest(digest: string): string {\n const digestMap: Record<string, string> = {\n sha256: 'SHA-256',\n sha1: 'SHA-1',\n sha512: 'SHA-512',\n };\n\n return digestMap[digest.toLowerCase()] || 'SHA-256';\n }\n}\n\n/**\n * Fallback crypto adapter for SSR\n */\nexport class FallbackCryptoAdapter implements CryptoAdapter {\n createHash(algorithm: string): HashAdapter {\n return new FallbackHashAdapter(algorithm);\n }\n\n createHmac(algorithm: string, key: Buffer): HmacAdapter {\n return new FallbackHmacAdapter(key, algorithm);\n }\n\n async pbkdf2(\n password: string,\n salt: Buffer,\n iterations: number,\n keylen: number,\n digest: string,\n ): Promise<Buffer> {\n const encoder = new TextEncoder();\n const passwordBuffer = Buffer.from(encoder.encode(password));\n let result = Buffer.alloc(keylen);\n\n for (let i = 0; i < iterations; i++) {\n const combined = Buffer.concat([passwordBuffer, salt, Buffer.from([i])]);\n let hash = 0;\n for (let j = 0; j < combined.length; j++) {\n hash = ((hash << 5) - hash + combined[j]) & 0xffffffff;\n }\n result[i % keylen] ^= hash & 0xff;\n }\n\n return result;\n }\n\n timingSafeEqual(a: Buffer, b: Buffer): boolean {\n if (a.length !== b.length) return false;\n\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return result === 0;\n }\n}\n\n/**\n * Get appropriate crypto adapter for current environment\n */\nexport function getCryptoAdapter(): CryptoAdapter {\n const env = detectCryptoEnvironment();\n\n switch (env.preferredAPI) {\n case 'node':\n try {\n return new NodeCryptoAdapter();\n } catch {\n const globalCrypto =\n typeof globalThis !== 'undefined' ? globalThis.crypto : undefined;\n if (typeof globalCrypto?.subtle !== 'undefined') {\n return new WebCryptoAdapter();\n }\n return new FallbackCryptoAdapter();\n }\n case 'web':\n return new WebCryptoAdapter();\n case 'none':\n default:\n return new FallbackCryptoAdapter();\n }\n}\n\n/**\n * Convenience function for simple hash operations\n */\nexport async function hash(\n content: Buffer | string,\n algorithm: string = 'sha256',\n): Promise<string> {\n const adapter = getCryptoAdapter();\n const hasher = adapter.createHash(algorithm);\n const buffer = typeof content === 'string' ? Buffer.from(content) : content;\n const result = hasher.update(buffer).digest('hex');\n\n if (result instanceof Promise) {\n return (await result) as string;\n }\n\n return result as string;\n}\n"],"names":["hash"],"mappings":"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"}