@stellar/stellar-sdk 16.0.1 → 16.2.0

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 (310) hide show
  1. package/README.md +41 -2
  2. package/dist/stellar-sdk-axios.js +5401 -3690
  3. package/dist/stellar-sdk-axios.js.map +1 -1
  4. package/dist/stellar-sdk-axios.min.js +12 -11
  5. package/dist/stellar-sdk-axios.min.js.map +1 -1
  6. package/dist/stellar-sdk.js +4850 -3681
  7. package/dist/stellar-sdk.js.map +1 -1
  8. package/dist/stellar-sdk.min.js +17 -17
  9. package/dist/stellar-sdk.min.js.map +1 -1
  10. package/lib/axios/cjs/base/auth.js +147 -30
  11. package/lib/axios/cjs/base/auth.js.map +1 -1
  12. package/lib/axios/cjs/base/index.js +113 -0
  13. package/lib/axios/cjs/base/index.js.map +1 -0
  14. package/lib/axios/cjs/base/keypair.js +39 -0
  15. package/lib/axios/cjs/base/keypair.js.map +1 -1
  16. package/lib/axios/cjs/base/scval.js +34 -0
  17. package/lib/axios/cjs/base/scval.js.map +1 -1
  18. package/lib/axios/cjs/bindings/client.js +170 -0
  19. package/lib/axios/cjs/bindings/client.js.map +1 -1
  20. package/lib/axios/cjs/bindings/config.js +1 -1
  21. package/lib/axios/cjs/bindings/generator.js +45 -16
  22. package/lib/axios/cjs/bindings/generator.js.map +1 -1
  23. package/lib/axios/cjs/bindings/types.js +151 -1
  24. package/lib/axios/cjs/bindings/types.js.map +1 -1
  25. package/lib/axios/cjs/bindings/utils.js +10 -0
  26. package/lib/axios/cjs/bindings/utils.js.map +1 -1
  27. package/lib/axios/cjs/cli/index.js +19 -22
  28. package/lib/axios/cjs/cli/index.js.map +1 -1
  29. package/lib/axios/cjs/cli/util.js +1 -20
  30. package/lib/axios/cjs/cli/util.js.map +1 -1
  31. package/lib/axios/cjs/contract/assembled_transaction.js +39 -17
  32. package/lib/axios/cjs/contract/assembled_transaction.js.map +1 -1
  33. package/lib/axios/cjs/contract/basic_node_signer.js +8 -42
  34. package/lib/axios/cjs/contract/basic_node_signer.js.map +1 -1
  35. package/lib/axios/cjs/contract/client.js +56 -3
  36. package/lib/axios/cjs/contract/client.js.map +1 -1
  37. package/lib/axios/cjs/contract/event_spec.js +164 -0
  38. package/lib/axios/cjs/contract/event_spec.js.map +1 -0
  39. package/lib/axios/cjs/contract/index.js +2 -0
  40. package/lib/axios/cjs/contract/index.js.map +1 -1
  41. package/lib/axios/cjs/contract/sent_transaction.js +0 -20
  42. package/lib/axios/cjs/contract/sent_transaction.js.map +1 -1
  43. package/lib/axios/cjs/contract/signer.js +96 -0
  44. package/lib/axios/cjs/contract/signer.js.map +1 -0
  45. package/lib/axios/cjs/contract/spec.js +107 -3
  46. package/lib/axios/cjs/contract/spec.js.map +1 -1
  47. package/lib/axios/cjs/contract/types.js.map +1 -1
  48. package/lib/axios/cjs/errors/transaction_failed.js +62 -0
  49. package/lib/axios/cjs/errors/transaction_failed.js.map +1 -0
  50. package/lib/axios/cjs/errors/wrap_http_error.js +20 -0
  51. package/lib/axios/cjs/errors/wrap_http_error.js.map +1 -0
  52. package/lib/axios/cjs/federation/server.js +15 -35
  53. package/lib/axios/cjs/federation/server.js.map +1 -1
  54. package/lib/axios/cjs/horizon/account_response.js +0 -20
  55. package/lib/axios/cjs/horizon/account_response.js.map +1 -1
  56. package/lib/axios/cjs/horizon/horizon_api.js +5 -0
  57. package/lib/axios/cjs/horizon/horizon_api.js.map +1 -1
  58. package/lib/axios/cjs/horizon/horizon_axios_client.js +1 -1
  59. package/lib/axios/cjs/horizon/server.js +20 -26
  60. package/lib/axios/cjs/horizon/server.js.map +1 -1
  61. package/lib/axios/cjs/index.js +66 -65
  62. package/lib/axios/cjs/index.js.map +1 -1
  63. package/lib/axios/cjs/rpc/api.js.map +1 -1
  64. package/lib/axios/cjs/rpc/axios.js +1 -1
  65. package/lib/axios/cjs/rpc/server.js +181 -13
  66. package/lib/axios/cjs/rpc/server.js.map +1 -1
  67. package/lib/axios/cjs/rpc/transaction.js +2 -20
  68. package/lib/axios/cjs/rpc/transaction.js.map +1 -1
  69. package/lib/axios/cjs/webauth/challenge_transaction.js +7 -22
  70. package/lib/axios/cjs/webauth/challenge_transaction.js.map +1 -1
  71. package/lib/axios/cjs/webauth/utils.js +1 -20
  72. package/lib/axios/cjs/webauth/utils.js.map +1 -1
  73. package/lib/axios/esm/base/auth.d.ts +181 -13
  74. package/lib/axios/esm/base/auth.js +146 -31
  75. package/lib/axios/esm/base/auth.js.map +1 -1
  76. package/lib/axios/esm/base/index.d.ts +2 -2
  77. package/lib/axios/esm/base/index.js +44 -0
  78. package/lib/axios/esm/base/index.js.map +1 -0
  79. package/lib/axios/esm/base/keypair.d.ts +27 -0
  80. package/lib/axios/esm/base/keypair.js +39 -0
  81. package/lib/axios/esm/base/keypair.js.map +1 -1
  82. package/lib/axios/esm/base/scval.d.ts +4 -0
  83. package/lib/axios/esm/base/scval.js +34 -0
  84. package/lib/axios/esm/base/scval.js.map +1 -1
  85. package/lib/axios/esm/bindings/client.d.ts +39 -0
  86. package/lib/axios/esm/bindings/client.js +171 -1
  87. package/lib/axios/esm/bindings/client.js.map +1 -1
  88. package/lib/axios/esm/bindings/config.js +1 -1
  89. package/lib/axios/esm/bindings/generator.d.ts +34 -0
  90. package/lib/axios/esm/bindings/generator.js +45 -16
  91. package/lib/axios/esm/bindings/generator.js.map +1 -1
  92. package/lib/axios/esm/bindings/types.d.ts +42 -0
  93. package/lib/axios/esm/bindings/types.js +153 -3
  94. package/lib/axios/esm/bindings/types.js.map +1 -1
  95. package/lib/axios/esm/bindings/utils.d.ts +10 -0
  96. package/lib/axios/esm/bindings/utils.js +9 -1
  97. package/lib/axios/esm/bindings/utils.js.map +1 -1
  98. package/lib/axios/esm/cli/index.js +19 -22
  99. package/lib/axios/esm/cli/index.js.map +1 -1
  100. package/lib/axios/esm/cli/util.d.ts +1 -1
  101. package/lib/axios/esm/cli/util.js +1 -20
  102. package/lib/axios/esm/cli/util.js.map +1 -1
  103. package/lib/axios/esm/contract/assembled_transaction.d.ts +7 -5
  104. package/lib/axios/esm/contract/assembled_transaction.js +39 -17
  105. package/lib/axios/esm/contract/assembled_transaction.js.map +1 -1
  106. package/lib/axios/esm/contract/basic_node_signer.d.ts +3 -0
  107. package/lib/axios/esm/contract/basic_node_signer.js +8 -42
  108. package/lib/axios/esm/contract/basic_node_signer.js.map +1 -1
  109. package/lib/axios/esm/contract/client.d.ts +49 -3
  110. package/lib/axios/esm/contract/client.js +56 -3
  111. package/lib/axios/esm/contract/client.js.map +1 -1
  112. package/lib/axios/esm/contract/event_spec.d.ts +78 -0
  113. package/lib/axios/esm/contract/event_spec.js +159 -0
  114. package/lib/axios/esm/contract/event_spec.js.map +1 -0
  115. package/lib/axios/esm/contract/index.d.ts +3 -0
  116. package/lib/axios/esm/contract/index.js +1 -0
  117. package/lib/axios/esm/contract/index.js.map +1 -1
  118. package/lib/axios/esm/contract/sent_transaction.js +0 -20
  119. package/lib/axios/esm/contract/sent_transaction.js.map +1 -1
  120. package/lib/axios/esm/contract/signer.d.ts +104 -0
  121. package/lib/axios/esm/contract/signer.js +91 -0
  122. package/lib/axios/esm/contract/signer.js.map +1 -0
  123. package/lib/axios/esm/contract/spec.d.ts +84 -0
  124. package/lib/axios/esm/contract/spec.js +107 -3
  125. package/lib/axios/esm/contract/spec.js.map +1 -1
  126. package/lib/axios/esm/contract/types.d.ts +25 -8
  127. package/lib/axios/esm/contract/types.js.map +1 -1
  128. package/lib/axios/esm/errors/index.d.ts +1 -0
  129. package/lib/axios/esm/errors/transaction_failed.d.ts +55 -0
  130. package/lib/axios/esm/errors/transaction_failed.js +60 -0
  131. package/lib/axios/esm/errors/transaction_failed.js.map +1 -0
  132. package/lib/axios/esm/errors/wrap_http_error.d.ts +20 -0
  133. package/lib/axios/esm/errors/wrap_http_error.js +18 -0
  134. package/lib/axios/esm/errors/wrap_http_error.js.map +1 -0
  135. package/lib/axios/esm/federation/server.js +15 -35
  136. package/lib/axios/esm/federation/server.js.map +1 -1
  137. package/lib/axios/esm/horizon/account_response.js +0 -20
  138. package/lib/axios/esm/horizon/account_response.js.map +1 -1
  139. package/lib/axios/esm/horizon/horizon_api.d.ts +12 -1
  140. package/lib/axios/esm/horizon/horizon_api.js +5 -0
  141. package/lib/axios/esm/horizon/horizon_api.js.map +1 -1
  142. package/lib/axios/esm/horizon/horizon_axios_client.js +1 -1
  143. package/lib/axios/esm/horizon/server.d.ts +10 -4
  144. package/lib/axios/esm/horizon/server.js +20 -26
  145. package/lib/axios/esm/horizon/server.js.map +1 -1
  146. package/lib/axios/esm/index.js +27 -29
  147. package/lib/axios/esm/index.js.map +1 -1
  148. package/lib/axios/esm/rpc/api.d.ts +21 -0
  149. package/lib/axios/esm/rpc/api.js.map +1 -1
  150. package/lib/axios/esm/rpc/axios.js +1 -1
  151. package/lib/axios/esm/rpc/server.d.ts +115 -3
  152. package/lib/axios/esm/rpc/server.js +181 -13
  153. package/lib/axios/esm/rpc/server.js.map +1 -1
  154. package/lib/axios/esm/rpc/transaction.js +2 -20
  155. package/lib/axios/esm/rpc/transaction.js.map +1 -1
  156. package/lib/axios/esm/webauth/challenge_transaction.js +7 -22
  157. package/lib/axios/esm/webauth/challenge_transaction.js.map +1 -1
  158. package/lib/axios/esm/webauth/utils.js +1 -20
  159. package/lib/axios/esm/webauth/utils.js.map +1 -1
  160. package/lib/cjs/base/auth.js +147 -30
  161. package/lib/cjs/base/auth.js.map +1 -1
  162. package/lib/cjs/base/index.js +113 -0
  163. package/lib/cjs/base/index.js.map +1 -0
  164. package/lib/cjs/base/keypair.js +39 -0
  165. package/lib/cjs/base/keypair.js.map +1 -1
  166. package/lib/cjs/base/scval.js +34 -0
  167. package/lib/cjs/base/scval.js.map +1 -1
  168. package/lib/cjs/bindings/client.js +170 -0
  169. package/lib/cjs/bindings/client.js.map +1 -1
  170. package/lib/cjs/bindings/config.js +1 -1
  171. package/lib/cjs/bindings/generator.js +45 -16
  172. package/lib/cjs/bindings/generator.js.map +1 -1
  173. package/lib/cjs/bindings/types.js +151 -1
  174. package/lib/cjs/bindings/types.js.map +1 -1
  175. package/lib/cjs/bindings/utils.js +10 -0
  176. package/lib/cjs/bindings/utils.js.map +1 -1
  177. package/lib/cjs/cli/index.js +19 -22
  178. package/lib/cjs/cli/index.js.map +1 -1
  179. package/lib/cjs/cli/util.js +1 -20
  180. package/lib/cjs/cli/util.js.map +1 -1
  181. package/lib/cjs/contract/assembled_transaction.js +39 -17
  182. package/lib/cjs/contract/assembled_transaction.js.map +1 -1
  183. package/lib/cjs/contract/basic_node_signer.js +8 -42
  184. package/lib/cjs/contract/basic_node_signer.js.map +1 -1
  185. package/lib/cjs/contract/client.js +56 -3
  186. package/lib/cjs/contract/client.js.map +1 -1
  187. package/lib/cjs/contract/event_spec.js +164 -0
  188. package/lib/cjs/contract/event_spec.js.map +1 -0
  189. package/lib/cjs/contract/index.js +2 -0
  190. package/lib/cjs/contract/index.js.map +1 -1
  191. package/lib/cjs/contract/sent_transaction.js +0 -20
  192. package/lib/cjs/contract/sent_transaction.js.map +1 -1
  193. package/lib/cjs/contract/signer.js +96 -0
  194. package/lib/cjs/contract/signer.js.map +1 -0
  195. package/lib/cjs/contract/spec.js +107 -3
  196. package/lib/cjs/contract/spec.js.map +1 -1
  197. package/lib/cjs/contract/types.js.map +1 -1
  198. package/lib/cjs/errors/transaction_failed.js +62 -0
  199. package/lib/cjs/errors/transaction_failed.js.map +1 -0
  200. package/lib/cjs/errors/wrap_http_error.js +20 -0
  201. package/lib/cjs/errors/wrap_http_error.js.map +1 -0
  202. package/lib/cjs/federation/server.js +15 -35
  203. package/lib/cjs/federation/server.js.map +1 -1
  204. package/lib/cjs/horizon/account_response.js +0 -20
  205. package/lib/cjs/horizon/account_response.js.map +1 -1
  206. package/lib/cjs/horizon/horizon_api.js +5 -0
  207. package/lib/cjs/horizon/horizon_api.js.map +1 -1
  208. package/lib/cjs/horizon/horizon_axios_client.js +1 -1
  209. package/lib/cjs/horizon/server.js +20 -26
  210. package/lib/cjs/horizon/server.js.map +1 -1
  211. package/lib/cjs/index.js +66 -65
  212. package/lib/cjs/index.js.map +1 -1
  213. package/lib/cjs/rpc/api.js.map +1 -1
  214. package/lib/cjs/rpc/axios.js +1 -1
  215. package/lib/cjs/rpc/server.js +181 -13
  216. package/lib/cjs/rpc/server.js.map +1 -1
  217. package/lib/cjs/rpc/transaction.js +2 -20
  218. package/lib/cjs/rpc/transaction.js.map +1 -1
  219. package/lib/cjs/webauth/challenge_transaction.js +7 -22
  220. package/lib/cjs/webauth/challenge_transaction.js.map +1 -1
  221. package/lib/cjs/webauth/utils.js +1 -20
  222. package/lib/cjs/webauth/utils.js.map +1 -1
  223. package/lib/esm/base/auth.d.ts +181 -13
  224. package/lib/esm/base/auth.js +146 -31
  225. package/lib/esm/base/auth.js.map +1 -1
  226. package/lib/esm/base/index.d.ts +2 -2
  227. package/lib/esm/base/index.js +44 -0
  228. package/lib/esm/base/index.js.map +1 -0
  229. package/lib/esm/base/keypair.d.ts +27 -0
  230. package/lib/esm/base/keypair.js +39 -0
  231. package/lib/esm/base/keypair.js.map +1 -1
  232. package/lib/esm/base/scval.d.ts +4 -0
  233. package/lib/esm/base/scval.js +34 -0
  234. package/lib/esm/base/scval.js.map +1 -1
  235. package/lib/esm/bindings/client.d.ts +39 -0
  236. package/lib/esm/bindings/client.js +171 -1
  237. package/lib/esm/bindings/client.js.map +1 -1
  238. package/lib/esm/bindings/config.js +1 -1
  239. package/lib/esm/bindings/generator.d.ts +34 -0
  240. package/lib/esm/bindings/generator.js +45 -16
  241. package/lib/esm/bindings/generator.js.map +1 -1
  242. package/lib/esm/bindings/types.d.ts +42 -0
  243. package/lib/esm/bindings/types.js +153 -3
  244. package/lib/esm/bindings/types.js.map +1 -1
  245. package/lib/esm/bindings/utils.d.ts +10 -0
  246. package/lib/esm/bindings/utils.js +9 -1
  247. package/lib/esm/bindings/utils.js.map +1 -1
  248. package/lib/esm/cli/index.js +19 -22
  249. package/lib/esm/cli/index.js.map +1 -1
  250. package/lib/esm/cli/util.d.ts +1 -1
  251. package/lib/esm/cli/util.js +1 -20
  252. package/lib/esm/cli/util.js.map +1 -1
  253. package/lib/esm/contract/assembled_transaction.d.ts +7 -5
  254. package/lib/esm/contract/assembled_transaction.js +39 -17
  255. package/lib/esm/contract/assembled_transaction.js.map +1 -1
  256. package/lib/esm/contract/basic_node_signer.d.ts +3 -0
  257. package/lib/esm/contract/basic_node_signer.js +8 -42
  258. package/lib/esm/contract/basic_node_signer.js.map +1 -1
  259. package/lib/esm/contract/client.d.ts +49 -3
  260. package/lib/esm/contract/client.js +56 -3
  261. package/lib/esm/contract/client.js.map +1 -1
  262. package/lib/esm/contract/event_spec.d.ts +78 -0
  263. package/lib/esm/contract/event_spec.js +159 -0
  264. package/lib/esm/contract/event_spec.js.map +1 -0
  265. package/lib/esm/contract/index.d.ts +3 -0
  266. package/lib/esm/contract/index.js +1 -0
  267. package/lib/esm/contract/index.js.map +1 -1
  268. package/lib/esm/contract/sent_transaction.js +0 -20
  269. package/lib/esm/contract/sent_transaction.js.map +1 -1
  270. package/lib/esm/contract/signer.d.ts +104 -0
  271. package/lib/esm/contract/signer.js +91 -0
  272. package/lib/esm/contract/signer.js.map +1 -0
  273. package/lib/esm/contract/spec.d.ts +84 -0
  274. package/lib/esm/contract/spec.js +107 -3
  275. package/lib/esm/contract/spec.js.map +1 -1
  276. package/lib/esm/contract/types.d.ts +25 -8
  277. package/lib/esm/contract/types.js.map +1 -1
  278. package/lib/esm/errors/index.d.ts +1 -0
  279. package/lib/esm/errors/transaction_failed.d.ts +55 -0
  280. package/lib/esm/errors/transaction_failed.js +60 -0
  281. package/lib/esm/errors/transaction_failed.js.map +1 -0
  282. package/lib/esm/errors/wrap_http_error.d.ts +20 -0
  283. package/lib/esm/errors/wrap_http_error.js +18 -0
  284. package/lib/esm/errors/wrap_http_error.js.map +1 -0
  285. package/lib/esm/federation/server.js +15 -35
  286. package/lib/esm/federation/server.js.map +1 -1
  287. package/lib/esm/horizon/account_response.js +0 -20
  288. package/lib/esm/horizon/account_response.js.map +1 -1
  289. package/lib/esm/horizon/horizon_api.d.ts +12 -1
  290. package/lib/esm/horizon/horizon_api.js +5 -0
  291. package/lib/esm/horizon/horizon_api.js.map +1 -1
  292. package/lib/esm/horizon/horizon_axios_client.js +1 -1
  293. package/lib/esm/horizon/server.d.ts +10 -4
  294. package/lib/esm/horizon/server.js +20 -26
  295. package/lib/esm/horizon/server.js.map +1 -1
  296. package/lib/esm/index.js +27 -29
  297. package/lib/esm/index.js.map +1 -1
  298. package/lib/esm/rpc/api.d.ts +21 -0
  299. package/lib/esm/rpc/api.js.map +1 -1
  300. package/lib/esm/rpc/axios.js +1 -1
  301. package/lib/esm/rpc/server.d.ts +115 -3
  302. package/lib/esm/rpc/server.js +181 -13
  303. package/lib/esm/rpc/server.js.map +1 -1
  304. package/lib/esm/rpc/transaction.js +2 -20
  305. package/lib/esm/rpc/transaction.js.map +1 -1
  306. package/lib/esm/webauth/challenge_transaction.js +7 -22
  307. package/lib/esm/webauth/challenge_transaction.js.map +1 -1
  308. package/lib/esm/webauth/utils.js +1 -20
  309. package/lib/esm/webauth/utils.js.map +1 -1
  310. package/package.json +35 -30
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/bindings/utils.ts"],"sourcesContent":["import { xdr } from \"../base/index.js\";\nexport function isNameReserved(name: string): boolean {\n const reservedNames = [\n // Keywords\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // Future reserved words\n \"enum\",\n // Strict mode reserved words\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n // Contextual keywords\n \"async\",\n \"await\",\n \"constructor\",\n // Literals\n \"null\",\n \"true\",\n \"false\",\n ];\n return reservedNames.includes(name);\n}\n/**\n * Sanitize a name to avoid reserved keywords\n * @param identifier - The identifier to sanitize\n * @returns The sanitized identifier\n */\nexport function sanitizeIdentifier(identifier: string): string {\n // Strip any characters outside the ASCII identifier-safe set [a-zA-Z0-9_$]\n const sanitized = identifier.replace(/[^a-zA-Z0-9_$]/g, \"_\");\n\n if (isNameReserved(sanitized)) {\n return sanitized + \"_\";\n }\n\n if (/^\\d/.test(sanitized)) {\n return \"_\" + sanitized;\n }\n\n // If the identifier was entirely special characters, provide a fallback\n if (sanitized === \"\" || /^_+$/.test(sanitized)) {\n return \"_unnamed\";\n }\n\n return sanitized;\n}\n\n/**\n * Escape a string for safe interpolation inside a double-quoted JavaScript string literal.\n */\nexport function escapeStringLiteral(str: string): string {\n return str\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n\n/**\n * Generate TypeScript type from XDR type definition\n */\nexport function parseTypeFromTypeDef(\n typeDef: xdr.ScSpecTypeDef,\n isFunctionInput = false,\n): string {\n switch (typeDef.switch()) {\n case xdr.ScSpecType.scSpecTypeVal():\n return \"any\";\n case xdr.ScSpecType.scSpecTypeBool():\n return \"boolean\";\n case xdr.ScSpecType.scSpecTypeVoid():\n return \"null\";\n case xdr.ScSpecType.scSpecTypeError():\n return \"Error\";\n case xdr.ScSpecType.scSpecTypeU32():\n case xdr.ScSpecType.scSpecTypeI32():\n return \"number\";\n case xdr.ScSpecType.scSpecTypeU64():\n case xdr.ScSpecType.scSpecTypeI64():\n case xdr.ScSpecType.scSpecTypeTimepoint():\n case xdr.ScSpecType.scSpecTypeDuration():\n case xdr.ScSpecType.scSpecTypeU128():\n case xdr.ScSpecType.scSpecTypeI128():\n case xdr.ScSpecType.scSpecTypeU256():\n case xdr.ScSpecType.scSpecTypeI256():\n return \"bigint\";\n case xdr.ScSpecType.scSpecTypeBytes():\n case xdr.ScSpecType.scSpecTypeBytesN():\n return \"Buffer\";\n case xdr.ScSpecType.scSpecTypeString():\n return \"string\";\n case xdr.ScSpecType.scSpecTypeSymbol():\n return \"string\";\n case xdr.ScSpecType.scSpecTypeAddress():\n case xdr.ScSpecType.scSpecTypeMuxedAddress(): {\n // function inputs can accept either string or Address\n if (isFunctionInput) {\n return \"string | Address\";\n }\n // Otherwise for backward compatibility use string\n return \"string\";\n }\n case xdr.ScSpecType.scSpecTypeVec(): {\n const vecType = parseTypeFromTypeDef(\n typeDef.vec().elementType(),\n isFunctionInput,\n );\n return `Array<${vecType}>`;\n }\n case xdr.ScSpecType.scSpecTypeMap(): {\n const keyType = parseTypeFromTypeDef(\n typeDef.map().keyType(),\n isFunctionInput,\n );\n const valueType = parseTypeFromTypeDef(\n typeDef.map().valueType(),\n isFunctionInput,\n );\n return `Map<${keyType}, ${valueType}>`;\n }\n case xdr.ScSpecType.scSpecTypeTuple(): {\n const tupleTypes = typeDef\n .tuple()\n .valueTypes()\n .map((t: xdr.ScSpecTypeDef) =>\n parseTypeFromTypeDef(t, isFunctionInput),\n );\n return `[${tupleTypes.join(\", \")}]`;\n }\n case xdr.ScSpecType.scSpecTypeOption(): {\n // Handle nested options\n while (\n typeDef.option().valueType().switch() ===\n xdr.ScSpecType.scSpecTypeOption()\n ) {\n typeDef = typeDef.option().valueType();\n }\n const optionType = parseTypeFromTypeDef(\n typeDef.option().valueType(),\n isFunctionInput,\n );\n\n return `${optionType} | null`;\n }\n case xdr.ScSpecType.scSpecTypeResult(): {\n const okType = parseTypeFromTypeDef(\n typeDef.result().okType(),\n isFunctionInput,\n );\n const errorType = parseTypeFromTypeDef(\n typeDef.result().errorType(),\n isFunctionInput,\n );\n return `Result<${okType}, ${errorType}>`;\n }\n case xdr.ScSpecType.scSpecTypeUdt(): {\n const udtName = sanitizeIdentifier(typeDef.udt().name().toString());\n return udtName;\n }\n default:\n return \"unknown\";\n }\n}\n\n/**\n * Imports needed for generating bindings\n */\nexport interface BindingImports {\n /** Imports needed from type definitions */\n typeFileImports: Set<string>;\n /** Imports needed from the Stellar SDK in the contract namespace */\n stellarContractImports: Set<string>;\n /** Imports needed from Stellar SDK in the global namespace */\n stellarImports: Set<string>;\n /** Whether Buffer import is needed */\n needsBufferImport: boolean;\n}\n\n/**\n * Extract nested type definitions from container types\n */\nfunction extractNestedTypes(typeDef: xdr.ScSpecTypeDef): xdr.ScSpecTypeDef[] {\n switch (typeDef.switch()) {\n case xdr.ScSpecType.scSpecTypeVec():\n return [typeDef.vec().elementType()];\n\n case xdr.ScSpecType.scSpecTypeMap():\n return [typeDef.map().keyType(), typeDef.map().valueType()];\n\n case xdr.ScSpecType.scSpecTypeTuple():\n return typeDef.tuple().valueTypes();\n\n case xdr.ScSpecType.scSpecTypeOption():\n return [typeDef.option().valueType()];\n\n case xdr.ScSpecType.scSpecTypeResult():\n return [typeDef.result().okType(), typeDef.result().errorType()];\n\n default:\n return [];\n }\n}\n\n/**\n * Visitor to collect imports from a single type definition\n */\nfunction visitTypeDef(\n typeDef: xdr.ScSpecTypeDef,\n accumulator: BindingImports,\n): void {\n const typeSwitch = typeDef.switch();\n\n // Handle leaf types (no nested types)\n switch (typeSwitch) {\n case xdr.ScSpecType.scSpecTypeUdt():\n accumulator.typeFileImports.add(\n sanitizeIdentifier(typeDef.udt().name().toString()),\n );\n return;\n\n case xdr.ScSpecType.scSpecTypeAddress():\n case xdr.ScSpecType.scSpecTypeMuxedAddress():\n accumulator.stellarImports.add(\"Address\");\n return;\n\n case xdr.ScSpecType.scSpecTypeBytes():\n case xdr.ScSpecType.scSpecTypeBytesN():\n accumulator.needsBufferImport = true;\n return;\n\n case xdr.ScSpecType.scSpecTypeVal():\n accumulator.stellarImports.add(\"xdr\");\n return;\n\n case xdr.ScSpecType.scSpecTypeResult():\n accumulator.stellarContractImports.add(\"Result\");\n // Fall through to handle nested types\n break;\n\n // Primitive types that need no imports\n case xdr.ScSpecType.scSpecTypeBool():\n case xdr.ScSpecType.scSpecTypeVoid():\n case xdr.ScSpecType.scSpecTypeError():\n case xdr.ScSpecType.scSpecTypeU32():\n case xdr.ScSpecType.scSpecTypeI32():\n case xdr.ScSpecType.scSpecTypeU64():\n case xdr.ScSpecType.scSpecTypeI64():\n case xdr.ScSpecType.scSpecTypeTimepoint():\n case xdr.ScSpecType.scSpecTypeDuration():\n case xdr.ScSpecType.scSpecTypeU128():\n case xdr.ScSpecType.scSpecTypeI128():\n case xdr.ScSpecType.scSpecTypeU256():\n case xdr.ScSpecType.scSpecTypeI256():\n case xdr.ScSpecType.scSpecTypeString():\n case xdr.ScSpecType.scSpecTypeSymbol():\n return;\n }\n\n // Handle container types (have nested types)\n const nestedTypes = extractNestedTypes(typeDef);\n nestedTypes.forEach((nested) => visitTypeDef(nested, accumulator));\n}\n\n/**\n * Generate imports needed for a list of type definitions\n */\nexport function generateTypeImports(\n typeDefs: xdr.ScSpecTypeDef[],\n): BindingImports {\n const imports: BindingImports = {\n typeFileImports: new Set<string>(),\n stellarContractImports: new Set<string>(),\n stellarImports: new Set<string>(),\n needsBufferImport: false,\n };\n\n // Visit each type definition\n typeDefs.forEach((typeDef) => visitTypeDef(typeDef, imports));\n\n return imports;\n}\n\n/**\n * Options for formatting imports\n */\nexport interface FormatImportsOptions {\n /** Whether to include imports from types.ts */\n includeTypeFileImports?: boolean;\n /** Additional imports needed from stellar/stellar-sdk/contract */\n additionalStellarContractImports?: string[];\n /** Additional imports needed from stellar/stellar-sdk */\n additionalStellarImports?: string[];\n}\n\n/**\n * Format imports into import statement strings\n */\nexport function formatImports(\n imports: BindingImports,\n options?: FormatImportsOptions,\n): string {\n const importLines: string[] = [];\n\n const typeFileImports = imports.typeFileImports;\n const stellarContractImports = [\n ...imports.stellarContractImports,\n ...(options?.additionalStellarContractImports || []),\n ];\n const stellarImports = [\n ...imports.stellarImports,\n ...(options?.additionalStellarImports || []),\n ];\n // Type file imports (only if enabled)\n if (options?.includeTypeFileImports && typeFileImports.size > 0) {\n importLines.push(\n `import {${Array.from(typeFileImports).join(\", \")}} from './types.js';`,\n );\n }\n\n // Stellar contract imports\n if (stellarContractImports.length > 0) {\n const uniqueContractImports = Array.from(new Set(stellarContractImports));\n importLines.push(\n `import {${uniqueContractImports.join(\", \")}} from '@stellar/stellar-sdk/contract';`,\n );\n }\n\n // Stellar SDK imports\n if (stellarImports.length > 0) {\n const uniqueStellarImports = Array.from(new Set(stellarImports));\n importLines.push(\n `import {${uniqueStellarImports.join(\", \")}} from '@stellar/stellar-sdk';`,\n );\n }\n\n // Buffer import\n if (imports.needsBufferImport) {\n importLines.push(`import { Buffer } from 'buffer';`);\n }\n\n return importLines.join(\"\\n\");\n}\n\n/**\n * Escape special characters in JSDoc comment content\n */\nfunction escapeJSDocContent(text: string): string {\n return (\n text\n // Escape closing comment sequences that would break the JSDoc block\n .replace(/\\*\\//g, \"* /\")\n // Escape @ symbols at word boundaries to prevent accidental JSDoc tags\n // We allow common JSDoc tags to pass through\n .replace(\n /@(?!(param|returns?|type|throws?|example|deprecated|see|link|since|author|version|description|summary)\\b)/g,\n \"\\\\@\",\n )\n );\n}\n\n/**\n * Format a comment string as JSDoc with proper escaping\n */\nexport function formatJSDocComment(comment: string, indentLevel = 0): string {\n if (comment.trim() === \"\") {\n return \"\";\n }\n const indent = \" \".repeat(indentLevel);\n\n // Escape special characters and split into lines\n const escapedComment = escapeJSDocContent(comment);\n const lines = escapedComment\n .split(\"\\n\")\n .map((line) => `${indent} * ${line}`.trimEnd());\n\n return `${indent}/**\\n${lines.join(\"\\n\")}\\n${indent} */\\n`;\n}\n\nexport function isTupleStruct(udtStruct: xdr.ScSpecUdtStructV0): boolean {\n const fields = udtStruct.fields();\n // A tuple struct has unnamed fields\n return fields.every(\n (field, index) => field.name().toString().trim() === index.toString(),\n );\n}\n"],"names":["xdr"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/bindings/utils.ts"],"sourcesContent":["import { xdr } from \"../base/index.js\";\nexport function isNameReserved(name: string): boolean {\n const reservedNames = [\n // Keywords\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // Future reserved words\n \"enum\",\n // Strict mode reserved words\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n // Contextual keywords\n \"async\",\n \"await\",\n \"constructor\",\n // Literals\n \"null\",\n \"true\",\n \"false\",\n ];\n return reservedNames.includes(name);\n}\n/**\n * Sanitize a name to avoid reserved keywords\n * @param identifier - The identifier to sanitize\n * @returns The sanitized identifier\n */\nexport function sanitizeIdentifier(identifier: string): string {\n // Strip any characters outside the ASCII identifier-safe set [a-zA-Z0-9_$]\n const sanitized = identifier.replace(/[^a-zA-Z0-9_$]/g, \"_\");\n\n if (isNameReserved(sanitized)) {\n return sanitized + \"_\";\n }\n\n if (/^\\d/.test(sanitized)) {\n return \"_\" + sanitized;\n }\n\n // If the identifier was entirely special characters, provide a fallback\n if (sanitized === \"\" || /^_+$/.test(sanitized)) {\n return \"_unnamed\";\n }\n\n return sanitized;\n}\n\n/**\n * Escape a string for safe interpolation inside a double-quoted JavaScript string literal.\n */\nexport function escapeStringLiteral(str: string): string {\n return str\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n\n/**\n * Generate TypeScript type from XDR type definition\n */\nexport function parseTypeFromTypeDef(\n typeDef: xdr.ScSpecTypeDef,\n isFunctionInput = false,\n): string {\n switch (typeDef.switch()) {\n case xdr.ScSpecType.scSpecTypeVal():\n return \"any\";\n case xdr.ScSpecType.scSpecTypeBool():\n return \"boolean\";\n case xdr.ScSpecType.scSpecTypeVoid():\n return \"null\";\n case xdr.ScSpecType.scSpecTypeError():\n return \"Error\";\n case xdr.ScSpecType.scSpecTypeU32():\n case xdr.ScSpecType.scSpecTypeI32():\n return \"number\";\n case xdr.ScSpecType.scSpecTypeU64():\n case xdr.ScSpecType.scSpecTypeI64():\n case xdr.ScSpecType.scSpecTypeTimepoint():\n case xdr.ScSpecType.scSpecTypeDuration():\n case xdr.ScSpecType.scSpecTypeU128():\n case xdr.ScSpecType.scSpecTypeI128():\n case xdr.ScSpecType.scSpecTypeU256():\n case xdr.ScSpecType.scSpecTypeI256():\n return \"bigint\";\n case xdr.ScSpecType.scSpecTypeBytes():\n case xdr.ScSpecType.scSpecTypeBytesN():\n return \"Buffer\";\n case xdr.ScSpecType.scSpecTypeString():\n return \"string\";\n case xdr.ScSpecType.scSpecTypeSymbol():\n return \"string\";\n case xdr.ScSpecType.scSpecTypeAddress():\n case xdr.ScSpecType.scSpecTypeMuxedAddress(): {\n // function inputs can accept either string or Address\n if (isFunctionInput) {\n return \"string | Address\";\n }\n // Otherwise for backward compatibility use string\n return \"string\";\n }\n case xdr.ScSpecType.scSpecTypeVec(): {\n const vecType = parseTypeFromTypeDef(\n typeDef.vec().elementType(),\n isFunctionInput,\n );\n return `Array<${vecType}>`;\n }\n case xdr.ScSpecType.scSpecTypeMap(): {\n const keyType = parseTypeFromTypeDef(\n typeDef.map().keyType(),\n isFunctionInput,\n );\n const valueType = parseTypeFromTypeDef(\n typeDef.map().valueType(),\n isFunctionInput,\n );\n return `Map<${keyType}, ${valueType}>`;\n }\n case xdr.ScSpecType.scSpecTypeTuple(): {\n const tupleTypes = typeDef\n .tuple()\n .valueTypes()\n .map((t: xdr.ScSpecTypeDef) =>\n parseTypeFromTypeDef(t, isFunctionInput),\n );\n return `[${tupleTypes.join(\", \")}]`;\n }\n case xdr.ScSpecType.scSpecTypeOption(): {\n // Handle nested options\n while (\n typeDef.option().valueType().switch() ===\n xdr.ScSpecType.scSpecTypeOption()\n ) {\n typeDef = typeDef.option().valueType();\n }\n const optionType = parseTypeFromTypeDef(\n typeDef.option().valueType(),\n isFunctionInput,\n );\n\n return `${optionType} | null`;\n }\n case xdr.ScSpecType.scSpecTypeResult(): {\n const okType = parseTypeFromTypeDef(\n typeDef.result().okType(),\n isFunctionInput,\n );\n const errorType = parseTypeFromTypeDef(\n typeDef.result().errorType(),\n isFunctionInput,\n );\n return `Result<${okType}, ${errorType}>`;\n }\n case xdr.ScSpecType.scSpecTypeUdt(): {\n const udtName = sanitizeIdentifier(typeDef.udt().name().toString());\n return udtName;\n }\n default:\n return \"unknown\";\n }\n}\n\n/**\n * Imports needed for generating bindings\n */\nexport interface BindingImports {\n /** Imports needed from type definitions */\n typeFileImports: Set<string>;\n /** Imports needed from the Stellar SDK in the contract namespace */\n stellarContractImports: Set<string>;\n /** Imports needed from Stellar SDK in the global namespace */\n stellarImports: Set<string>;\n /** Whether Buffer import is needed */\n needsBufferImport: boolean;\n}\n\n/**\n * Extract nested type definitions from container types\n */\nfunction extractNestedTypes(typeDef: xdr.ScSpecTypeDef): xdr.ScSpecTypeDef[] {\n switch (typeDef.switch()) {\n case xdr.ScSpecType.scSpecTypeVec():\n return [typeDef.vec().elementType()];\n\n case xdr.ScSpecType.scSpecTypeMap():\n return [typeDef.map().keyType(), typeDef.map().valueType()];\n\n case xdr.ScSpecType.scSpecTypeTuple():\n return typeDef.tuple().valueTypes();\n\n case xdr.ScSpecType.scSpecTypeOption():\n return [typeDef.option().valueType()];\n\n case xdr.ScSpecType.scSpecTypeResult():\n return [typeDef.result().okType(), typeDef.result().errorType()];\n\n default:\n return [];\n }\n}\n\n/**\n * Visitor to collect imports from a single type definition\n */\nfunction visitTypeDef(\n typeDef: xdr.ScSpecTypeDef,\n accumulator: BindingImports,\n): void {\n const typeSwitch = typeDef.switch();\n\n // Handle leaf types (no nested types)\n switch (typeSwitch) {\n case xdr.ScSpecType.scSpecTypeUdt():\n accumulator.typeFileImports.add(\n sanitizeIdentifier(typeDef.udt().name().toString()),\n );\n return;\n\n case xdr.ScSpecType.scSpecTypeAddress():\n case xdr.ScSpecType.scSpecTypeMuxedAddress():\n accumulator.stellarImports.add(\"Address\");\n return;\n\n case xdr.ScSpecType.scSpecTypeBytes():\n case xdr.ScSpecType.scSpecTypeBytesN():\n accumulator.needsBufferImport = true;\n return;\n\n case xdr.ScSpecType.scSpecTypeVal():\n accumulator.stellarImports.add(\"xdr\");\n return;\n\n case xdr.ScSpecType.scSpecTypeResult():\n accumulator.stellarContractImports.add(\"Result\");\n // Fall through to handle nested types\n break;\n\n // Primitive types that need no imports\n case xdr.ScSpecType.scSpecTypeBool():\n case xdr.ScSpecType.scSpecTypeVoid():\n case xdr.ScSpecType.scSpecTypeError():\n case xdr.ScSpecType.scSpecTypeU32():\n case xdr.ScSpecType.scSpecTypeI32():\n case xdr.ScSpecType.scSpecTypeU64():\n case xdr.ScSpecType.scSpecTypeI64():\n case xdr.ScSpecType.scSpecTypeTimepoint():\n case xdr.ScSpecType.scSpecTypeDuration():\n case xdr.ScSpecType.scSpecTypeU128():\n case xdr.ScSpecType.scSpecTypeI128():\n case xdr.ScSpecType.scSpecTypeU256():\n case xdr.ScSpecType.scSpecTypeI256():\n case xdr.ScSpecType.scSpecTypeString():\n case xdr.ScSpecType.scSpecTypeSymbol():\n return;\n }\n\n // Handle container types (have nested types)\n const nestedTypes = extractNestedTypes(typeDef);\n nestedTypes.forEach((nested) => visitTypeDef(nested, accumulator));\n}\n\n/**\n * Generate imports needed for a list of type definitions\n */\nexport function generateTypeImports(\n typeDefs: xdr.ScSpecTypeDef[],\n): BindingImports {\n const imports: BindingImports = {\n typeFileImports: new Set<string>(),\n stellarContractImports: new Set<string>(),\n stellarImports: new Set<string>(),\n needsBufferImport: false,\n };\n\n // Visit each type definition\n typeDefs.forEach((typeDef) => visitTypeDef(typeDef, imports));\n\n return imports;\n}\n\n/**\n * Options for formatting imports\n */\nexport interface FormatImportsOptions {\n /** Whether to include imports from types.ts */\n includeTypeFileImports?: boolean;\n /** Additional imports needed from stellar/stellar-sdk/contract */\n additionalStellarContractImports?: string[];\n /** Additional imports needed from stellar/stellar-sdk */\n additionalStellarImports?: string[];\n}\n\n/**\n * Format imports into import statement strings\n */\nexport function formatImports(\n imports: BindingImports,\n options?: FormatImportsOptions,\n): string {\n const importLines: string[] = [];\n\n const typeFileImports = imports.typeFileImports;\n const stellarContractImports = [\n ...imports.stellarContractImports,\n ...(options?.additionalStellarContractImports || []),\n ];\n const stellarImports = [\n ...imports.stellarImports,\n ...(options?.additionalStellarImports || []),\n ];\n // Type file imports (only if enabled)\n if (options?.includeTypeFileImports && typeFileImports.size > 0) {\n importLines.push(\n `import {${Array.from(typeFileImports).join(\", \")}} from './types.js';`,\n );\n }\n\n // Stellar contract imports\n if (stellarContractImports.length > 0) {\n const uniqueContractImports = Array.from(new Set(stellarContractImports));\n importLines.push(\n `import {${uniqueContractImports.join(\", \")}} from '@stellar/stellar-sdk/contract';`,\n );\n }\n\n // Stellar SDK imports\n if (stellarImports.length > 0) {\n const uniqueStellarImports = Array.from(new Set(stellarImports));\n importLines.push(\n `import {${uniqueStellarImports.join(\", \")}} from '@stellar/stellar-sdk';`,\n );\n }\n\n // Buffer import\n if (imports.needsBufferImport) {\n importLines.push(`import { Buffer } from 'buffer';`);\n }\n\n return importLines.join(\"\\n\");\n}\n\n/**\n * Escape special characters in JSDoc comment content\n */\nfunction escapeJSDocContent(text: string): string {\n return (\n text\n // Escape closing comment sequences that would break the JSDoc block\n .replace(/\\*\\//g, \"* /\")\n // Escape @ symbols at word boundaries to prevent accidental JSDoc tags\n // We allow common JSDoc tags to pass through\n .replace(\n /@(?!(param|returns?|type|throws?|example|deprecated|see|link|since|author|version|description|summary)\\b)/g,\n \"\\\\@\",\n )\n );\n}\n\n/**\n * Format a comment string as JSDoc with proper escaping\n */\nexport function formatJSDocComment(comment: string, indentLevel = 0): string {\n if (comment.trim() === \"\") {\n return \"\";\n }\n const indent = \" \".repeat(indentLevel);\n\n // Escape special characters and split into lines\n const escapedComment = escapeJSDocContent(comment);\n const lines = escapedComment\n .split(\"\\n\")\n .map((line) => `${indent} * ${line}`.trimEnd());\n\n return `${indent}/**\\n${lines.join(\"\\n\")}\\n${indent} */\\n`;\n}\n\n/**\n * Convert a sanitized identifier (snake_case, kebab-case, etc.) to PascalCase.\n * Intended to be applied after {@link sanitizeIdentifier}.\n */\nexport function toPascalCase(identifier: string): string {\n const pascal = identifier\n .split(/[_$]+/)\n .filter((part) => part.length > 0)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n\n return pascal === \"\" ? \"Unnamed\" : pascal;\n}\n\n/**\n * Convert a sanitized identifier (snake_case, kebab-case, etc.) to camelCase.\n * Intended to be applied after {@link sanitizeIdentifier}.\n */\nexport function toCamelCase(identifier: string): string {\n const pascal = toPascalCase(identifier);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\nexport function isTupleStruct(udtStruct: xdr.ScSpecUdtStructV0): boolean {\n const fields = udtStruct.fields();\n // A tuple struct has unnamed fields\n return fields.every(\n (field, index) => field.name().toString().trim() === index.toString(),\n );\n}\n"],"names":["xdr"],"mappings":"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"}
@@ -4,27 +4,7 @@ var commander = require('commander');
4
4
  var path = require('path');
