@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,382 @@
1
+ import * as t from "@babel/types";
2
+ import { SymbolNames, importStmt, } from "@cosmology/ast";
3
+ import { UTILS, getRelativePath, UTIL_HELPERS } from "./utils";
4
+ import { restoreExtension } from "@cosmology/utils";
5
+ const importHashToArray = (hash) => {
6
+ return Object.entries(hash ?? {}).reduce((m, [path, names]) => {
7
+ names.forEach((name) => {
8
+ m.push({
9
+ type: "import",
10
+ name,
11
+ path,
12
+ });
13
+ });
14
+ return m;
15
+ }, []);
16
+ };
17
+ const getProtoImports = (context, filename) => {
18
+ return context.proto.imports
19
+ .map((usage) => {
20
+ if (filename === usage.import)
21
+ return;
22
+ const importPath = getRelativePath(filename, usage.import);
23
+ return {
24
+ type: "import",
25
+ name: usage.name,
26
+ importAs: usage.importedAs,
27
+ path: importPath,
28
+ protoPath: usage.import,
29
+ };
30
+ })
31
+ .filter(Boolean);
32
+ };
33
+ const getAminoImports = (context, filename) => {
34
+ return context.amino.imports
35
+ .map((usage) => {
36
+ if (filename === usage.import)
37
+ return;
38
+ const importPath = getRelativePath(filename, usage.import);
39
+ return {
40
+ type: "import",
41
+ name: usage.name,
42
+ importAs: usage.importedAs,
43
+ path: importPath,
44
+ protoPath: usage.import,
45
+ };
46
+ })
47
+ .filter(Boolean);
48
+ };
49
+ const getGenericImports = (context, filename) => {
50
+ return context.generic.imports
51
+ .map((usage) => {
52
+ if (filename === usage.import)
53
+ return;
54
+ const importPath = getRelativePath(filename, usage.import);
55
+ return {
56
+ type: "import",
57
+ name: usage.name,
58
+ importAs: usage.importedAs,
59
+ path: importPath,
60
+ protoPath: usage.import,
61
+ };
62
+ })
63
+ .filter(Boolean);
64
+ };
65
+ const getParsedImports = (context, parsedImports, filename) => {
66
+ const imports = [];
67
+ Object.entries(parsedImports ?? {}).forEach(([path, names]) => {
68
+ if (filename === path)
69
+ return;
70
+ const importPath = getRelativePath(filename, path);
71
+ const aliases = context.ref?.traversed?.importNames?.[path];
72
+ names.forEach((name) => {
73
+ let importAs = name;
74
+ if (aliases && aliases[name]) {
75
+ importAs = aliases[name];
76
+ }
77
+ imports.push({
78
+ type: "import",
79
+ name,
80
+ importAs,
81
+ path: importPath,
82
+ protoPath: path,
83
+ });
84
+ });
85
+ });
86
+ return imports;
87
+ };
88
+ const importAs = (name, importAs, importPath) => {
89
+ return t.importDeclaration([t.importSpecifier(t.identifier(importAs), t.identifier(name))], t.stringLiteral(importPath));
90
+ };
91
+ // __helpers__
92
+ export const getImportStatements = (filepath, list, options) => {
93
+ const imports = list.reduce((m, obj) => {
94
+ let editedPath = UTIL_HELPERS.includes(obj.path)
95
+ ? getRelativePath(filepath, `./${obj.path.replace(/__/g, "")}`)
96
+ : obj.path;
97
+ editedPath = restoreExtension(editedPath, options?.restoreImportExtension);
98
+ const clonedObj = { ...obj, path: editedPath };
99
+ m[clonedObj.path] = m[clonedObj.path] || [];
100
+ const exists = m[clonedObj.path].find((el) => el.type === clonedObj.type &&
101
+ el.path === clonedObj.path &&
102
+ el.name === clonedObj.name);
103
+ // MARKED AS NOT DRY [google.protobuf names]
104
+ // TODO some have google.protobuf.Any shows up... figure out the better way to handle this
105
+ if (/\./.test(clonedObj.name)) {
106
+ clonedObj.name =
107
+ clonedObj.name.split(".")[clonedObj.name.split(".").length - 1];
108
+ }
109
+ if (!exists) {
110
+ m[clonedObj.path].push(clonedObj);
111
+ }
112
+ return m;
113
+ }, {});
114
+ return Object.entries(imports).reduce((m, [importPath, imports]) => {
115
+ const defaultImports = imports.filter((a) => a.type === "default");
116
+ if (defaultImports.length) {
117
+ if (defaultImports.length > 1)
118
+ throw new Error("more than one default name NOT allowed.");
119
+ m.push(t.importDeclaration([t.importDefaultSpecifier(t.identifier(defaultImports[0].name))], t.stringLiteral(defaultImports[0].path)));
120
+ }
121
+ const namedImports = imports.filter((a) => a.type === "import" && (!a.importAs || a.name === a.importAs));
122
+ if (namedImports.length) {
123
+ m.push(importStmt(namedImports.map((i) => i.name), namedImports[0].path));
124
+ }
125
+ const aliasNamedImports = imports.filter((a) => a.type === "import" && a.importAs && a.name !== a.importAs);
126
+ aliasNamedImports.forEach((imp) => {
127
+ m.push(importAs(imp.name, imp.importAs, imp.path));
128
+ });
129
+ const namespaced = imports.filter((a) => a.type === "namespace");
130
+ if (namespaced.length) {
131
+ if (namespaced.length > 1)
132
+ throw new Error("more than one namespaced name NOT allowed.");
133
+ m.push(t.importDeclaration([t.importNamespaceSpecifier(t.identifier(namespaced[0].name))], t.stringLiteral(namespaced[0].path)));
134
+ }
135
+ return m;
136
+ }, []);
137
+ };
138
+ const convertUtilsToImports = (context) => {
139
+ const list = [];
140
+ const utils = Object.keys({
141
+ ...context.amino.utils,
142
+ ...context.proto.utils,
143
+ ...context.generic.utils,
144
+ });
145
+ utils.forEach((util) => {
146
+ if (!UTILS.hasOwnProperty(util))
147
+ throw new Error("missing Util! ::" + util);
148
+ if (typeof UTILS[util] === "string") {
149
+ list.push({
150
+ type: "import",
151
+ path: UTILS[util],
152
+ name: util,
153
+ });
154
+ }
155
+ else {
156
+ list.push(UTILS[util]);
157
+ }
158
+ });
159
+ return list;
160
+ };
161
+ const convertUtilsToImportsGenric = (context) => {
162
+ const list = [];
163
+ const utils = Object.keys({
164
+ ...context.utils,
165
+ });
166
+ // MARKED AS NOT DRY - duplicate of above
167
+ utils.forEach((util) => {
168
+ if (!UTILS.hasOwnProperty(util))
169
+ throw new Error("missing Util! ::" + util);
170
+ if (typeof UTILS[util] === "string") {
171
+ list.push({
172
+ type: "import",
173
+ path: UTILS[util],
174
+ name: util,
175
+ });
176
+ }
177
+ else {
178
+ list.push(UTILS[util]);
179
+ }
180
+ });
181
+ return list;
182
+ };
183
+ export const buildAllImports = (context, allImports, filepath) => {
184
+ const imports = aggregateImports(context, allImports, filepath);
185
+ const importStmts = getImportStatements(filepath, imports, {
186
+ restoreImportExtension: context.options.restoreImportExtension,
187
+ });
188
+ return importStmts;
189
+ };
190
+ export const buildAllImportsFromGenericContext = (context, filepath) => {
191
+ const imports = convertUtilsToImportsGenric(context);
192
+ const importStmts = getImportStatements(filepath, imports, {
193
+ restoreImportExtension: context.options.restoreImportExtension,
194
+ });
195
+ return importStmts;
196
+ };
197
+ const addDerivativeTypesToImports = (context, imports) => {
198
+ const ref = context.ref;
199
+ return imports.reduce((m, obj) => {
200
+ // SDKType
201
+ // probably wont need this until we start generating osmonauts/helpers inline
202
+ if (obj.type === "import" && obj.path.startsWith(".")) {
203
+ let lookup = null;
204
+ try {
205
+ lookup = context.store.getImportFromRef(ref, obj.name);
206
+ }
207
+ catch (e) { }
208
+ const appendSuffix = (obj, baseType) => {
209
+ return {
210
+ ...obj,
211
+ orig: obj.name,
212
+ name: SymbolNames[baseType](obj.name),
213
+ importAs: SymbolNames[baseType](obj.importAs ?? obj.name),
214
+ protoPath: obj.protoPath,
215
+ };
216
+ };
217
+ // MARKED AS NOT DRY [google.protobuf names]
218
+ // TODO some have google.protobuf.Any shows up... figure out the better way to handle this
219
+ const removeProtoPrefix = (obj) => {
220
+ if (/\./.test(obj.name)) {
221
+ obj.name = obj.name.split(".")[obj.name.split(".").length - 1];
222
+ obj.importAs =
223
+ obj.importAs.split(".")[obj.importAs.split(".").length - 1];
224
+ }
225
+ return obj;
226
+ };
227
+ const SDKTypeObject = removeProtoPrefix(appendSuffix(obj, "SDKType"));
228
+ const AminoTypeObject = removeProtoPrefix(appendSuffix(obj, "Amino"));
229
+ const EncodedTypeObject = removeProtoPrefix(appendSuffix(obj, "ProtoMsg"));
230
+ // const AminoTypeUrlObject = removeProtoPrefix(appendSuffix(obj, 'AminoType'));
231
+ if (lookup && ["Type", "Enum"].includes(lookup.obj.type)) {
232
+ const arr = [...m, obj];
233
+ if (context.options.aminoEncoding?.enabled &&
234
+ !context.options.aminoEncoding.useLegacyInlineEncoding) {
235
+ // check and see if this derived import has been required...
236
+ const foundEnc = context.proto.derivedImports.find((a) => {
237
+ if (a.type !== "ProtoMsg")
238
+ return false;
239
+ if (EncodedTypeObject.orig === a.symbol.symbolName) {
240
+ // UNTIL you fix the ImportObjs to have ref...
241
+ let rel = getRelativePath(a.symbol.ref, a.symbol.source);
242
+ if (rel === EncodedTypeObject.path) {
243
+ return true;
244
+ }
245
+ }
246
+ });
247
+ const foundAmino = context.proto.derivedImports.find((a) => {
248
+ if (a.type !== "Amino")
249
+ return false;
250
+ if (AminoTypeObject.orig === a.symbol.symbolName &&
251
+ a.symbol.ref &&
252
+ a.symbol.source) {
253
+ // UNTIL you fix the ImportObjs to have ref...
254
+ let rel = getRelativePath(a.symbol.ref, a.symbol.source);
255
+ if (rel === AminoTypeObject.path) {
256
+ return true;
257
+ }
258
+ }
259
+ });
260
+ // we need Any types as defaults...
261
+ if (foundEnc || EncodedTypeObject.orig === "Any") {
262
+ arr.push(EncodedTypeObject);
263
+ }
264
+ if (foundAmino || AminoTypeObject.orig === "Any") {
265
+ arr.push(AminoTypeObject);
266
+ }
267
+ }
268
+ if (context.options.useSDKTypes) {
269
+ // issue in output1 (probably legacy v1 amino transpiler)
270
+ // ProposalSDKType wasn't being found in QueryProposalResponseSDKType
271
+ arr.push(SDKTypeObject);
272
+ // const foundSDK = context.proto.derivedImports.find(a => {
273
+ // if (a.type !== 'SDKType') return false;
274
+ // if (SDKTypeObject.orig === a.symbol.symbolName) {
275
+ // // UNTIL you fix the ImportObjs to have ref...
276
+ // let rel = getRelativePath(a.symbol.ref, a.symbol.source);
277
+ // if (rel === SDKTypeObject.path) {
278
+ // return true;
279
+ // }
280
+ // }
281
+ // });
282
+ // if (foundSDK) {
283
+ // arr.push(SDKTypeObject);
284
+ // }
285
+ }
286
+ return arr;
287
+ }
288
+ }
289
+ return [...m, obj];
290
+ }, []);
291
+ };
292
+ export const aggregateImports = (context, allImports, filepath) => {
293
+ const protoImports = getProtoImports(context, filepath);
294
+ const aminoImports = getAminoImports(context, filepath);
295
+ const genericImports = getGenericImports(context, filepath);
296
+ const parsedImports = getParsedImports(context, context.amino.ref.traversed.parsedImports, filepath);
297
+ const additionalImports = importHashToArray(allImports);
298
+ const utilities = convertUtilsToImports(context);
299
+ let list = []
300
+ .concat(parsedImports)
301
+ .concat(utilities)
302
+ .concat(protoImports)
303
+ .concat(aminoImports)
304
+ .concat(genericImports)
305
+ .concat(additionalImports);
306
+ if (context.options.useSDKTypes ||
307
+ (context.options.aminoEncoding?.enabled &&
308
+ !context.options.aminoEncoding?.useLegacyInlineEncoding)) {
309
+ list = addDerivativeTypesToImports(context, list);
310
+ }
311
+ list = list.filter((imp) => {
312
+ const alias = context.store.getTypeAlias(imp.orig || imp.name, imp.protoPath);
313
+ return !alias;
314
+ });
315
+ return list;
316
+ };
317
+ export const getImportsFromMutations = (mutations) => {
318
+ return mutations.map((mutation) => {
319
+ return {
320
+ import: mutation.messageImport,
321
+ name: mutation.message,
322
+ };
323
+ });
324
+ };
325
+ // TODO implement ServiceQuery type (it is the same)
326
+ export const getImportsFromQueries = (queries) => {
327
+ return queries.reduce((m, query) => {
328
+ const req = {
329
+ import: query.messageImport,
330
+ name: query.message,
331
+ };
332
+ const res = {
333
+ import: query.responseImport,
334
+ name: query.response,
335
+ };
336
+ return [...m, req, res];
337
+ }, []);
338
+ };
339
+ export const getDepsFromMutations = (mutations, filename) => {
340
+ return getImportsFromMutations(mutations)
341
+ .map((imp) => {
342
+ const f = filename;
343
+ const f2 = imp.import;
344
+ if (f === f2)
345
+ return;
346
+ const importPath = getRelativePath(f, f2);
347
+ return {
348
+ ...imp,
349
+ importPath,
350
+ };
351
+ })
352
+ .filter(Boolean)
353
+ .reduce((m, v) => {
354
+ m[v.importPath] = m[v.importPath] ?? [];
355
+ if (!m[v.importPath].includes(v.name)) {
356
+ m[v.importPath].push(v.name);
357
+ }
358
+ return m;
359
+ }, {});
360
+ };
361
+ export const getDepsFromQueries = (queries, filename) => {
362
+ return getImportsFromQueries(queries)
363
+ .map((imp) => {
364
+ const f = filename;
365
+ const f2 = imp.import;
366
+ if (f === f2)
367
+ return;
368
+ const importPath = getRelativePath(f, f2);
369
+ return {
370
+ ...imp,
371
+ importPath,
372
+ };
373
+ })
374
+ .filter(Boolean)
375
+ .reduce((m, v) => {
376
+ m[v.importPath] = m[v.importPath] ?? [];
377
+ if (!m[v.importPath].includes(v.name)) {
378
+ m[v.importPath].push(v.name);
379
+ }
380
+ return m;
381
+ }, {});
382
+ };
@@ -0,0 +1,8 @@
1
+ import { TelescopeBuilder } from './builder';
2
+ export * from './builder';
3
+ export * from './bundler';
4
+ export * from './types';
5
+ export default async (input) => {
6
+ const builder = new TelescopeBuilder(input);
7
+ await builder.build();
8
+ };
@@ -0,0 +1,185 @@
1
+ import { ALLOWED_RPC_SERVICES } from '@cosmology/types';
2
+ import { getObjectName } from '@cosmology/proto-parser';
3
+ import { getKeyTypeEntryName } from '@cosmology/ast';
4
+ import { getRoot } from './utils';
5
+ export const parse = (context) => {
6
+ const root = getRoot(context.ref);
7
+ parseRecur({
8
+ context,
9
+ obj: root.root,
10
+ scope: [],
11
+ isNested: false
12
+ });
13
+ };
14
+ export const getParsedObjectName = (ref, obj, scope) => {
15
+ const _scope = [...scope];
16
+ const root = getRoot(ref);
17
+ const allButPackage = _scope.splice(root.package.split('.').length);
18
+ // pull off "this" name
19
+ allButPackage.pop();
20
+ return getObjectName(obj.name, [root.package, ...allButPackage]);
21
+ };
22
+ // TODO potentially move this back to ast or proto bc the ast lib references MapEntries...
23
+ // Creating those BindingsEntry interfaces
24
+ const makeKeyTypeObj = (ref, field, scope) => {
25
+ const root = getRoot(ref);
26
+ const scoped = [...scope].splice(root.package.split('.').length);
27
+ const adhocObj = {
28
+ type: 'Type',
29
+ comment: undefined,
30
+ fields: {
31
+ key: {
32
+ id: 1,
33
+ type: field.keyType,
34
+ scope: [...scoped],
35
+ parsedType: {
36
+ name: field.keyType,
37
+ type: field.keyType
38
+ },
39
+ comment: undefined,
40
+ options: {
41
+ "(telescope:map_entry_type_field)": true
42
+ }
43
+ },
44
+ value: {
45
+ id: 2,
46
+ type: field.type,
47
+ scope: [...scoped],
48
+ parsedType: {
49
+ name: field.parsedType.name,
50
+ type: field.parsedType.type
51
+ },
52
+ comment: undefined,
53
+ options: {
54
+ "(telescope:map_entry_type_field)": true
55
+ }
56
+ }
57
+ }
58
+ };
59
+ return adhocObj;
60
+ };
61
+ export const parseType = (context, obj,
62
+ // scope already has the name of "this" field at the end of it
63
+ scope, isNested = false) => {
64
+ obj.keyTypes.forEach(field => {
65
+ const keyTypeObject = makeKeyTypeObj(context.ref, field, [...scope]);
66
+ const name = getParsedObjectName(context.ref, {
67
+ name: getKeyTypeEntryName(obj.name, field.name)
68
+ }, [...scope]);
69
+ context.addType(name, keyTypeObject, true);
70
+ });
71
+ // parse nested names
72
+ let name = obj.name;
73
+ if (isNested) {
74
+ name = getParsedObjectName(context.ref, obj, [...scope]);
75
+ }
76
+ context.addType(name, obj, isNested);
77
+ // render nested LAST
78
+ if (obj.nested) {
79
+ Object.keys(obj.nested).forEach(key => {
80
+ // isNested = true;
81
+ parseRecur({
82
+ context,
83
+ obj: obj.nested[key],
84
+ scope: [...scope, key],
85
+ isNested: true
86
+ });
87
+ });
88
+ }
89
+ };
90
+ export const parseEnum = (context, obj, scope, isNested = false) => {
91
+ let name = obj.name;
92
+ let enumObj = {
93
+ ...obj,
94
+ package: context.ref.proto.package
95
+ };
96
+ // parse nested names
97
+ if (isNested) {
98
+ name = getParsedObjectName(context.ref, enumObj, scope);
99
+ }
100
+ context.addType(name, enumObj, isNested);
101
+ };
102
+ export const parseService = (context, obj, scope, isNested = false) => {
103
+ const methodHash = obj.methods;
104
+ if (!ALLOWED_RPC_SERVICES.includes(obj.name)) {
105
+ return;
106
+ }
107
+ Object.entries(methodHash)
108
+ .forEach(([key, value]) => {
109
+ const lookup = context.store.get(context.ref, value.requestType);
110
+ if (!lookup) {
111
+ console.warn(`cannot find ${value.requestType}`);
112
+ throw new Error('undefined symbol for service.');
113
+ }
114
+ const lookupResponse = context.store.get(context.ref, value.responseType);
115
+ if (!lookupResponse) {
116
+ console.warn(`cannot find ${value.responseType}`);
117
+ throw new Error('undefined symbol for service.');
118
+ }
119
+ const serviceInfo = {
120
+ methodName: key,
121
+ package: context.ref.proto.package,
122
+ message: lookup.importedName,
123
+ messageImport: lookup.import ?? context.ref.filename,
124
+ response: lookupResponse.importedName,
125
+ responseImport: lookupResponse.import ?? context.ref.filename,
126
+ comment: value.comment
127
+ };
128
+ switch (obj.name) {
129
+ case 'Msg':
130
+ context.addMutation(serviceInfo);
131
+ break;
132
+ case 'Query':
133
+ context.addQuery(serviceInfo);
134
+ break;
135
+ default:
136
+ context.addService(serviceInfo);
137
+ break;
138
+ }
139
+ });
140
+ };
141
+ export const parseRecur = ({ context, obj, scope, isNested }) => {
142
+ switch (obj.type) {
143
+ case 'Type':
144
+ return parseType(context, obj, scope, isNested);
145
+ case 'Enum':
146
+ return parseEnum(context, obj, scope, isNested);
147
+ case 'Service':
148
+ return parseService(context, obj, scope, isNested);
149
+ case 'Field':
150
+ console.log(obj);
151
+ return;
152
+ case 'Root':
153
+ case 'Namespace':
154
+ if (obj.nested) {
155
+ return Object.keys(obj.nested).forEach(key => {
156
+ parseRecur({
157
+ context,
158
+ obj: obj.nested[key],
159
+ scope: [...scope, key],
160
+ isNested
161
+ });
162
+ });
163
+ }
164
+ else {
165
+ throw new Error('parseRecur() cannot find protobufjs Type');
166
+ }
167
+ default:
168
+ // if (obj.type === 'string') return;
169
+ // if (obj.type === 'bool') return;
170
+ // if (obj.type === 'HttpRule') return;
171
+ // if (obj.type === 'InterfaceDescriptor') return;
172
+ // if (obj.type === 'ScalarDescriptor') return;
173
+ // if (obj.type === 'ModuleDescriptor') return;
174
+ // if (obj.type === 'TableDescriptor') return;
175
+ // if (obj.type === 'SingletonDescriptor') return;
176
+ // if (obj.type === 'ModuleSchemaDescriptor') return;
177
+ // if (obj.type === 'google.api.FieldBehavior') return;
178
+ // if (obj.type === 'google.api.ResourceReference') return;
179
+ // if (obj.type === 'google.api.ResourceDescriptor') return;
180
+ // if (obj.type === 'google.api.RoutingRule') return;
181
+ // if (obj.type === 'google.api.VisibilityRule') return;
182
+ // if (obj.type === 'google.longrunning.OperationInfo') return;
183
+ // throw new Error('parseRecur() cannot find protobufjs Type')
184
+ }
185
+ };
@@ -0,0 +1,58 @@
1
+ import { filter } from 'fuzzy';
2
+ import { prompt as inquirerer } from 'inquirerer';
3
+ export const getFuzzySearch = (list) => {
4
+ return (answers, input) => {
5
+ input = input || '';
6
+ return new Promise(function (resolve) {
7
+ setTimeout(function () {
8
+ const fuzzyResult = filter(input, list);
9
+ resolve(fuzzyResult.map(function (el) {
10
+ return el.original;
11
+ }));
12
+ }, 25);
13
+ });
14
+ };
15
+ };
16
+ export const getFuzzySearchNames = (nameValueItemList) => {
17
+ const list = nameValueItemList.map(({ name, value }) => name);
18
+ return (answers, input) => {
19
+ input = input || '';
20
+ return new Promise(function (resolve) {
21
+ setTimeout(function () {
22
+ const fuzzyResult = filter(input, list);
23
+ resolve(fuzzyResult.map(function (el) {
24
+ return nameValueItemList.find(({ name, value }) => el.original == name);
25
+ }));
26
+ }, 25);
27
+ });
28
+ };
29
+ };
30
+ const transform = (questions) => {
31
+ return questions.map((q) => {
32
+ if (q.type === 'fuzzy') {
33
+ const choices = q.choices;
34
+ delete q.choices;
35
+ return {
36
+ ...q,
37
+ type: 'autocomplete',
38
+ source: getFuzzySearch(choices)
39
+ };
40
+ }
41
+ else if (q.type === 'fuzzy:objects') {
42
+ const choices = q.choices;
43
+ delete q.choices;
44
+ return {
45
+ ...q,
46
+ type: 'autocomplete',
47
+ source: getFuzzySearchNames(choices)
48
+ };
49
+ }
50
+ else {
51
+ return q;
52
+ }
53
+ });
54
+ };
55
+ export const prompt = async (questions = [], argv = {}) => {
56
+ questions = transform(questions);
57
+ return await inquirerer(questions, argv);
58
+ };