@hyperweb/telescope 1.15.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 (382) hide show
  1. package/README.md +1529 -0
  2. package/main/build.js +183 -0
  3. package/main/builder.js +229 -0
  4. package/main/bundle.js +162 -0
  5. package/main/bundler.js +100 -0
  6. package/main/cli.js +71 -0
  7. package/main/cmds.js +28 -0
  8. package/main/commands/download.js +122 -0
  9. package/main/commands/generate.js +151 -0
  10. package/main/commands/install.js +143 -0
  11. package/main/commands/transpile.js +197 -0
  12. package/main/contracts/generate.js +31 -0
  13. package/main/contracts/install.js +107 -0
  14. package/main/contracts/message-composer.js +31 -0
  15. package/main/contracts/react-query.js +31 -0
  16. package/main/contracts/recoil.js +31 -0
  17. package/main/file.js +20 -0
  18. package/main/generators/create-aggregated-lcd-client.js +87 -0
  19. package/main/generators/create-all-stargate-clients.js +96 -0
  20. package/main/generators/create-amino-converters.js +43 -0
  21. package/main/generators/create-bundle.js +83 -0
  22. package/main/generators/create-cosmwasm-bundle.js +15 -0
  23. package/main/generators/create-custom-stargate-clients.js +100 -0
  24. package/main/generators/create-helpers.js +119 -0
  25. package/main/generators/create-index.js +75 -0
  26. package/main/generators/create-lcd-client-all.js +116 -0
  27. package/main/generators/create-lcd-client-scoped.js +89 -0
  28. package/main/generators/create-lcd-clients.js +78 -0
  29. package/main/generators/create-mcp-server.js +1853 -0
  30. package/main/generators/create-mobx-bundle.js +52 -0
  31. package/main/generators/create-msg-funcs.js +132 -0
  32. package/main/generators/create-pinia-store-bundle.js +50 -0
  33. package/main/generators/create-pinia-store.js +90 -0
  34. package/main/generators/create-query-funcs.js +133 -0
  35. package/main/generators/create-react-query-bundle.js +103 -0
  36. package/main/generators/create-registries.js +49 -0
  37. package/main/generators/create-root-readme.js +259 -0
  38. package/main/generators/create-rpc-msg-client-all.js +135 -0
  39. package/main/generators/create-rpc-msg-client-scoped.js +114 -0
  40. package/main/generators/create-rpc-msg-clients.js +116 -0
  41. package/main/generators/create-rpc-ops-bundle.js +119 -0
  42. package/main/generators/create-rpc-query-client-all.js +137 -0
  43. package/main/generators/create-rpc-query-client-scoped.js +110 -0
  44. package/main/generators/create-rpc-query-clients.js +198 -0
  45. package/main/generators/create-sdk-module-stargate-clients.js +95 -0
  46. package/main/generators/create-stargate-clients.js +96 -0
  47. package/main/generators/create-types.js +164 -0
  48. package/main/generators/customize-utils.js +50 -0
  49. package/main/helpers/__test__/internalTimestamp.js +49 -0
  50. package/main/helpers/__test__/internalTimestampBigint.js +45 -0
  51. package/main/helpers/binary-coder.js +535 -0
  52. package/main/helpers/decimals.js +111 -0
  53. package/main/helpers/external-comet.js +52 -0
  54. package/main/helpers/external-icjs.js +36 -0
  55. package/main/helpers/external.js +31 -0
  56. package/main/helpers/grpc-gateway.js +348 -0
  57. package/main/helpers/grpc-web.js +14 -0
  58. package/main/helpers/helper-func-types-interface.js +106 -0
  59. package/main/helpers/helper-func-types.js +93 -0
  60. package/main/helpers/index.js +38 -0
  61. package/main/helpers/internal-for-bigint.js +259 -0
  62. package/main/helpers/internal.js +240 -0
  63. package/main/helpers/json-safe.js +12 -0
  64. package/main/helpers/mobx.js +80 -0
  65. package/main/helpers/pinia-endpoint.js +20 -0
  66. package/main/helpers/react-query-hooks-icjs.js +223 -0
  67. package/main/helpers/react-query-hooks.js +258 -0
  68. package/main/helpers/react-query.js +93 -0
  69. package/main/helpers/registry-helper.js +229 -0
  70. package/main/helpers/types-helper.js +165 -0
  71. package/main/helpers/utf8-helper.js +146 -0
  72. package/main/helpers/varint.js +486 -0
  73. package/main/helpers/vue-query-hooks.js +226 -0
  74. package/main/imports.js +416 -0
  75. package/main/index.js +24 -0
  76. package/main/parse.js +194 -0
  77. package/main/prompt.js +64 -0
  78. package/main/protod/bufbuild.js +87 -0
  79. package/main/protod/config.js +30 -0
  80. package/main/protod/git-repo.js +58 -0
  81. package/main/protod/index.js +17 -0
  82. package/main/protod/recursive.js +134 -0
  83. package/main/protod/types.js +2 -0
  84. package/main/protod/utils.js +91 -0
  85. package/main/telescope.js +10 -0
  86. package/main/types.js +2 -0
  87. package/main/utils/common-create-bundle.js +29 -0
  88. package/main/utils/contracts.js +39 -0
  89. package/main/utils/files.js +138 -0
  90. package/main/utils/index.js +163 -0
  91. package/main/utils/unused.js +73 -0
  92. package/module/build.js +176 -0
  93. package/module/builder.js +222 -0
  94. package/module/bundle.js +128 -0
  95. package/module/bundler.js +96 -0
  96. package/module/cli.js +44 -0
  97. package/module/cmds.js +22 -0
  98. package/module/commands/download.js +94 -0
  99. package/module/commands/generate.js +123 -0
  100. package/module/commands/install.js +141 -0
  101. package/module/commands/transpile.js +169 -0
  102. package/module/contracts/generate.js +29 -0
  103. package/module/contracts/install.js +105 -0
  104. package/module/contracts/message-composer.js +29 -0
  105. package/module/contracts/react-query.js +29 -0
  106. package/module/contracts/recoil.js +29 -0
  107. package/module/file.js +18 -0
  108. package/module/generators/create-aggregated-lcd-client.js +83 -0
  109. package/module/generators/create-all-stargate-clients.js +92 -0
  110. package/module/generators/create-amino-converters.js +39 -0
  111. package/module/generators/create-bundle.js +79 -0
  112. package/module/generators/create-cosmwasm-bundle.js +11 -0
  113. package/module/generators/create-custom-stargate-clients.js +96 -0
  114. package/module/generators/create-helpers.js +112 -0
  115. package/module/generators/create-index.js +45 -0
  116. package/module/generators/create-lcd-client-all.js +89 -0
  117. package/module/generators/create-lcd-client-scoped.js +62 -0
  118. package/module/generators/create-lcd-clients.js +74 -0
  119. package/module/generators/create-mcp-server.js +1849 -0
  120. package/module/generators/create-mobx-bundle.js +25 -0
  121. package/module/generators/create-msg-funcs.js +128 -0
  122. package/module/generators/create-pinia-store-bundle.js +23 -0
  123. package/module/generators/create-pinia-store.js +86 -0
  124. package/module/generators/create-query-funcs.js +129 -0
  125. package/module/generators/create-react-query-bundle.js +76 -0
  126. package/module/generators/create-registries.js +45 -0
  127. package/module/generators/create-root-readme.js +255 -0
  128. package/module/generators/create-rpc-msg-client-all.js +108 -0
  129. package/module/generators/create-rpc-msg-client-scoped.js +87 -0
  130. package/module/generators/create-rpc-msg-clients.js +112 -0
  131. package/module/generators/create-rpc-ops-bundle.js +92 -0
  132. package/module/generators/create-rpc-query-client-all.js +110 -0
  133. package/module/generators/create-rpc-query-client-scoped.js +83 -0
  134. package/module/generators/create-rpc-query-clients.js +198 -0
  135. package/module/generators/create-sdk-module-stargate-clients.js +91 -0
  136. package/module/generators/create-stargate-clients.js +92 -0
  137. package/module/generators/create-types.js +137 -0
  138. package/module/generators/customize-utils.js +46 -0
  139. package/module/helpers/__test__/internalTimestamp.js +39 -0
  140. package/module/helpers/__test__/internalTimestampBigint.js +38 -0
  141. package/module/helpers/binary-coder.js +531 -0
  142. package/module/helpers/decimals.js +108 -0
  143. package/module/helpers/external-comet.js +49 -0
  144. package/module/helpers/external-icjs.js +33 -0
  145. package/module/helpers/external.js +28 -0
  146. package/module/helpers/grpc-gateway.js +345 -0
  147. package/module/helpers/grpc-web.js +11 -0
  148. package/module/helpers/helper-func-types-interface.js +102 -0
  149. package/module/helpers/helper-func-types.js +89 -0
  150. package/module/helpers/index.js +22 -0
  151. package/module/helpers/internal-for-bigint.js +255 -0
  152. package/module/helpers/internal.js +236 -0
  153. package/module/helpers/json-safe.js +9 -0
  154. package/module/helpers/mobx.js +77 -0
  155. package/module/helpers/pinia-endpoint.js +17 -0
  156. package/module/helpers/react-query-hooks-icjs.js +219 -0
  157. package/module/helpers/react-query-hooks.js +254 -0
  158. package/module/helpers/react-query.js +89 -0
  159. package/module/helpers/registry-helper.js +225 -0
  160. package/module/helpers/types-helper.js +161 -0
  161. package/module/helpers/utf8-helper.js +143 -0
  162. package/module/helpers/varint.js +483 -0
  163. package/module/helpers/vue-query-hooks.js +222 -0
  164. package/module/imports.js +382 -0
  165. package/module/index.js +8 -0
  166. package/module/parse.js +185 -0
  167. package/module/prompt.js +58 -0
  168. package/module/protod/bufbuild.js +76 -0
  169. package/module/protod/config.js +27 -0
  170. package/module/protod/git-repo.js +54 -0
  171. package/module/protod/index.js +1 -0
  172. package/module/protod/recursive.js +125 -0
  173. package/module/protod/types.js +1 -0
  174. package/module/protod/utils.js +77 -0
  175. package/module/telescope.js +8 -0
  176. package/module/types.js +1 -0
  177. package/module/utils/common-create-bundle.js +25 -0
  178. package/module/utils/contracts.js +33 -0
  179. package/module/utils/files.js +106 -0
  180. package/module/utils/index.js +143 -0
  181. package/module/utils/unused.js +47 -0
  182. package/package.json +115 -0
  183. package/src/build.ts +255 -0
  184. package/src/builder.ts +302 -0
  185. package/src/bundle.ts +160 -0
  186. package/src/bundler.ts +153 -0
  187. package/src/cli.js +51 -0
  188. package/src/cmds.js +25 -0
  189. package/src/commands/download.ts +120 -0
  190. package/src/commands/generate.ts +156 -0
  191. package/src/commands/install.ts +154 -0
  192. package/src/commands/transpile.ts +198 -0
  193. package/src/contracts/generate.ts +33 -0
  194. package/src/contracts/install.ts +118 -0
  195. package/src/contracts/message-composer.ts +34 -0
  196. package/src/contracts/react-query.ts +33 -0
  197. package/src/contracts/recoil.ts +32 -0
  198. package/src/file.js +20 -0
  199. package/src/generators/create-aggregated-lcd-client.ts +133 -0
  200. package/src/generators/create-all-stargate-clients.ts +121 -0
  201. package/src/generators/create-amino-converters.ts +62 -0
  202. package/src/generators/create-bundle.ts +97 -0
  203. package/src/generators/create-cosmwasm-bundle.ts +17 -0
  204. package/src/generators/create-custom-stargate-clients.ts +128 -0
  205. package/src/generators/create-helpers.ts +196 -0
  206. package/src/generators/create-index.ts +72 -0
  207. package/src/generators/create-lcd-client-all.ts +139 -0
  208. package/src/generators/create-lcd-client-scoped.ts +109 -0
  209. package/src/generators/create-lcd-clients.ts +108 -0
  210. package/src/generators/create-mcp-server.ts +1902 -0
  211. package/src/generators/create-mobx-bundle.ts +31 -0
  212. package/src/generators/create-msg-funcs.ts +219 -0
  213. package/src/generators/create-pinia-store-bundle.ts +35 -0
  214. package/src/generators/create-pinia-store.ts +121 -0
  215. package/src/generators/create-query-funcs.ts +224 -0
  216. package/src/generators/create-react-query-bundle.ts +111 -0
  217. package/src/generators/create-registries.ts +70 -0
  218. package/src/generators/create-root-readme.ts +316 -0
  219. package/src/generators/create-rpc-msg-client-all.ts +167 -0
  220. package/src/generators/create-rpc-msg-client-scoped.ts +147 -0
  221. package/src/generators/create-rpc-msg-clients.ts +165 -0
  222. package/src/generators/create-rpc-ops-bundle.ts +155 -0
  223. package/src/generators/create-rpc-query-client-all.ts +173 -0
  224. package/src/generators/create-rpc-query-client-scoped.ts +142 -0
  225. package/src/generators/create-rpc-query-clients.ts +304 -0
  226. package/src/generators/create-sdk-module-stargate-clients.ts +120 -0
  227. package/src/generators/create-stargate-clients.ts +123 -0
  228. package/src/generators/create-types.ts +236 -0
  229. package/src/generators/customize-utils.ts +54 -0
  230. package/src/helpers/__test__/internalTimestamp.test.ts +79 -0
  231. package/src/helpers/__test__/internalTimestamp.ts +58 -0
  232. package/src/helpers/__test__/internalTimestampBigint.test.ts +78 -0
  233. package/src/helpers/__test__/internalTimestampBigint.ts +58 -0
  234. package/src/helpers/binary-coder.ts +533 -0
  235. package/src/helpers/decimals.ts +108 -0
  236. package/src/helpers/external-comet.ts +49 -0
  237. package/src/helpers/external-icjs.ts +33 -0
  238. package/src/helpers/external.ts +28 -0
  239. package/src/helpers/grpc-gateway.ts +345 -0
  240. package/src/helpers/grpc-web.ts +11 -0
  241. package/src/helpers/helper-func-types-interface.ts +104 -0
  242. package/src/helpers/helper-func-types.ts +91 -0
  243. package/src/helpers/index.ts +22 -0
  244. package/src/helpers/internal-for-bigint.ts +257 -0
  245. package/src/helpers/internal.ts +238 -0
  246. package/src/helpers/json-safe.ts +11 -0
  247. package/src/helpers/mobx.ts +77 -0
  248. package/src/helpers/pinia-endpoint.ts +17 -0
  249. package/src/helpers/react-query-hooks-icjs.ts +223 -0
  250. package/src/helpers/react-query-hooks.ts +266 -0
  251. package/src/helpers/react-query.ts +101 -0
  252. package/src/helpers/registry-helper.ts +227 -0
  253. package/src/helpers/types-helper.ts +169 -0
  254. package/src/helpers/utf8-helper.ts +143 -0
  255. package/src/helpers/varint.ts +483 -0
  256. package/src/helpers/vue-query-hooks.ts +224 -0
  257. package/src/imports.ts +499 -0
  258. package/src/index.ts +12 -0
  259. package/src/parse.ts +243 -0
  260. package/src/prompt.js +65 -0
  261. package/src/protod/bufbuild.spec.ts +80 -0
  262. package/src/protod/bufbuild.ts +95 -0
  263. package/src/protod/config.ts +30 -0
  264. package/src/protod/git-repo.ts +74 -0
  265. package/src/protod/index.ts +1 -0
  266. package/src/protod/recursive.spec.ts +164 -0
  267. package/src/protod/recursive.ts +180 -0
  268. package/src/protod/test-data/.protod.config.json +42 -0
  269. package/src/protod/test-data/buf.lock +23 -0
  270. package/src/protod/test-data/buf.yaml +25 -0
  271. package/src/protod/test-data/buf2.yaml +20 -0
  272. package/src/protod/test-data/cosmos/buf.lock +23 -0
  273. package/src/protod/test-data/cosmos/crypto/secp256k1/keys.proto +38 -0
  274. package/src/protod/test-data/model.proto +101 -0
  275. package/src/protod/types.ts +55 -0
  276. package/src/protod/utils.spec.ts +68 -0
  277. package/src/protod/utils.ts +90 -0
  278. package/src/telescope.js +9 -0
  279. package/src/types.ts +46 -0
  280. package/src/utils/common-create-bundle.ts +62 -0
  281. package/src/utils/contracts.ts +37 -0
  282. package/src/utils/files.ts +145 -0
  283. package/src/utils/index.ts +150 -0
  284. package/src/utils/unused.ts +52 -0
  285. package/types/build.d.ts +41 -0
  286. package/types/builder.d.ts +50 -0
  287. package/types/bundle.d.ts +30 -0
  288. package/types/bundler.d.ts +31 -0
  289. package/types/cli.d.ts +1 -0
  290. package/types/cmds.d.ts +11 -0
  291. package/types/commands/download.d.ts +5 -0
  292. package/types/commands/generate.d.ts +2 -0
  293. package/types/commands/install.d.ts +2 -0
  294. package/types/commands/transpile.d.ts +4 -0
  295. package/types/contracts/generate.d.ts +2 -0
  296. package/types/contracts/install.d.ts +2 -0
  297. package/types/contracts/message-composer.d.ts +2 -0
  298. package/types/contracts/react-query.d.ts +2 -0
  299. package/types/contracts/recoil.d.ts +2 -0
  300. package/types/file.d.ts +2 -0
  301. package/types/generators/create-aggregated-lcd-client.d.ts +2 -0
  302. package/types/generators/create-all-stargate-clients.d.ts +3 -0
  303. package/types/generators/create-amino-converters.d.ts +3 -0
  304. package/types/generators/create-bundle.d.ts +3 -0
  305. package/types/generators/create-combined-stargate-clients.d.ts +3 -0
  306. package/types/generators/create-cosmwasm-bundle.d.ts +2 -0
  307. package/types/generators/create-custom-stargate-clients.d.ts +3 -0
  308. package/types/generators/create-helpers.d.ts +2 -0
  309. package/types/generators/create-index.d.ts +2 -0
  310. package/types/generators/create-lcd-client-all.d.ts +3 -0
  311. package/types/generators/create-lcd-client-scoped.d.ts +3 -0
  312. package/types/generators/create-lcd-clients.d.ts +3 -0
  313. package/types/generators/create-mcp-server.d.ts +3 -0
  314. package/types/generators/create-mobx-bundle.d.ts +2 -0
  315. package/types/generators/create-msg-funcs.d.ts +3 -0
  316. package/types/generators/create-pinia-store-bundle.d.ts +2 -0
  317. package/types/generators/create-pinia-store.d.ts +3 -0
  318. package/types/generators/create-query-funcs.d.ts +3 -0
  319. package/types/generators/create-react-query-bundle.d.ts +2 -0
  320. package/types/generators/create-registries.d.ts +3 -0
  321. package/types/generators/create-root-readme.d.ts +2 -0
  322. package/types/generators/create-rpc-msg-client-all.d.ts +3 -0
  323. package/types/generators/create-rpc-msg-client-scoped.d.ts +3 -0
  324. package/types/generators/create-rpc-msg-clients.d.ts +3 -0
  325. package/types/generators/create-rpc-ops-bundle.d.ts +2 -0
  326. package/types/generators/create-rpc-query-client-all.d.ts +3 -0
  327. package/types/generators/create-rpc-query-client-scoped.d.ts +3 -0
  328. package/types/generators/create-rpc-query-clients.d.ts +3 -0
  329. package/types/generators/create-scoped-stargate-clients.d.ts +3 -0
  330. package/types/generators/create-sdk-module-stargate-clients.d.ts +3 -0
  331. package/types/generators/create-stargate-clients.d.ts +3 -0
  332. package/types/generators/create-types.d.ts +3 -0
  333. package/types/generators/create-unified-stargate-clients.d.ts +3 -0
  334. package/types/generators/customize-utils.d.ts +2 -0
  335. package/types/helpers/__test__/internalTimestamp.d.ts +21 -0
  336. package/types/helpers/__test__/internalTimestampBigint.d.ts +20 -0
  337. package/types/helpers/binary-coder.d.ts +2 -0
  338. package/types/helpers/decimals.d.ts +1 -0
  339. package/types/helpers/external-comet.d.ts +1 -0
  340. package/types/helpers/external-icjs.d.ts +1 -0
  341. package/types/helpers/external.d.ts +1 -0
  342. package/types/helpers/generated-type.d.ts +1 -0
  343. package/types/helpers/grpc-gateway.d.ts +1 -0
  344. package/types/helpers/grpc-web.d.ts +1 -0
  345. package/types/helpers/helper-func-types-interface.d.ts +2 -0
  346. package/types/helpers/helper-func-types.d.ts +2 -0
  347. package/types/helpers/index.d.ts +22 -0
  348. package/types/helpers/internal-for-bigint.d.ts +2 -0
  349. package/types/helpers/internal.d.ts +2 -0
  350. package/types/helpers/internalForBigInt.d.ts +1 -0
  351. package/types/helpers/json-safe.d.ts +1 -0
  352. package/types/helpers/mobx.d.ts +1 -0
  353. package/types/helpers/pinia-endpoint.d.ts +1 -0
  354. package/types/helpers/react-query-hooks-icjs.d.ts +2 -0
  355. package/types/helpers/react-query-hooks.d.ts +2 -0
  356. package/types/helpers/react-query.d.ts +2 -0
  357. package/types/helpers/registry-helper.d.ts +2 -0
  358. package/types/helpers/types-helper.d.ts +2 -0
  359. package/types/helpers/types.d.ts +1 -0
  360. package/types/helpers/utf8-helper.d.ts +1 -0
  361. package/types/helpers/varint.d.ts +1 -0
  362. package/types/helpers/vue-query-hooks.d.ts +2 -0
  363. package/types/helpers/vue-query.d.ts +2 -0
  364. package/types/imports.d.ts +17 -0
  365. package/types/index.d.ts +6 -0
  366. package/types/parse.d.ts +15 -0
  367. package/types/prompt.d.ts +3 -0
  368. package/types/protod/bufbuild.d.ts +6 -0
  369. package/types/protod/config.d.ts +7 -0
  370. package/types/protod/git-repo.d.ts +11 -0
  371. package/types/protod/index.d.ts +1 -0
  372. package/types/protod/proto-download.d.ts +2 -0
  373. package/types/protod/recursive.d.ts +4 -0
  374. package/types/protod/types.d.ts +49 -0
  375. package/types/protod/utils.d.ts +11 -0
  376. package/types/telescope.d.ts +2 -0
  377. package/types/types.d.ts +43 -0
  378. package/types/utils/common-create-bundle.d.ts +18 -0
  379. package/types/utils/contracts.d.ts +6 -0
  380. package/types/utils/files.d.ts +5 -0
  381. package/types/utils/index.d.ts +16 -0
  382. package/types/utils/unused.d.ts +5 -0
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.plugin = void 0;
4
+ const files_1 = require("../utils/files");
5
+ const path_1 = require("path");
6
+ const utils_1 = require("@cosmology/utils");
7
+ /**
8
+ * Gets the aliased function name if it's duplicated across multiple files
9
+ */
10
+ function getAliasedFunctionName(builder, functionName, packageName) {
11
+ const duplicatedHelperFuncs = builder.store.getHelperFuncsInMultipleFiles();
12
+ const isDuplicated = duplicatedHelperFuncs.includes(functionName);
13
+ if (isDuplicated) {
14
+ const serialNumber = builder.store.getAndIncTypeSerialNumber(functionName);
15
+ if (serialNumber > 0) {
16
+ return (0, utils_1.makeAliasNameWithPackageAtEnd)({ package: packageName, name: functionName });
17
+ }
18
+ }
19
+ return functionName;
20
+ }
21
+ /**
22
+ * Cleans up comments by removing lint directives and technical annotations
23
+ */
24
+ function cleanComment(comment) {
25
+ if (!comment)
26
+ return comment;
27
+ // Remove lint directives and technical annotations
28
+ const cleanedComment = comment
29
+ // Remove buf:lint:ignore directives
30
+ .replace(/buf:lint:ignore\s+[A-Z_]+/gi, '')
31
+ // Remove other common lint directives
32
+ .replace(/lint:ignore[:\s]+[A-Z_]+/gi, '')
33
+ // Remove protolint directives
34
+ .replace(/protolint:disable[:\s]+[A-Z_]+/gi, '')
35
+ // Remove eslint directives
36
+ .replace(/eslint-disable[:\s-]+[a-z-]+/gi, '')
37
+ // Remove multiple consecutive spaces
38
+ .replace(/\s+/g, ' ')
39
+ // Remove leading/trailing whitespace
40
+ .trim();
41
+ return cleanedComment;
42
+ }
43
+ /**
44
+ * Gets the project name from the output path
45
+ */
46
+ function getProjectName(outPath) {
47
+ return (0, path_1.basename)(outPath);
48
+ }
49
+ /**
50
+ * Gets the appropriate import path for a function, considering bundle exports
51
+ */
52
+ function getImportPath(builder, functionName, packageName, projectName, sourceFilename) {
53
+ const duplicatedHelperFuncs = builder.store.getHelperFuncsInMultipleFiles();
54
+ const isDuplicated = duplicatedHelperFuncs.includes(functionName);
55
+ // If the function is duplicated (and thus potentially aliased), it should be available in the bundle
56
+ if (isDuplicated) {
57
+ // Check the aliased function name to see if it would be different
58
+ const aliasedName = getAliasedFunctionName(builder, functionName, packageName);
59
+ if (aliasedName !== functionName) {
60
+ // Extract the top-level package name (e.g., 'akash' from 'akash.audit.v1beta2')
61
+ const topLevelPackage = packageName.split('.')[0];
62
+ // Function is aliased and should be available in bundle
63
+ return `${projectName}/${topLevelPackage}/bundle`;
64
+ }
65
+ }
66
+ // If we have source filename info, use the full file path
67
+ // This handles all functions with specific file locations
68
+ if (sourceFilename) {
69
+ // Remove .ts extension and convert to proper import path
70
+ const filePath = sourceFilename.replace(/\.ts$/, '');
71
+ return `${projectName}/${filePath}`;
72
+ }
73
+ // Fallback: import from the specific package path
74
+ return `${projectName}/${packageName.replace(/\./g, '/')}`;
75
+ }
76
+ /**
77
+ * Gets all types for a package by looking at export objects and filtering out extended forms
78
+ */
79
+ function getTypesForPackage(builder, packageName) {
80
+ const types = [];
81
+ // Get all contexts for this package
82
+ const packageContexts = builder.contexts.filter(ctx => ctx.ref.proto.package === packageName);
83
+ packageContexts.forEach(context => {
84
+ // Get types from this context
85
+ const contextTypes = context.types.filter(type => !type.isNested);
86
+ contextTypes.forEach(typeInfo => {
87
+ const typeName = typeInfo.name;
88
+ // Filter out extended forms (these are created during code generation but not in the types array)
89
+ if (!typeName.endsWith('ProtoMsg') &&
90
+ !typeName.endsWith('Amino') &&
91
+ !typeName.endsWith('AminoMsg') &&
92
+ !typeName.endsWith('Encoded') &&
93
+ !typeName.endsWith('SDKType')) {
94
+ // Get the actual source file from the store mapping
95
+ const typeFiles = builder.store.getTypeFilesMapping(typeName);
96
+ let sourceFile;
97
+ if (typeFiles && typeFiles.length > 0) {
98
+ // Use the first (or most relevant) file where this type is defined
99
+ sourceFile = typeFiles[0];
100
+ }
101
+ else {
102
+ // Fallback to context ref filename if not in mapping
103
+ sourceFile = context.ref.filename.replace(/\.proto$/, '.ts');
104
+ }
105
+ types.push({
106
+ name: typeName,
107
+ sourceFile
108
+ });
109
+ }
110
+ });
111
+ });
112
+ // Remove duplicates and sort
113
+ const uniqueTypes = types.filter((type, index, self) => index === self.findIndex(t => t.name === type.name));
114
+ return uniqueTypes.sort((a, b) => a.name.localeCompare(b.name));
115
+ }
116
+ const plugin = (builder) => {
117
+ if (!builder.options.readme.enabled && !builder.options.mcpServer.enabled) {
118
+ return;
119
+ }
120
+ const readmePath = (0, path_1.join)(builder.outPath, "README.md");
121
+ const projectName = getProjectName(builder.outPath);
122
+ // Get function mappings from builder
123
+ const functionMappings = builder.getFunctionMappings();
124
+ // Generate package documentation
125
+ let packageDocs = "";
126
+ Object.keys(functionMappings).sort().forEach(packageName => {
127
+ const packageServices = functionMappings[packageName];
128
+ // Check if package has any methods before adding it
129
+ const hasQueryMethods = packageServices.Query && Object.keys(packageServices.Query).length > 0;
130
+ const hasMsgMethods = packageServices.Msg && Object.keys(packageServices.Msg).length > 0;
131
+ if (!hasQueryMethods && !hasMsgMethods) {
132
+ return; // Skip empty packages
133
+ }
134
+ packageDocs += `## ${packageName}\n\n`;
135
+ // Types section
136
+ const types = getTypesForPackage(builder, packageName);
137
+ if (types && types.length > 0) {
138
+ packageDocs += `### Types\n\n`;
139
+ packageDocs += `| Type | Name | Source |\n`;
140
+ packageDocs += `| --- | --- | --- |\n`;
141
+ types.forEach(type => {
142
+ packageDocs += `| Type | \`${type.name}\` | [View source ↗](${type.sourceFile}) |\n`;
143
+ });
144
+ packageDocs += '\n';
145
+ }
146
+ // Query section
147
+ if (packageServices.Query) {
148
+ packageDocs += `### Query Methods\n\n`;
149
+ const queryMethods = Object.keys(packageServices.Query);
150
+ queryMethods.forEach((methodName, index) => {
151
+ const method = packageServices.Query[methodName];
152
+ // Get the aliased function name using the same logic as bundler
153
+ const aliasedFunctionName = getAliasedFunctionName(builder, method.functionName, packageName);
154
+ const aliasedHookName = getAliasedFunctionName(builder, method.hookName, packageName);
155
+ packageDocs += `**${methodName}**\n\n`;
156
+ // Add comment directly after title (if exists)
157
+ if (method.comment) {
158
+ packageDocs += `${cleanComment(method.comment)}\n\n`;
159
+ }
160
+ // Add import code block
161
+ const functionImportPath = getImportPath(builder, method.functionName, packageName, projectName, method.sourceFilename);
162
+ const hookImportPath = method.hookName ? getImportPath(builder, method.hookName, packageName, projectName, method.hookSourceFilename) : functionImportPath;
163
+ packageDocs += `\`\`\`ts\n`;
164
+ packageDocs += `import { ${aliasedFunctionName} } from '${functionImportPath}'\n`;
165
+ if (method.hookName && aliasedHookName !== aliasedFunctionName) {
166
+ packageDocs += `import { ${aliasedHookName} } from '${hookImportPath}'\n`;
167
+ }
168
+ packageDocs += `\`\`\`\n\n`;
169
+ // Add function details in organized format
170
+ packageDocs += `| Field | Value | Source |\n`;
171
+ packageDocs += `| --- | --- | --- |\n`;
172
+ // Function source
173
+ const functionSourcePath = method.sourceFilename || `${packageName.replace(/\./g, '/')}/query.rpc.func.ts`;
174
+ packageDocs += `| Function | \`${aliasedFunctionName}\` | [View source ↗](${functionSourcePath}) |\n`;
175
+ // Hook source (React)
176
+ if (method.hookName && aliasedHookName !== aliasedFunctionName) {
177
+ const hookSourcePath = method.hookSourceFilename || `${packageName.replace(/\./g, '/')}/query.rpc.react.ts`;
178
+ packageDocs += `| Hook | \`${aliasedHookName}\` | [View source ↗](${hookSourcePath}) |\n`;
179
+ }
180
+ // Request type source
181
+ if (method.requestType) {
182
+ const requestSourcePath = method.typeSourceFilename || `${packageName.replace(/\./g, '/')}/query.ts`;
183
+ packageDocs += `| Request | \`${method.requestType}\` | [View source ↗](${requestSourcePath}) |\n`;
184
+ }
185
+ // Response type source
186
+ if (method.responseType) {
187
+ const responseSourcePath = method.typeSourceFilename || `${packageName.replace(/\./g, '/')}/query.ts`;
188
+ packageDocs += `| Response | \`${method.responseType}\` | [View source ↗](${responseSourcePath}) |\n`;
189
+ }
190
+ // Add spacing between methods (but not after the last one)
191
+ if (index < queryMethods.length - 1) {
192
+ packageDocs += '\n---\n\n';
193
+ }
194
+ else {
195
+ packageDocs += '\n';
196
+ }
197
+ });
198
+ }
199
+ // Transaction section
200
+ if (packageServices.Msg) {
201
+ packageDocs += `### Transaction Methods\n\n`;
202
+ const msgMethods = Object.keys(packageServices.Msg);
203
+ msgMethods.forEach((methodName, index) => {
204
+ const method = packageServices.Msg[methodName];
205
+ // Get the aliased function name using the same logic as bundler
206
+ const aliasedFunctionName = getAliasedFunctionName(builder, method.functionName, packageName);
207
+ const aliasedHookName = getAliasedFunctionName(builder, method.hookName, packageName);
208
+ packageDocs += `**${methodName}**\n\n`;
209
+ // Add comment directly after title (if exists)
210
+ if (method.comment) {
211
+ packageDocs += `${cleanComment(method.comment)}\n\n`;
212
+ }
213
+ // Add import code block
214
+ const functionImportPath = getImportPath(builder, method.functionName, packageName, projectName, method.sourceFilename);
215
+ const hookImportPath = method.hookName ? getImportPath(builder, method.hookName, packageName, projectName, method.hookSourceFilename) : functionImportPath;
216
+ packageDocs += `\`\`\`ts\n`;
217
+ packageDocs += `import { ${aliasedFunctionName} } from '${functionImportPath}'\n`;
218
+ if (method.hookName && aliasedHookName !== aliasedFunctionName) {
219
+ packageDocs += `import { ${aliasedHookName} } from '${hookImportPath}'\n`;
220
+ }
221
+ packageDocs += `\`\`\`\n\n`;
222
+ // Add function details in organized format
223
+ packageDocs += `| Field | Value | Source |\n`;
224
+ packageDocs += `| --- | --- | --- |\n`;
225
+ // Function source
226
+ const functionSourcePath = method.sourceFilename || `${packageName.replace(/\./g, '/')}/tx.rpc.func.ts`;
227
+ packageDocs += `| Function | \`${aliasedFunctionName}\` | [View source ↗](${functionSourcePath}) |\n`;
228
+ // Hook source (React)
229
+ if (method.hookName && aliasedHookName !== aliasedFunctionName) {
230
+ const hookSourcePath = method.hookSourceFilename || `${packageName.replace(/\./g, '/')}/tx.rpc.react.ts`;
231
+ packageDocs += `| Hook | \`${aliasedHookName}\` | [View source ↗](${hookSourcePath}) |\n`;
232
+ }
233
+ // Request type source
234
+ if (method.requestType) {
235
+ const requestSourcePath = method.typeSourceFilename || `${packageName.replace(/\./g, '/')}/tx.ts`;
236
+ packageDocs += `| Request | \`${method.requestType}\` | [View source ↗](${requestSourcePath}) |\n`;
237
+ }
238
+ // Response type source
239
+ if (method.responseType) {
240
+ const responseSourcePath = method.typeSourceFilename || `${packageName.replace(/\./g, '/')}/tx.ts`;
241
+ packageDocs += `| Response | \`${method.responseType}\` | [View source ↗](${responseSourcePath}) |\n`;
242
+ }
243
+ // Add spacing between methods (but not after the last one)
244
+ if (index < msgMethods.length - 1) {
245
+ packageDocs += '\n---\n\n';
246
+ }
247
+ else {
248
+ packageDocs += '\n';
249
+ }
250
+ });
251
+ }
252
+ // Add spacing between packages
253
+ packageDocs += '\n';
254
+ });
255
+ const readmeContent = `# Package Documentation
256
+ ${packageDocs}`;
257
+ (0, files_1.writeContentToFile)(builder.outPath, builder.options, readmeContent, readmePath);
258
+ };
259
+ exports.plugin = plugin;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.plugin = void 0;
27
+ const dotty = __importStar(require("dotty"));
28
+ const proto_parser_1 = require("@cosmology/proto-parser");
29
+ const path_1 = require("path");
30
+ const ast_1 = require("@cosmology/ast");
31
+ const utils_1 = require("../utils");
32
+ const imports_1 = require("../imports");
33
+ const build_1 = require("../build");
34
+ const case_1 = require("case");
35
+ const plugin = (builder, bundler) => {
36
+ // if not enabled, exit
37
+ if (!builder.options?.rpcClients?.enabled) {
38
+ return;
39
+ }
40
+ if (builder.options?.rpcClients?.inline) {
41
+ return;
42
+ }
43
+ // if no scopes, do them all!
44
+ if (!builder.options.rpcClients.scoped ||
45
+ !builder.options.rpcClients.scoped.length ||
46
+ !builder.options.rpcClients.scopedIsExclusive) {
47
+ return makeAllRPCBundles(builder, bundler);
48
+ }
49
+ };
50
+ exports.plugin = plugin;
51
+ const getFileName = (dir, filename) => {
52
+ filename = filename.replace(/\.ts$/, '');
53
+ const localname = (0, path_1.join)(dir, filename + '.tx');
54
+ return localname + '.ts';
55
+ };
56
+ const makeAllRPCBundles = (builder, bundler) => {
57
+ if (!builder.options.rpcClients.bundle)
58
+ return;
59
+ const dir = bundler.bundle.base;
60
+ const filename = 'rpc';
61
+ // refs with services
62
+ const refs = builder.store.getProtos().filter((ref) => {
63
+ const proto = (0, proto_parser_1.getNestedProto)(ref.traversed);
64
+ if (!proto?.Msg || proto.Msg?.type !== 'Service') {
65
+ return;
66
+ }
67
+ return true;
68
+ });
69
+ const check = refs.filter((ref) => {
70
+ const [base] = ref.proto.package.split('.');
71
+ return base === bundler.bundle.base;
72
+ });
73
+ if (!check.length) {
74
+ // if there are no services
75
+ // exit the plugin
76
+ return;
77
+ }
78
+ const packages = refs.reduce((m, ref) => {
79
+ const [base] = ref.proto.package.split('.');
80
+ if (base === 'cosmos' || base === bundler.bundle.base)
81
+ return [...new Set([...m, ref.proto.package])];
82
+ return m;
83
+ }, []);
84
+ const methodName = 'createRPCMsgClient';
85
+ const localname = getFileName(dir, filename ?? 'rpc');
86
+ const obj = {};
87
+ builder.rpcMsgClients.forEach(file => {
88
+ // ADD all option
89
+ // which defaults to including cosmos
90
+ // and defaults to base for each
91
+ if (!packages.includes(file.package)) {
92
+ return;
93
+ }
94
+ const f = localname;
95
+ const f2 = file.localname;
96
+ const importPath = (0, utils_1.getRelativePath)(f, f2);
97
+ dotty.put(obj, file.package, importPath);
98
+ });
99
+ const ctx = new build_1.TelescopeParseContext((0, proto_parser_1.createEmptyProtoRef)(dir, localname), builder.store, builder.options);
100
+ let rpcast;
101
+ let msgExt = [];
102
+ let txRpcImport = [];
103
+ switch (builder.options?.rpcClients?.type) {
104
+ case "grpc-gateway":
105
+ case "tendermint":
106
+ ctx.proto.addUtil('Rpc');
107
+ rpcast = (0, ast_1.createScopedRpcFactory)(obj, methodName, 'MsgClientImpl', // make option later,
108
+ ctx.options);
109
+ if (ctx.proto.pluginValue('env') === 'v-next' && ctx.proto.pluginValue('rpcClients.extensions') && ctx.proto.pluginValue('stargateClients.addGetTxRpc')) {
110
+ const txRpcName = 'getSigning' + (0, case_1.pascal)(bundler.bundle.base + 'TxRpc');
111
+ txRpcImport = (0, ast_1.importStmt)([txRpcName], `./client${ctx.options.restoreImportExtension ?? ""}`);
112
+ msgExt = (0, ast_1.createRpcMsgExtension)(ctx.proto, txRpcName);
113
+ }
114
+ break;
115
+ case "grpc-web":
116
+ ctx.proto.addUtil('grpc');
117
+ ctx.proto.addUtil('NodeHttpTransport');
118
+ rpcast = (0, ast_1.createScopedGrpcWebMsgFactory)(obj, methodName, 'MsgClientImpl', // make option later,
119
+ ctx.options);
120
+ break;
121
+ default:
122
+ break;
123
+ }
124
+ const serviceImports = (0, imports_1.getDepsFromQueries)(ctx.queries, localname);
125
+ const imports = (0, imports_1.aggregateImports)(ctx, serviceImports, localname);
126
+ const importStmts = (0, imports_1.getImportStatements)(localname, [...(0, utils_1.fixlocalpaths)(imports)], builder.options);
127
+ const prog = []
128
+ .concat(txRpcImport)
129
+ .concat(importStmts)
130
+ .concat(rpcast)
131
+ .concat(msgExt);
132
+ const writeFilename = bundler.getFilename(localname);
133
+ bundler.writeAst(prog, writeFilename);
134
+ bundler.addToBundleToPackage(`${dir}.ClientFactory`, localname);
135
+ };
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.plugin = void 0;
27
+ const dotty = __importStar(require("dotty"));
28
+ const proto_parser_1 = require("@cosmology/proto-parser");
29
+ const path_1 = require("path");
30
+ const ast_1 = require("@cosmology/ast");
31
+ const utils_1 = require("../utils");
32
+ const imports_1 = require("../imports");
33
+ const build_1 = require("../build");
34
+ const case_1 = require("case");
35
+ const plugin = (builder, bundler) => {
36
+ // if not enabled, exit
37
+ if (!builder.options?.rpcClients?.enabled) {
38
+ return;
39
+ }
40
+ if (builder.options?.rpcClients?.inline) {
41
+ return;
42
+ }
43
+ // we have scopes!
44
+ builder.options.rpcClients.scoped?.forEach(rpc => {
45
+ if (rpc.dir !== bundler.bundle.base)
46
+ return;
47
+ makeRPC(builder, bundler, rpc);
48
+ });
49
+ };
50
+ exports.plugin = plugin;
51
+ const getFileName = (dir, filename) => {
52
+ filename = filename.replace(/\.ts$/, '');
53
+ const localname = (0, path_1.join)(dir, filename + '.tx');
54
+ return localname + '.ts';
55
+ };
56
+ const makeRPC = (builder, bundler, rpc) => {
57
+ const dir = rpc.dir;
58
+ const packages = rpc.packages;
59
+ const methodName = rpc.methodNameTx ?? 'createRPCMsgClient';
60
+ const localname = getFileName(dir, rpc.filename ?? 'rpc');
61
+ const obj = {};
62
+ builder.rpcMsgClients.forEach(file => {
63
+ // ADD all option
64
+ // which defaults to including cosmos
65
+ // and defaults to base for each
66
+ if (!packages.includes(file.package)) {
67
+ return;
68
+ }
69
+ const f = localname;
70
+ const f2 = file.localname;
71
+ const importPath = (0, utils_1.getRelativePath)(f, f2);
72
+ dotty.put(obj, file.package, importPath);
73
+ });
74
+ const ctx = new build_1.TelescopeParseContext((0, proto_parser_1.createEmptyProtoRef)(dir, localname), builder.store, builder.options);
75
+ let rpcast;
76
+ let msgExt = [];
77
+ let txRpcImport = [];
78
+ switch (builder.options?.rpcClients?.type) {
79
+ case "grpc-gateway":
80
+ // TODO no working scoped clients for grpc-gateway right now
81
+ case "tendermint":
82
+ // TODO add addUtil to generic context
83
+ ctx.proto.addUtil('Rpc');
84
+ rpcast = (0, ast_1.createScopedRpcFactory)(obj, methodName, 'MsgClientImpl', // make option later,
85
+ ctx.options);
86
+ if (rpc.isAll && ctx.proto.pluginValue('env') === 'v-next' && ctx.proto.pluginValue('rpcClients.extensions') && ctx.proto.pluginValue('stargateClients.addGetTxRpc')) {
87
+ const txRpcName = 'getSigning' + (0, case_1.pascal)(bundler.bundle.base + 'TxRpc');
88
+ txRpcImport = (0, ast_1.importStmt)([txRpcName], `./client${ctx.options.restoreImportExtension ?? ""}`);
89
+ msgExt = (0, ast_1.createRpcMsgExtension)(ctx.proto, txRpcName);
90
+ }
91
+ break;
92
+ case "grpc-web":
93
+ ctx.proto.addUtil('grpc');
94
+ ctx.proto.addUtil('NodeHttpTransport');
95
+ rpcast = (0, ast_1.createScopedGrpcWebMsgFactory)(obj, methodName, 'MsgClientImpl', // make option later,
96
+ ctx.options);
97
+ break;
98
+ default:
99
+ break;
100
+ }
101
+ const serviceImports = (0, imports_1.getDepsFromQueries)(ctx.queries, localname);
102
+ const imports = (0, imports_1.aggregateImports)(ctx, serviceImports, localname);
103
+ const importStmts = (0, imports_1.getImportStatements)(localname, [...(0, utils_1.fixlocalpaths)(imports)], builder.options);
104
+ const prog = []
105
+ .concat(txRpcImport)
106
+ .concat(importStmts)
107
+ .concat(rpcast)
108
+ .concat(msgExt);
109
+ const filename = bundler.getFilename(localname);
110
+ bundler.writeAst(prog, filename);
111
+ if (rpc.addToBundle) {
112
+ bundler.addToBundleToPackage(`${dir}.ClientFactory`, localname);
113
+ }
114
+ };
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.plugin = void 0;
4
+ const imports_1 = require("../imports");
5
+ const ast_1 = require("@cosmology/ast");
6
+ const proto_parser_1 = require("@cosmology/proto-parser");
7
+ const parse_1 = require("../parse");
8
+ const utils_1 = require("@cosmology/utils");
9
+ const plugin = (builder, bundler) => {
10
+ // if (!builder.options.rpcClients.enabled) {
11
+ // return;
12
+ // }
13
+ const instantRpcBundlerFiles = {};
14
+ const mutationContexts = bundler
15
+ .contexts
16
+ .filter(context => context.mutations.length > 0);
17
+ const clients = mutationContexts.map(c => {
18
+ const enabled = c.proto.pluginValue('rpcClients.enabled');
19
+ if (!enabled)
20
+ return;
21
+ const inline = c.proto.pluginValue('rpcClients.inline');
22
+ if (inline)
23
+ return;
24
+ if (c.proto.isExcluded())
25
+ return;
26
+ const useCamelCase = c.proto.pluginValue("rpcClients.camelCase");
27
+ const localname = bundler.getLocalFilename(c.ref, 'rpc.msg');
28
+ const filename = bundler.getFilename(localname);
29
+ const ctx = bundler.getFreshContext(c);
30
+ // get mutations, services
31
+ (0, parse_1.parse)(ctx);
32
+ const proto = (0, proto_parser_1.getNestedProto)(c.ref.traversed);
33
+ // hard-coding, for now, only Msg service
34
+ if (!proto?.Msg || proto.Msg?.type !== 'Service') {
35
+ return;
36
+ }
37
+ ////////
38
+ const asts = [];
39
+ const bundlerFile = {
40
+ proto: c.ref.filename,
41
+ package: c.ref.proto.package,
42
+ localname,
43
+ filename,
44
+ isMsg: true
45
+ };
46
+ switch (c.proto.pluginValue("rpcClients.type")) {
47
+ case 'grpc-gateway':
48
+ asts.push((0, ast_1.createGRPCGatewayMsgClass)(ctx.generic, proto.Msg));
49
+ break;
50
+ case 'grpc-web':
51
+ asts.push((0, ast_1.createGrpcWebMsgInterface)(ctx.generic, proto.Msg));
52
+ asts.push((0, ast_1.createGrpcWebMsgClass)(ctx.generic, proto.Msg));
53
+ asts.push((0, ast_1.GetDesc)(ctx.generic, proto.Msg));
54
+ const Desces = (0, ast_1.getMethodDesc)(ctx.generic, proto.Msg);
55
+ for (let i = 0; i < Desces.length; i++) {
56
+ const element = Desces[i];
57
+ asts.push(element);
58
+ }
59
+ asts.push((0, ast_1.grpcWebRpcInterface)());
60
+ asts.push((0, ast_1.getGrpcWebImpl)(ctx.generic));
61
+ break;
62
+ case 'tendermint':
63
+ default:
64
+ asts.push((0, ast_1.createRpcClientInterface)(ctx.generic, proto.Msg));
65
+ const svc = proto.Msg;
66
+ const instantOps = c.options.rpcClients?.instantOps ?? [];
67
+ instantOps.forEach((item) => {
68
+ let nameMapping = {
69
+ ...(0, utils_1.swapKeyValue)(item.nameMapping?.All ?? {}),
70
+ ...(0, utils_1.swapKeyValue)(item.nameMapping?.Msg ?? {})
71
+ };
72
+ // get all query methods
73
+ const patterns = item.include?.patterns;
74
+ const serviceTypes = item.include?.serviceTypes;
75
+ if (serviceTypes && !serviceTypes.includes("Tx")) {
76
+ return;
77
+ }
78
+ const methodKeys = (0, utils_1.getQueryMethodNames)(bundlerFile.package, Object.keys(svc.methods ?? {}), patterns, useCamelCase ? utils_1.camel : String);
79
+ if (!methodKeys || !methodKeys.length) {
80
+ return;
81
+ }
82
+ asts.push((0, ast_1.createRpcClientInterface)(ctx.generic, svc, item.className, methodKeys, nameMapping));
83
+ bundlerFile.instantExportedMethods = methodKeys.map((key) => svc.methods[key]);
84
+ if (!instantRpcBundlerFiles[item.className]) {
85
+ instantRpcBundlerFiles[item.className] = [];
86
+ }
87
+ instantRpcBundlerFiles[item.className].push({ ...bundlerFile });
88
+ });
89
+ asts.push((0, ast_1.createRpcClientClass)(ctx.generic, proto.Msg));
90
+ const env = c.proto.pluginValue('env');
91
+ if (env === 'v-next') {
92
+ asts.push((0, ast_1.createRpcClientImpl)(ctx.generic, svc));
93
+ }
94
+ }
95
+ ////////
96
+ const serviceImports = (0, imports_1.getDepsFromQueries)(ctx.mutations, localname);
97
+ // TODO we do NOT need all imports...
98
+ const imports = (0, imports_1.buildAllImports)(ctx, serviceImports, localname);
99
+ const prog = []
100
+ .concat(imports)
101
+ .concat(ctx.body)
102
+ .concat(asts);
103
+ bundler.writeAst(prog, filename);
104
+ bundler.addToBundle(c, localname);
105
+ return {
106
+ package: c.ref.proto.package,
107
+ localname,
108
+ filename
109
+ };
110
+ }).filter(Boolean);
111
+ bundler.addRPCMsgClients(clients);
112
+ Object.keys(instantRpcBundlerFiles).forEach((className) => {
113
+ bundler.addStateManagers(`instantRpc_${className}`, instantRpcBundlerFiles[className]);
114
+ });
115
+ };
116
+ exports.plugin = plugin;