5
5
  var wasm_fetcher = require('../bindings/wasm_fetcher.js');
6
6
  var util = require('./util.js');
7
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js');
8
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js');
9
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js');
10
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js');
11
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js');
12
- require('buffer');
13
- require('../base/generated/curr_generated.js');
14
- require('@noble/hashes/sha2.js');
15
- require('../base/signing.js');
16
- require('../base/keypair.js');
17
- require('base32.js');
18
- require('../base/util/continued_fraction.js');
19
- require('../base/util/bignumber.js');
20
- require('../base/transaction_builder.js');
21
- require('../base/muxed_account.js');
22
7
  var network = require('../base/network.js');
23
- require('../base/scval.js');
24
- require('../base/numbers/uint128.js');
25
- require('../base/numbers/uint256.js');
26
- require('../base/numbers/int128.js');
27
- require('../base/numbers/int256.js');
28
8
 
29
9
  function _interopNamespace(e) {
30
10
  if (e && e.__esModule) return e;
@@ -126,7 +106,7 @@ function runCli() {
126
106
  let timeout;
127
107
  if (options.timeout) {
128
108
  timeout = parseInt(options.timeout, 10);
129
- if (Number.isNaN(timeout) || timeout <= 0) {
109
+ if (!/^\d+$/.test(options.timeout.trim()) || timeout <= 0) {
130
110
  throw new Error(
131
111
  `Invalid timeout value: ${options.timeout}. Must be a positive integer.`
132
112
  );
@@ -147,11 +127,28 @@ function runCli() {
147
127
  `
148
128
  \u2713 Generating TypeScript bindings for "${contractName}"...`
149
129
  );
150
- await util.generateAndWrite(generator, {
130
+ const bindings = await util.generateAndWrite(generator, {
151
131
  contractName,
152
132
  outputDir: path__namespace.resolve(options.outputDir),
153
133
  overwrite: options.overwrite
154
134
  });
135
+ for (const d of bindings.diagnostics) {
136
+ if (d.declarations > 1) {
137
+ console.warn(
138
+ `
139
+ \u26A0 Event "${d.rawName}" is declared ${d.declarations} times; declaration ${d.occurrence + 1} generated as ${d.interfaceName} with filter ${d.filterMethodName}(). Review the generated bindings to confirm which declaration you need.`
140
+ );
141
+ } else {
142
+ const renamed = [
143
+ ...d.interfaceRenamed ? [d.interfaceName] : [],
144
+ ...d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []
145
+ ];
146
+ console.warn(
147
+ `
148
+ \u26A0 Event "${d.rawName}": generated name${renamed.length > 1 ? "s" : ""} ${renamed.join(" and ")} ${renamed.length > 1 ? "were" : "was"} renamed to avoid a collision with another generated name.`
149
+ );
150
+ }
151
+ }
155
152
  console.log(
156
153
  `
157
154
  \u2713 Successfully generated bindings in ${options.outputDir}`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n if (Number.isNaN(timeout) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":["Networks","Command","createGenerator","logSourceInfo","deriveContractName","generateAndWrite","path","WasmFetchError"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n // require digits only, so values parseInt would otherwise silently\n // truncate (\"10abc\" -> 10, \"10.9\" -> 10) are rejected\n if (!/^\\d+$/.test(options.timeout.trim()) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n const bindings = await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n for (const d of bindings.diagnostics) {\n if (d.declarations > 1) {\n console.warn(\n `\\n⚠ Event \"${d.rawName}\" is declared ${d.declarations} times; ` +\n `declaration ${d.occurrence + 1} generated as ` +\n `${d.interfaceName} with filter ${d.filterMethodName}(). ` +\n `Review the generated bindings to confirm which declaration ` +\n `you need.`,\n );\n } else {\n const renamed = [\n ...(d.interfaceRenamed ? [d.interfaceName] : []),\n ...(d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []),\n ];\n console.warn(\n `\\n⚠ Event \"${d.rawName}\": generated name` +\n `${renamed.length > 1 ? \"s\" : \"\"} ${renamed.join(\" and \")} ` +\n `${renamed.length > 1 ? \"were\" : \"was\"} renamed to avoid a ` +\n `collision with another generated name.`,\n );\n }\n }\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":["Networks","Command","createGenerator","logSourceInfo","deriveContractName","generateAndWrite","path","WasmFetchError"],"mappings":"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"}
@@ -3,26 +3,6 @@
3
3
  var fs = require('fs/promises');
4
4
  var path = require('path');
5
5
  var generator = require('../bindings/generator.js');
6
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js');
7
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js');
8
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js');
9
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js');
10
- require('../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js');
11
- require('buffer');
12
- require('../base/generated/curr_generated.js');
13
- require('@noble/hashes/sha2.js');
14
- require('../base/signing.js');
15
- require('../base/keypair.js');
16
- require('base32.js');
17
- require('../base/util/continued_fraction.js');
18
- require('../base/util/bignumber.js');
19
- require('../base/transaction_builder.js');
20
- require('../base/muxed_account.js');
21
- require('../base/scval.js');
22
- require('../base/numbers/uint128.js');
23
- require('../base/numbers/uint256.js');
24
- require('../base/numbers/int128.js');
25
- require('../base/numbers/int256.js');
26
6
  var wasm_fetcher = require('../bindings/wasm_fetcher.js');
27
7
  var server = require('../rpc/server.js');
28
8
 
@@ -147,6 +127,7 @@ async function generateAndWrite(generator, options) {
147
127
  const { outputDir, overwrite = false, ...genOptions } = options;
148
128
  const bindings = generator.generate(genOptions);
149
129
  await writeBindings(outputDir, bindings, overwrite);
130
+ return bindings;
150
131
  }
151
132
  function logSourceInfo(source) {
152
133
  console.log("\nSource:");
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<void> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":["WasmFetchError","fs","BindingGenerator","server","RpcServer","generator","path"],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sources":["../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<GeneratedBindings> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n return bindings;\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":["WasmFetchError","fs","BindingGenerator","server","RpcServer","generator","path"],"mappings":"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"}
@@ -24,6 +24,7 @@ require('../base/numbers/uint128.js');
24
24
  require('../base/numbers/uint256.js');
25
25
  require('../base/numbers/int128.js');
26
26
  require('../base/numbers/int256.js');
27
+ var signer = require('./signer.js');
27
28
  var api = require('../rpc/api.js');
28
29
  var server = require('../rpc/server.js');
29
30
  var transaction = require('../rpc/transaction.js');
@@ -341,7 +342,10 @@ class AssembledTransaction {
341
342
  await tx.simulate({ restore: false });
342
343
  return tx;
343
344
  }
344
- simulate = async ({ restore } = {}) => {
345
+ simulate = async ({
346
+ restore,
347
+ useUpgradedAuth
348
+ } = {}) => {
345
349
  if (!this.built) {
346
350
  if (!this.raw) {
347
351
  throw new Error(
@@ -351,9 +355,15 @@ class AssembledTransaction {
351
355
  this.built = this.raw.build();
352
356
  }
353
357
  restore = restore ?? this.options.restore;
358
+ useUpgradedAuth = useUpgradedAuth ?? this.options.useUpgradedAuth;
354
359
  delete this.simulationResult;
355
360
  delete this.simulationTransactionData;
356
- this.simulation = await this.server.simulateTransaction(this.built);
361
+ this.simulation = await this.server.simulateTransaction(
362
+ this.built,
363
+ void 0,
364
+ void 0,
365
+ useUpgradedAuth
366
+ );
357
367
  if (restore && api.Api.isSimulationRestore(this.simulation)) {
358
368
  const account = await utils.getAccount(this.options, this.server);
359
369
  const result = await this.restoreFootprint(
@@ -370,7 +380,7 @@ class AssembledTransaction {
370
380
  networkPassphrase: this.options.networkPassphrase
371
381
  }).addOperation(op).setTimeout(this.options.timeoutInSeconds ?? types.DEFAULT_TIMEOUT);
372
382
  delete this.built;
373
- await this.simulate();
383
+ await this.simulate({ useUpgradedAuth });
374
384
  return this;
375
385
  }
376
386
  throw new AssembledTransaction.Errors.RestorationFailure(
@@ -455,7 +465,11 @@ You can set \`restore\` to true in the method options in order to automatically
455
465
  "This is a read call. It requires no signature or sending. Use `force: true` to sign and send anyway."
456
466
  );
457
467
  }
458
- if (!signTransaction) {
468
+ const signTx = signer.toSignTransaction(
469
+ signTransaction,
470
+ this.options.networkPassphrase
471
+ );
472
+ if (!signTx) {
459
473
  throw new AssembledTransaction.Errors.NoSigner(
460
474
  "You must provide a signTransaction function, either when calling `signAndSend` or when initializing your Client"
461
475
  );
@@ -486,7 +500,7 @@ You can set \`restore\` to true in the method options in order to automatically
486
500
  if (this.options.submit !== void 0)
487
501
  signOpts.submit = this.options.submit;
488
502
  if (this.options.submitUrl) signOpts.submitUrl = this.options.submitUrl;
489
- const { signedTxXdr: signature, error } = await signTransaction(
503
+ const { signedTxXdr: signature, error } = await signTx(
490
504
  this.built.toXDR(),
491
505
  signOpts
492
506
  );
@@ -525,8 +539,11 @@ You can set \`restore\` to true in the method options in order to automatically
525
539
  watcher
526
540
  } = {}) => {
527
541
  if (!this.signed) {
528
- const signer = signTransaction || this.options.signTransaction;
529
- const wrappedSignTransaction = this.options.submit && signer ? (tx, opts) => signer(tx, { ...opts, submit: false }) : signTransaction;
542
+ const signer$1 = signer.toSignTransaction(
543
+ signTransaction || this.options.signTransaction,
544
+ this.options.networkPassphrase
545
+ );
546
+ const wrappedSignTransaction = this.options.submit && signer$1 ? (tx, opts) => signer$1(tx, { ...opts, submit: false }) : signTransaction;
530
547
  await this.sign({ force, signTransaction: wrappedSignTransaction });
531
548
  }
532
549
  return this.send(watcher);
@@ -566,15 +583,16 @@ You can set \`restore\` to true in the method options in order to automatically
566
583
  const rawInvokeHostFunctionOp = this.built.operations[0];
567
584
  return [
568
585
  ...new Set(
569
- (rawInvokeHostFunctionOp.auth ?? []).map((entry) => auth.getAddressCredentials(entry.credentials())).filter(
570
- (addrAuth) => (
586
+ (rawInvokeHostFunctionOp.auth ?? []).map((entry) => auth.inspectAuthEntry(entry)).filter(
587
+ (info) => (
571
588
  // skip source-account credentials (no address payload), which
572
- // are covered by the envelope signature on the source account
573
- addrAuth !== null && (includeAlreadySigned || addrAuth.signature().switch().name === "scvVoid")
589
+ // are covered by the envelope signature on the source account.
590
+ // Only the top-level credentials (signers[0]) matter here — this
591
+ // method reports (and signAuthEntries signs) the top-level
592
+ // address, so unsigned delegate nodes must not keep it listed.
593
+ info.address !== null && (includeAlreadySigned || !info.signers[0].signed)
574
594
  )
575
- ).map(
576
- (addrAuth) => address.Address.fromScAddress(addrAuth.address()).toString()
577
- )
595
+ ).map((info) => info.address)
578
596
  )
579
597
  ];
580
598
  };
@@ -597,11 +615,15 @@ You can set \`restore\` to true in the method options in order to automatically
597
615
  signAuthEntries = async ({
598
616
  expiration = (async () => (await this.server.getLatestLedger()).sequence + 100)(),
599
617
  signAuthEntry = this.options.signAuthEntry,
600
- address: address$1 = this.options.publicKey,
618
+ address: address$1 = signer.signerAddress(signAuthEntry) ?? this.options.publicKey,
601
619
  authorizeEntry = auth.authorizeEntry
602
620
  } = {}) => {
603
621
  if (!this.built)
604
622
  throw new Error("Transaction has not yet been assembled or simulated");
623
+ const signAuth = signer.toSignAuthEntry(
624
+ signAuthEntry,
625
+ this.options.networkPassphrase
626
+ );
605
627
  if (authorizeEntry === auth.authorizeEntry) {
606
628
  const needsNonInvokerSigningBy = this.needsNonInvokerSigningBy();
607
629
  if (needsNonInvokerSigningBy.length === 0) {
@@ -614,7 +636,7 @@ You can set \`restore\` to true in the method options in order to automatically
614
636
  `No auth entries for public key "${address$1}"`
615
637
  );
616
638
  }
617
- if (!signAuthEntry) {
639
+ if (!signAuth) {
618
640
  throw new AssembledTransaction.Errors.NoSigner(
619
641
  "You must provide `signAuthEntry` or a custom `authorizeEntry`"
620
642
  );
@@ -634,7 +656,7 @@ You can set \`restore\` to true in the method options in order to automatically
634
656
  addrAuth.address()
635
657
  ).toString();
636
658
  if (authEntryAddress !== address$1) continue;
637
- const sign = signAuthEntry ?? Promise.resolve;
659
+ const sign = signAuth ?? Promise.resolve;
638
660
  authEntries[i] = await authorizeEntry(
639
661
  entry,
640
662
  async (preimage) => {