@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
package/main/build.js ADDED
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelescopeParseContext = exports.buildEnums = exports.buildBaseTypeScriptInterface = exports.buildBaseTypeScriptClass = exports.getAminoProtos = exports.getMutations = void 0;
4
+ const ast_1 = require("@cosmology/ast");
5
+ const getMutations = (mutations) => {
6
+ return mutations.map((mutation) => {
7
+ return {
8
+ typeUrl: `/${mutation.package}.${mutation.message}`,
9
+ TypeName: mutation.message,
10
+ methodName: mutation.methodName
11
+ };
12
+ });
13
+ };
14
+ exports.getMutations = getMutations;
15
+ const getAminoProtos = (mutations, store) => {
16
+ return mutations.map(mutation => {
17
+ const ref = store.findProto(mutation.messageImport);
18
+ return store.get(ref, mutation.message).obj;
19
+ });
20
+ };
21
+ exports.getAminoProtos = getAminoProtos;
22
+ const buildBaseTypeScriptClass = (context, name, obj) => {
23
+ if (context.options.prototypes.enabled) {
24
+ context.body.push((0, ast_1.createCreateProtoType)(context.proto, name, obj));
25
+ context.body.push((0, ast_1.createObjectWithMethods)(context.proto, name, obj));
26
+ if (context.options.interfaces?.enabled && context.options.interfaces?.useGlobalDecoderRegistry && context.options.interfaces?.registerAllDecodersToGlobal) {
27
+ const registerObj = (0, ast_1.createRegisterObject)(context.proto, name, obj);
28
+ if (registerObj) {
29
+ context.body.push(registerObj);
30
+ //createRegisterAminoProtoMapping
31
+ const registerAminoObj = (0, ast_1.createRegisterAminoProtoMapping)(context.proto, name, obj);
32
+ if (registerAminoObj) {
33
+ context.body.push(registerAminoObj);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ };
39
+ exports.buildBaseTypeScriptClass = buildBaseTypeScriptClass;
40
+ const buildBaseTypeScriptInterface = (context, name, obj) => {
41
+ context.body.push((0, ast_1.createProtoType)(context.proto, name, obj));
42
+ if (context.options.aminoEncoding?.enabled && !context.options.aminoEncoding?.useLegacyInlineEncoding || context.options.prototypes?.methods?.fromProto || context.options.prototypes?.methods?.toProto) {
43
+ context.body.push((0, ast_1.createProtoTypeType)(context.proto, name, obj));
44
+ }
45
+ if (context.options.aminoEncoding?.enabled && !context.options.aminoEncoding?.useLegacyInlineEncoding) {
46
+ // conditional type
47
+ const interfaceType = (0, ast_1.createProtoInterfaceEncodedType)(context.proto, name, obj);
48
+ if (interfaceType) {
49
+ context.body.push(interfaceType);
50
+ }
51
+ context.body.push((0, ast_1.createAminoType)(context.proto, name, obj));
52
+ if (!context.options.aminoEncoding?.disableMsgTypes) {
53
+ context.body.push((0, ast_1.createAminoTypeType)(context.proto, name, obj));
54
+ }
55
+ }
56
+ if (context.options.useSDKTypes) {
57
+ context.body.push((0, ast_1.createSDKType)(context.proto, name, obj));
58
+ }
59
+ };
60
+ exports.buildBaseTypeScriptInterface = buildBaseTypeScriptInterface;
61
+ const buildEnums = (context, name, obj) => {
62
+ context.body.push((0, ast_1.createProtoEnum)(context.proto, name, obj));
63
+ if (context.options.useSDKTypes) {
64
+ context.body.push((0, ast_1.createEnumSDKType)(context.proto, name, obj));
65
+ }
66
+ if (context.options.aminoEncoding?.enabled && !context.options.aminoEncoding?.useLegacyInlineEncoding) {
67
+ context.body.push((0, ast_1.createEnumAminoType)(context.proto, name, obj));
68
+ }
69
+ context.body.push((0, ast_1.createProtoEnumFromJSON)(context.proto, name, obj));
70
+ context.body.push((0, ast_1.createProtoEnumToJSON)(context.proto, name, obj));
71
+ };
72
+ exports.buildEnums = buildEnums;
73
+ class TelescopeParseContext {
74
+ constructor(ref, store, options) {
75
+ this.generic = new ast_1.GenericParseContext(ref, store, options);
76
+ this.proto = new ast_1.ProtoParseContext(ref, store, options);
77
+ this.amino = new ast_1.AminoParseContext(ref, store, options);
78
+ this.options = options;
79
+ this.ref = ref;
80
+ this.store = store;
81
+ this.parsedImports = {};
82
+ this.body = [];
83
+ this.queries = [];
84
+ this.services = [];
85
+ this.mutations = [];
86
+ this.types = [];
87
+ }
88
+ hasMutations() {
89
+ return this.mutations.length > 0;
90
+ }
91
+ addType(name, obj, isNested) {
92
+ this.types.push({
93
+ name,
94
+ obj,
95
+ isNested
96
+ });
97
+ }
98
+ addMutation(mutation) {
99
+ this.mutations.push(mutation);
100
+ }
101
+ addQuery(query) {
102
+ this.queries.push(query);
103
+ }
104
+ addService(query) {
105
+ this.services.push(query);
106
+ }
107
+ // build main Class with methods
108
+ buildBase() {
109
+ this.types.forEach(typeReg => {
110
+ const { name, obj } = typeReg;
111
+ if (obj.type === 'Enum') {
112
+ (0, exports.buildEnums)(this, name, obj);
113
+ }
114
+ });
115
+ this.types.forEach(typeReg => {
116
+ const { name, obj } = typeReg;
117
+ if (obj.type === 'Type') {
118
+ (0, exports.buildBaseTypeScriptInterface)(this, name, obj);
119
+ }
120
+ });
121
+ this.types.forEach(typeReg => {
122
+ const { name, obj } = typeReg;
123
+ if (obj.type === 'Type') {
124
+ (0, exports.buildBaseTypeScriptClass)(this, name, obj);
125
+ }
126
+ });
127
+ // interfaces
128
+ if (this.options.interfaces.enabled && !this.options.interfaces.useGlobalDecoderRegistry) {
129
+ const interfaces = Object.keys(this.ref.traversed.acceptsInterface ?? {});
130
+ if (interfaces.length) {
131
+ interfaces.forEach(interfaceName => {
132
+ this.body.push((0, ast_1.createInterfaceDecoder)(this.proto, this.ref, interfaceName));
133
+ if (this.options.aminoEncoding?.enabled &&
134
+ !this.options.aminoEncoding?.useLegacyInlineEncoding) {
135
+ this.body.push((0, ast_1.createInterfaceFromAmino)(this.proto, this.ref, interfaceName));
136
+ this.body.push((0, ast_1.createInterfaceToAmino)(this.proto, this.ref, interfaceName));
137
+ }
138
+ });
139
+ }
140
+ }
141
+ }
142
+ buildRegistry() {
143
+ this.body.push((0, ast_1.createTypeRegistry)(this.amino, (0, exports.getMutations)(this.mutations)));
144
+ }
145
+ buildRegistryLoader() {
146
+ if (!this.options?.prototypes?.enableRegistryLoader) {
147
+ return;
148
+ }
149
+ this.body.push((0, ast_1.createRegistryLoader)(this.amino));
150
+ }
151
+ buildAminoInterfaces() {
152
+ if (!this.options?.aminoEncoding?.enabled || !this.options?.aminoEncoding?.useLegacyInlineEncoding)
153
+ return;
154
+ //
155
+ const protos = (0, exports.getAminoProtos)(this.mutations, this.store);
156
+ protos.forEach(proto => {
157
+ this.body.push((0, ast_1.makeAminoTypeInterface)({
158
+ context: this.amino,
159
+ proto
160
+ }));
161
+ });
162
+ }
163
+ buildAminoConverter() {
164
+ this.body.push((0, ast_1.createAminoConverter)({
165
+ name: 'AminoConverter',
166
+ context: this.amino,
167
+ root: this.ref.traversed,
168
+ protos: (0, exports.getAminoProtos)(this.mutations, this.store)
169
+ }));
170
+ }
171
+ buildHelperObject() {
172
+ if (!this.options?.prototypes?.enableMessageComposer) {
173
+ return;
174
+ }
175
+ // add methods
176
+ this.body.push((0, ast_1.createHelperObject)({
177
+ context: this.amino,
178
+ name: 'MessageComposer',
179
+ mutations: (0, exports.getMutations)(this.mutations)
180
+ }));
181
+ }
182
+ }
183
+ exports.TelescopeParseContext = TelescopeParseContext;
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TelescopeBuilder = void 0;
7
+ const proto_parser_1 = require("@cosmology/proto-parser");
8
+ const build_1 = require("./build");
9
+ const types_1 = require("@cosmology/types");
10
+ const utils_1 = require("@cosmology/utils");
11
+ const bundle_1 = require("./bundle");
12
+ const bundler_1 = require("./bundler");
13
+ const deepmerge_1 = __importDefault(require("deepmerge"));
14
+ const path_1 = require("path");
15
+ const create_types_1 = require("./generators/create-types");
16
+ const create_amino_converters_1 = require("./generators/create-amino-converters");
17
+ const create_registries_1 = require("./generators/create-registries");
18
+ const create_lcd_clients_1 = require("./generators/create-lcd-clients");
19
+ const create_aggregated_lcd_client_1 = require("./generators/create-aggregated-lcd-client");
20
+ const create_lcd_client_scoped_1 = require("./generators/create-lcd-client-scoped");
21
+ const create_lcd_client_all_1 = require("./generators/create-lcd-client-all");
22
+ const create_rpc_query_client_scoped_1 = require("./generators/create-rpc-query-client-scoped");
23
+ const create_rpc_query_client_all_1 = require("./generators/create-rpc-query-client-all");
24
+ const create_rpc_msg_client_scoped_1 = require("./generators/create-rpc-msg-client-scoped");
25
+ const create_rpc_msg_client_all_1 = require("./generators/create-rpc-msg-client-all");
26
+ const create_rpc_query_clients_1 = require("./generators/create-rpc-query-clients");
27
+ const create_rpc_msg_clients_1 = require("./generators/create-rpc-msg-clients");
28
+ const create_query_funcs_1 = require("./generators/create-query-funcs");
29
+ const create_msg_funcs_1 = require("./generators/create-msg-funcs");
30
+ const create_react_query_bundle_1 = require("./generators/create-react-query-bundle");
31
+ const create_mobx_bundle_1 = require("./generators/create-mobx-bundle");
32
+ const create_stargate_clients_1 = require("./generators/create-stargate-clients");
33
+ const create_custom_stargate_clients_1 = require("./generators/create-custom-stargate-clients");
34
+ const create_all_stargate_clients_1 = require("./generators/create-all-stargate-clients");
35
+ const create_sdk_module_stargate_clients_1 = require("./generators/create-sdk-module-stargate-clients");
36
+ const create_bundle_1 = require("./generators/create-bundle");
37
+ const create_index_1 = require("./generators/create-index");
38
+ const create_helpers_1 = require("./generators/create-helpers");
39
+ const create_cosmwasm_bundle_1 = require("./generators/create-cosmwasm-bundle");
40
+ const create_pinia_store_1 = require("./generators/create-pinia-store");
41
+ const create_pinia_store_bundle_1 = require("./generators/create-pinia-store-bundle");
42
+ const create_rpc_ops_bundle_1 = require("./generators/create-rpc-ops-bundle");
43
+ const customize_utils_1 = require("./generators/customize-utils");
44
+ const create_root_readme_1 = require("./generators/create-root-readme");
45
+ const create_mcp_server_1 = require("./generators/create-mcp-server");
46
+ const sanitizeOptions = (options) => {
47
+ // If an element at the same key is present for both x and y, the value from y will appear in the result.
48
+ options = (0, deepmerge_1.default)(types_1.defaultTelescopeOptions, options ?? {});
49
+ // correct the path for windows
50
+ if (options.cosmwasm) {
51
+ options.cosmwasm.outPath = (0, utils_1.toPosixPath)(options.cosmwasm.outPath);
52
+ options.cosmwasm.contracts = options.cosmwasm.contracts.map((item) => {
53
+ item.dir = (0, utils_1.toPosixPath)(item.dir);
54
+ return item;
55
+ });
56
+ }
57
+ // strip off leading slashes
58
+ options.tsDisable.files = options.tsDisable.files.map((file) => file.startsWith('/') ? file : file.replace(/^\//, ''));
59
+ options.eslintDisable.files = options.eslintDisable.files.map((file) => file.startsWith('/') ? file : file.replace(/^\//, ''));
60
+ // uniq bc of deepmerge
61
+ options.rpcClients.enabledServices = [
62
+ ...new Set([...options.rpcClients.enabledServices]),
63
+ ];
64
+ return options;
65
+ };
66
+ class TelescopeBuilder {
67
+ store;
68
+ protoDirs;
69
+ outPath;
70
+ options;
71
+ contexts = [];
72
+ files = [];
73
+ converters = [];
74
+ lcdClients = [];
75
+ rpcQueryClients = [];
76
+ rpcMsgClients = [];
77
+ registries = [];
78
+ stateManagers = {};
79
+ // Function mapping storage: package -> service -> method -> functionName
80
+ functionMappings = {};
81
+ constructor({ protoDirs, outPath, store, options, }) {
82
+ const fixedDirs = protoDirs.map((directory) => {
83
+ return (0, utils_1.toPosixPath)(directory);
84
+ });
85
+ this.protoDirs = fixedDirs;
86
+ this.outPath = (0, path_1.resolve)((0, utils_1.toPosixPath)(outPath));
87
+ this.options = sanitizeOptions(options);
88
+ this.store = store ?? new proto_parser_1.ProtoStore(fixedDirs, this.options);
89
+ this.store.traverseAll();
90
+ }
91
+ context(ref) {
92
+ const ctx = new build_1.TelescopeParseContext(ref, this.store, this.options);
93
+ this.contexts.push(ctx);
94
+ return ctx;
95
+ }
96
+ addFunctionMapping(packageName, serviceName, methodName, functionName, hookName, comment, requestType, responseType, sourceFilename, hookSourceFilename, typeSourceFilename) {
97
+ if (!this.functionMappings[packageName]) {
98
+ this.functionMappings[packageName] = {};
99
+ }
100
+ if (!this.functionMappings[packageName][serviceName]) {
101
+ this.functionMappings[packageName][serviceName] = {};
102
+ }
103
+ this.functionMappings[packageName][serviceName][methodName] = {
104
+ functionName,
105
+ hookName,
106
+ comment,
107
+ requestType,
108
+ responseType,
109
+ sourceFilename,
110
+ hookSourceFilename,
111
+ typeSourceFilename
112
+ };
113
+ }
114
+ getFunctionMappings() {
115
+ return this.functionMappings;
116
+ }
117
+ addStateManagers(type, files) {
118
+ const state = this.stateManagers[type];
119
+ if (!state) {
120
+ this.stateManagers[type] = [];
121
+ }
122
+ [].push.apply(this.stateManagers[type], files);
123
+ }
124
+ addRPCQueryClients(files) {
125
+ [].push.apply(this.rpcQueryClients, files);
126
+ }
127
+ addRPCMsgClients(files) {
128
+ [].push.apply(this.rpcMsgClients, files);
129
+ }
130
+ addLCDClients(files) {
131
+ [].push.apply(this.lcdClients, files);
132
+ }
133
+ addRegistries(files) {
134
+ [].push.apply(this.registries, files);
135
+ }
136
+ addConverters(files) {
137
+ [].push.apply(this.converters, files);
138
+ }
139
+ async build() {
140
+ // check warnings
141
+ if (!this.options.aminoEncoding?.enabled &&
142
+ (this.options.prototypes?.methods?.fromAmino ||
143
+ this.options.prototypes?.methods?.toAmino)) {
144
+ console.warn("There could be compilation errors in generated code, because 'aminoEncoding.enabled: false' means amino types wouldn't be created, but 'toAmino' or 'fromAmino' need amino types.");
145
+ }
146
+ if (!this.options.prototypes.methods.fromPartial) {
147
+ console.warn("The 'fromPartial' option will be deprecated in a future version. Encoder objects need fromPartial to be a creator function to create instance of the type. So it should always be left on, otherwise there could be compilation errors in generated code.");
148
+ }
149
+ (0, customize_utils_1.plugin)(this);
150
+ const allConverters = [];
151
+ const allRegistries = [];
152
+ // [x] get bundle of all packages
153
+ const bundles = (0, bundle_1.bundlePackages)(this.store).map((bundle) => {
154
+ // store bundleFile in filesToInclude
155
+ const bundler = new bundler_1.Bundler(this, bundle);
156
+ // [x] write out all TS files for package
157
+ (0, create_types_1.plugin)(this, bundler);
158
+ // [x] write out one amino helper for all contexts w/mutations
159
+ (0, create_amino_converters_1.plugin)(this, bundler);
160
+ // [x] write out one registry helper for all contexts w/mutations
161
+ (0, create_registries_1.plugin)(this, bundler);
162
+ // [x] write out one registry helper for all contexts w/mutations
163
+ (0, create_lcd_clients_1.plugin)(this, bundler);
164
+ (0, create_query_funcs_1.plugin)(this, bundler);
165
+ (0, create_rpc_query_clients_1.plugin)(this, bundler);
166
+ (0, create_msg_funcs_1.plugin)(this, bundler);
167
+ (0, create_rpc_msg_clients_1.plugin)(this, bundler);
168
+ (0, create_pinia_store_1.plugin)(this, bundler);
169
+ if (this.options.rpcClients.clientStyle.useUpdatedClientStyle) {
170
+ // generate sdk-module client file
171
+ if (this.options.rpcClients.clientStyle.type.includes('sdk-module-client') && this.options.rpcClients.clientStyle.sdkModuleClientOption.includes(bundler.bundle.base)) {
172
+ (0, create_sdk_module_stargate_clients_1.plugin)(this, bundler);
173
+ }
174
+ // store registry and converter for all/custom client generation
175
+ if (bundler.registries) {
176
+ allRegistries.push(...bundler.registries);
177
+ }
178
+ if (bundler.converters) {
179
+ allConverters.push(...bundler.converters);
180
+ }
181
+ }
182
+ else {
183
+ // [x] write out one client for each base package, referencing the last two steps
184
+ (0, create_stargate_clients_1.plugin)(this, bundler);
185
+ }
186
+ return bundler;
187
+ });
188
+ if (this.options.rpcClients.clientStyle.useUpdatedClientStyle) {
189
+ // generate cutsom client file
190
+ if (this.options.rpcClients.clientStyle.type.includes('custom-client') && this.options.rpcClients.clientStyle.customClientOption && this.options.rpcClients.clientStyle.customClientOption.length !== 0) {
191
+ (0, create_custom_stargate_clients_1.plugin)(this, allRegistries, allConverters);
192
+ }
193
+ // generate all module client file
194
+ if (this.options.rpcClients.clientStyle.type.includes('all-client')) {
195
+ (0, create_all_stargate_clients_1.plugin)(this, allRegistries, allConverters);
196
+ }
197
+ }
198
+ // post run plugins
199
+ bundles.forEach((bundler) => {
200
+ (0, create_lcd_client_all_1.plugin)(this, bundler);
201
+ (0, create_lcd_client_scoped_1.plugin)(this, bundler);
202
+ (0, create_rpc_query_client_all_1.plugin)(this, bundler);
203
+ (0, create_rpc_query_client_scoped_1.plugin)(this, bundler);
204
+ (0, create_rpc_msg_client_all_1.plugin)(this, bundler);
205
+ (0, create_rpc_msg_client_scoped_1.plugin)(this, bundler);
206
+ (0, create_bundle_1.plugin)(this, bundler);
207
+ });
208
+ (0, create_rpc_ops_bundle_1.plugin)(this);
209
+ (0, create_react_query_bundle_1.plugin)(this);
210
+ (0, create_mobx_bundle_1.plugin)(this);
211
+ (0, create_aggregated_lcd_client_1.plugin)(this);
212
+ await (0, create_cosmwasm_bundle_1.plugin)(this);
213
+ (0, create_helpers_1.plugin)(this);
214
+ (0, create_pinia_store_bundle_1.plugin)(this);
215
+ // finally, write one index file with all files, exported
216
+ (0, create_index_1.plugin)(this);
217
+ (0, create_root_readme_1.plugin)(this);
218
+ // Generate MCP server at the very end after all files are written
219
+ if (this.options.mcpServer?.enabled && bundles.length > 0) {
220
+ // Use the first bundle that has contexts (typically the main aggregated bundle)
221
+ const primaryBundle = bundles.find(bundler => bundler.contexts.length > 0);
222
+ if (primaryBundle) {
223
+ (0, create_mcp_server_1.plugin)(this, primaryBundle);
224
+ }
225
+ }
226
+ console.log(`✨ files transpiled in '${this.outPath}'`);
227
+ }
228
+ }
229
+ exports.TelescopeBuilder = TelescopeBuilder;
package/main/bundle.js ADDED
@@ -0,0 +1,162 @@
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.createFileBundle = exports.parsePackage = exports.parseContextsForRegistry = exports.bundleBaseRegistries = exports.bundleRegistries = exports.bundlePackages = exports.getPackagesBundled = exports.getPackages = void 0;
27
+ const proto_parser_1 = require("@cosmology/proto-parser");
28
+ const ast_1 = require("@cosmology/ast");
29
+ const dotty = __importStar(require("dotty"));
30
+ const path_1 = require("path");
31
+ const utils_1 = require("@cosmology/utils");
32
+ // TODO move to store
33
+ const getPackages = (store) => {
34
+ return store.getProtos().reduce((m, proto) => {
35
+ if (proto.proto.package) {
36
+ m[proto.proto.package] = m[proto.proto.package] || [];
37
+ m[proto.proto.package].push(proto);
38
+ }
39
+ return m;
40
+ }, {});
41
+ };
42
+ exports.getPackages = getPackages;
43
+ const getPackagesBundled = (store) => {
44
+ const objectified = {};
45
+ const pkgs = (0, exports.getPackages)(store);
46
+ Object.keys(pkgs).forEach(key => {
47
+ if ((0, proto_parser_1.isRefExcluded)((0, proto_parser_1.createEmptyProtoRef)(key), store.options.prototypes?.excluded))
48
+ return;
49
+ const files = pkgs[key];
50
+ dotty.put(objectified, key, {
51
+ pkg: key,
52
+ files: files.filter(file => {
53
+ return !(0, proto_parser_1.isRefExcluded)((0, proto_parser_1.createEmptyProtoRef)(key, file.filename), store.options.prototypes?.excluded);
54
+ })
55
+ });
56
+ });
57
+ return objectified;
58
+ };
59
+ exports.getPackagesBundled = getPackagesBundled;
60
+ const bundlePackages = (store) => {
61
+ const allPackages = (0, exports.getPackagesBundled)(store);
62
+ return Object.keys(allPackages).map(base => {
63
+ const pkgs = allPackages[base];
64
+ const bundleVariables = {};
65
+ const bundleFile = (0, utils_1.toPosixPath)((0, path_1.join)(base, 'bundle.ts'));
66
+ const importPaths = [];
67
+ (0, exports.parsePackage)(store.options, pkgs, bundleFile, importPaths, bundleVariables);
68
+ return {
69
+ bundleVariables,
70
+ bundleFile,
71
+ importPaths,
72
+ base
73
+ };
74
+ });
75
+ };
76
+ exports.bundlePackages = bundlePackages;
77
+ // TODO review bundle registry methods
78
+ const bundleRegistries = (telescope) => {
79
+ const withMutations = telescope.contexts.filter(ctx => ctx.mutations.length);
80
+ const obj = withMutations.reduce((m, ctx) => {
81
+ m[ctx.ref.proto.package] = m[ctx.ref.proto.package] ?? [];
82
+ m[ctx.ref.proto.package].push(ctx);
83
+ return m;
84
+ }, {});
85
+ return Object.entries(obj)
86
+ .map(([pkg, serviceProtos]) => {
87
+ return {
88
+ package: pkg,
89
+ contexts: serviceProtos
90
+ };
91
+ });
92
+ };
93
+ exports.bundleRegistries = bundleRegistries;
94
+ const bundleBaseRegistries = (telescope) => {
95
+ const withMutations = telescope.contexts.filter(ctx => ctx.mutations.length);
96
+ const obj = withMutations.reduce((m, ctx) => {
97
+ const base = ctx.ref.proto.package.split('.')[0];
98
+ m[base] = m[base] ?? {};
99
+ m[base][ctx.ref.proto.package] = m[base][ctx.ref.proto.package] ?? [];
100
+ m[base][ctx.ref.proto.package].push(ctx);
101
+ return m;
102
+ }, {});
103
+ return Object.entries(obj)
104
+ .map(([pkg, withServices]) => {
105
+ const serviceProtos = Object.entries(withServices)
106
+ .map(([pkg, withServices]) => {
107
+ return {
108
+ package: pkg,
109
+ contexts: withServices
110
+ };
111
+ });
112
+ return {
113
+ base: pkg,
114
+ pkgs: serviceProtos
115
+ };
116
+ });
117
+ };
118
+ exports.bundleBaseRegistries = bundleBaseRegistries;
119
+ const parseContextsForRegistry = (contexts) => {
120
+ return contexts.map((ctx) => {
121
+ const responses = ctx.mutations.map(m => m.response);
122
+ const imports = ctx.mutations.reduce((m, msg) => {
123
+ m[msg.messageImport] = m[msg.messageImport] ?? [];
124
+ m[msg.messageImport].push(msg.message);
125
+ return m;
126
+ }, {});
127
+ return {
128
+ filename: ctx.ref.filename,
129
+ imports,
130
+ objects: ctx.types
131
+ .filter(type => !type.isNested)
132
+ .filter(type => !responses.includes(type.name))
133
+ .map(type => type.name)
134
+ };
135
+ });
136
+ };
137
+ exports.parseContextsForRegistry = parseContextsForRegistry;
138
+ const parsePackage = (options, obj, bundleFile, importPaths, bundleVariables) => {
139
+ if (!obj)
140
+ return;
141
+ if (obj.pkg && obj.files) {
142
+ obj.files.forEach(file => {
143
+ (0, exports.createFileBundle)(options, obj.pkg, file.filename, bundleFile, importPaths, bundleVariables);
144
+ });
145
+ return;
146
+ }
147
+ Object.keys(obj).forEach(mini => {
148
+ (0, exports.parsePackage)(options, obj[mini], bundleFile, importPaths, bundleVariables);
149
+ });
150
+ };
151
+ exports.parsePackage = parsePackage;
152
+ let counter = 0;
153
+ const createFileBundle = (options, pkg, filename, bundleFile, importPaths, bundleVariables) => {
154
+ let rel = (0, path_1.relative)((0, path_1.dirname)(bundleFile), filename);
155
+ if (!rel.startsWith('.'))
156
+ rel = `./${rel}`;
157
+ const variable = `_${counter++}`;
158
+ importPaths.push((0, ast_1.importNamespace)(variable, (0, utils_1.toPosixPath)(rel)));
159
+ dotty.put(bundleVariables, pkg + '.__export', true);
160
+ dotty.put(bundleVariables, pkg + '.' + variable, true);
161
+ };
162
+ exports.createFileBundle = createFileBundle;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Bundler = void 0;
4
+ const path_1 = require("path");
5
+ const build_1 = require("./build");
6
+ const bundle_1 = require("./bundle");
7
+ const files_1 = require("./utils/files");
8
+ const utils_1 = require("@cosmology/utils");
9
+ class Bundler {
10
+ builder;
11
+ contexts = [];
12
+ bundle;
13
+ files;
14
+ converters = [];
15
+ lcdClients = [];
16
+ rpcQueryClients = [];
17
+ rpcMsgClients = [];
18
+ registries = [];
19
+ stateManagers = {};
20
+ constructor(builder, bundle) {
21
+ this.builder = builder;
22
+ this.bundle = bundle;
23
+ this.files = [bundle.bundleFile];
24
+ }
25
+ addStateManagers(type, files) {
26
+ const state = this.stateManagers[type];
27
+ if (!state) {
28
+ this.stateManagers[type] = [];
29
+ }
30
+ [].push.apply(this.stateManagers[type], files);
31
+ this.builder.addStateManagers(type, files);
32
+ }
33
+ addLCDClients(files) {
34
+ [].push.apply(this.lcdClients, files);
35
+ this.builder.addLCDClients(files);
36
+ }
37
+ addRPCQueryClients(files) {
38
+ [].push.apply(this.rpcQueryClients, files);
39
+ this.builder.addRPCQueryClients(files);
40
+ }
41
+ addRPCMsgClients(files) {
42
+ [].push.apply(this.rpcMsgClients, files);
43
+ this.builder.addRPCMsgClients(files);
44
+ }
45
+ addRegistries(files) {
46
+ [].push.apply(this.registries, files);
47
+ this.builder.addRegistries(files);
48
+ }
49
+ addConverters(files) {
50
+ [].push.apply(this.converters, files);
51
+ this.builder.addConverters(files);
52
+ }
53
+ getFreshContext(context) {
54
+ return new build_1.TelescopeParseContext(context.ref, context.store, this.builder.options);
55
+ }
56
+ getLocalFilename(ref, suffix) {
57
+ return suffix
58
+ ? ref.filename.replace(/\.proto$/, `.${suffix}.ts`)
59
+ : ref.filename.replace(/\.proto$/, `.ts`);
60
+ }
61
+ getFilename(localname) {
62
+ return (0, path_1.resolve)((0, path_1.join)(this.builder.outPath, localname));
63
+ }
64
+ writeAst(program, filename) {
65
+ (0, files_1.writeAstToFile)(this.builder.outPath, this.builder.options, program, filename);
66
+ }
67
+ // addToBundle adds the path into the namespaced bundle object
68
+ addToBundle(context, localname) {
69
+ (0, bundle_1.createFileBundle)(this.builder.options, context.ref.proto.package, localname, this.bundle.bundleFile, this.bundle.importPaths, this.bundle.bundleVariables);
70
+ }
71
+ addToBundleToPackage(packagename, localname) {
72
+ (0, bundle_1.createFileBundle)(this.builder.options, packagename, localname, this.bundle.bundleFile, this.bundle.importPaths, this.bundle.bundleVariables);
73
+ }
74
+ addExportObjToBundle(pkg, localname, exportedIdentifiers, isHelperFunc) {
75
+ if (!this.bundle.exportObjs) {
76
+ this.bundle.exportObjs = [];
77
+ }
78
+ let rel = (0, path_1.relative)((0, path_1.dirname)(this.bundle.bundleFile), localname);
79
+ if (!rel.startsWith("."))
80
+ rel = `./${rel}`;
81
+ rel = (0, utils_1.toPosixPath)(rel);
82
+ rel = rel.replace((0, path_1.extname)(rel), "");
83
+ const existing = this.bundle.exportObjs.find((e) => e.localname === localname);
84
+ if (existing) {
85
+ // use Set to avoid duplicates
86
+ existing.exportedIdentifiers = [
87
+ ...new Set([...existing.exportedIdentifiers, ...exportedIdentifiers]),
88
+ ];
89
+ return;
90
+ }
91
+ this.bundle.exportObjs.push({
92
+ localname,
93
+ relativePath: rel,
94
+ exportedIdentifiers: [...new Set(exportedIdentifiers)],
95
+ isHelperFunc,
96
+ pkg,
97
+ });
98
+ }
99
+ }
100
+ exports.Bundler = Bundler;