@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/src/imports.ts ADDED
@@ -0,0 +1,499 @@
1
+ import * as t from "@babel/types";
2
+ import {
3
+ GenericParseContext,
4
+ SymbolNames,
5
+ TelescopeBaseTypes,
6
+ importStmt,
7
+ } from "@cosmology/ast";
8
+ import { ServiceMutation } from "@cosmology/types";
9
+
10
+ import { DerivedImportObj, ImportHash, ImportObj } from "./types";
11
+ import { UTILS, getRelativePath, UTIL_HELPERS } from "./utils";
12
+ import { TelescopeParseContext } from "./build";
13
+ import { restoreExtension } from "@cosmology/utils";
14
+
15
+ const importHashToArray = (hash: ImportHash): ImportObj[] => {
16
+ return Object.entries(hash ?? {}).reduce((m, [path, names]) => {
17
+ names.forEach((name) => {
18
+ m.push({
19
+ type: "import",
20
+ name,
21
+ path,
22
+ });
23
+ });
24
+ return m;
25
+ }, []);
26
+ };
27
+
28
+ const getProtoImports = (
29
+ context: TelescopeParseContext,
30
+ filename: string
31
+ ): ImportObj[] => {
32
+ return context.proto.imports
33
+ .map((usage) => {
34
+ if (filename === usage.import) return;
35
+ const importPath = getRelativePath(filename, usage.import);
36
+ return {
37
+ type: "import",
38
+ name: usage.name,
39
+ importAs: usage.importedAs,
40
+ path: importPath,
41
+ protoPath: usage.import,
42
+ };
43
+ })
44
+ .filter(Boolean);
45
+ };
46
+
47
+ const getAminoImports = (
48
+ context: TelescopeParseContext,
49
+ filename: string
50
+ ): ImportObj[] => {
51
+ return context.amino.imports
52
+ .map((usage) => {
53
+ if (filename === usage.import) 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
+
66
+ const getGenericImports = (
67
+ context: TelescopeParseContext,
68
+ filename: string
69
+ ): ImportObj[] => {
70
+ return context.generic.imports
71
+ .map((usage) => {
72
+ if (filename === usage.import) return;
73
+ const importPath = getRelativePath(filename, usage.import);
74
+ return {
75
+ type: "import",
76
+ name: usage.name,
77
+ importAs: usage.importedAs,
78
+ path: importPath,
79
+ protoPath: usage.import,
80
+ };
81
+ })
82
+ .filter(Boolean);
83
+ };
84
+
85
+ const getParsedImports = (
86
+ context: TelescopeParseContext,
87
+ parsedImports: ImportHash,
88
+ filename: string
89
+ ): ImportObj[] => {
90
+ const imports = [];
91
+ Object.entries(parsedImports ?? {}).forEach(([path, names]) => {
92
+ if (filename === path) return;
93
+ const importPath = getRelativePath(filename, path);
94
+ const aliases = context.ref?.traversed?.importNames?.[path];
95
+ names.forEach((name) => {
96
+ let importAs = name;
97
+ if (aliases && aliases[name]) {
98
+ importAs = aliases[name];
99
+ }
100
+ imports.push({
101
+ type: "import",
102
+ name,
103
+ importAs,
104
+ path: importPath,
105
+ protoPath: path,
106
+ });
107
+ });
108
+ });
109
+ return imports;
110
+ };
111
+
112
+ const importAs = (name: string, importAs: string, importPath: string) => {
113
+ return t.importDeclaration(
114
+ [t.importSpecifier(t.identifier(importAs), t.identifier(name))],
115
+ t.stringLiteral(importPath)
116
+ );
117
+ };
118
+
119
+ // __helpers__
120
+ export const getImportStatements = (
121
+ filepath: string,
122
+ list: ImportObj[],
123
+ options?: {
124
+ restoreImportExtension?: string;
125
+ }
126
+ ) => {
127
+ const imports = list.reduce((m, obj) => {
128
+ let editedPath = UTIL_HELPERS.includes(obj.path)
129
+ ? getRelativePath(filepath, `./${obj.path.replace(/__/g, "")}`)
130
+ : obj.path;
131
+
132
+ editedPath = restoreExtension(editedPath, options?.restoreImportExtension);
133
+
134
+ const clonedObj = { ...obj, path: editedPath };
135
+
136
+ m[clonedObj.path] = m[clonedObj.path] || [];
137
+ const exists = m[clonedObj.path].find(
138
+ (el) =>
139
+ el.type === clonedObj.type &&
140
+ el.path === clonedObj.path &&
141
+ el.name === clonedObj.name
142
+ );
143
+
144
+ // MARKED AS NOT DRY [google.protobuf names]
145
+ // TODO some have google.protobuf.Any shows up... figure out the better way to handle this
146
+ if (/\./.test(clonedObj.name)) {
147
+ clonedObj.name =
148
+ clonedObj.name.split(".")[clonedObj.name.split(".").length - 1];
149
+ }
150
+
151
+ if (!exists) {
152
+ m[clonedObj.path].push(clonedObj);
153
+ }
154
+ return m;
155
+ }, {});
156
+
157
+ return Object.entries(imports).reduce(
158
+ (m, [importPath, imports]: [string, ImportObj[]]) => {
159
+ const defaultImports = imports.filter((a) => a.type === "default");
160
+ if (defaultImports.length) {
161
+ if (defaultImports.length > 1)
162
+ throw new Error("more than one default name NOT allowed.");
163
+ m.push(
164
+ t.importDeclaration(
165
+ [t.importDefaultSpecifier(t.identifier(defaultImports[0].name))],
166
+ t.stringLiteral(defaultImports[0].path)
167
+ )
168
+ );
169
+ }
170
+ const namedImports = imports.filter(
171
+ (a) => a.type === "import" && (!a.importAs || a.name === a.importAs)
172
+ );
173
+ if (namedImports.length) {
174
+ m.push(
175
+ importStmt(
176
+ namedImports.map((i) => i.name),
177
+ namedImports[0].path
178
+ )
179
+ );
180
+ }
181
+ const aliasNamedImports = imports.filter(
182
+ (a) => a.type === "import" && a.importAs && a.name !== a.importAs
183
+ );
184
+ aliasNamedImports.forEach((imp) => {
185
+ m.push(importAs(imp.name, imp.importAs, imp.path));
186
+ });
187
+
188
+ const namespaced = imports.filter((a) => a.type === "namespace");
189
+ if (namespaced.length) {
190
+ if (namespaced.length > 1)
191
+ throw new Error("more than one namespaced name NOT allowed.");
192
+ m.push(
193
+ t.importDeclaration(
194
+ [t.importNamespaceSpecifier(t.identifier(namespaced[0].name))],
195
+ t.stringLiteral(namespaced[0].path)
196
+ )
197
+ );
198
+ }
199
+ return m;
200
+ },
201
+ []
202
+ );
203
+ };
204
+
205
+ const convertUtilsToImports = (context: TelescopeParseContext): ImportObj[] => {
206
+ const list = [];
207
+ const utils = Object.keys({
208
+ ...context.amino.utils,
209
+ ...context.proto.utils,
210
+ ...context.generic.utils,
211
+ });
212
+
213
+ utils.forEach((util) => {
214
+ if (!UTILS.hasOwnProperty(util)) throw new Error("missing Util! ::" + util);
215
+ if (typeof UTILS[util] === "string") {
216
+ list.push({
217
+ type: "import",
218
+ path: UTILS[util],
219
+ name: util,
220
+ });
221
+ } else {
222
+ list.push(UTILS[util]);
223
+ }
224
+ });
225
+ return list;
226
+ };
227
+
228
+ const convertUtilsToImportsGenric = (
229
+ context: GenericParseContext
230
+ ): ImportObj[] => {
231
+ const list = [];
232
+ const utils = Object.keys({
233
+ ...context.utils,
234
+ });
235
+
236
+ // MARKED AS NOT DRY - duplicate of above
237
+ utils.forEach((util) => {
238
+ if (!UTILS.hasOwnProperty(util)) throw new Error("missing Util! ::" + util);
239
+ if (typeof UTILS[util] === "string") {
240
+ list.push({
241
+ type: "import",
242
+ path: UTILS[util],
243
+ name: util,
244
+ });
245
+ } else {
246
+ list.push(UTILS[util]);
247
+ }
248
+ });
249
+ return list;
250
+ };
251
+
252
+ export const buildAllImports = (
253
+ context: TelescopeParseContext,
254
+ allImports: ImportHash,
255
+ filepath: string
256
+ ) => {
257
+ const imports = aggregateImports(context, allImports, filepath);
258
+ const importStmts = getImportStatements(filepath, imports, {
259
+ restoreImportExtension: context.options.restoreImportExtension,
260
+ });
261
+ return importStmts;
262
+ };
263
+
264
+ export const buildAllImportsFromGenericContext = (
265
+ context: GenericParseContext,
266
+ filepath: string
267
+ ) => {
268
+ const imports: ImportObj[] = convertUtilsToImportsGenric(context);
269
+ const importStmts = getImportStatements(filepath, imports, {
270
+ restoreImportExtension: context.options.restoreImportExtension,
271
+ });
272
+ return importStmts;
273
+ };
274
+
275
+ const addDerivativeTypesToImports = (
276
+ context: TelescopeParseContext,
277
+ imports: ImportObj[]
278
+ ) => {
279
+ const ref = context.ref;
280
+
281
+ return imports.reduce((m, obj) => {
282
+ // SDKType
283
+ // probably wont need this until we start generating osmonauts/helpers inline
284
+ if (obj.type === "import" && obj.path.startsWith(".")) {
285
+ let lookup = null;
286
+ try {
287
+ lookup = context.store.getImportFromRef(ref, obj.name);
288
+ } catch (e) {}
289
+
290
+ const appendSuffix = (
291
+ obj: ImportObj,
292
+ baseType: TelescopeBaseTypes
293
+ ): DerivedImportObj => {
294
+ return {
295
+ ...obj,
296
+ orig: obj.name,
297
+ name: SymbolNames[baseType](obj.name),
298
+ importAs: SymbolNames[baseType](obj.importAs ?? obj.name),
299
+ protoPath: obj.protoPath,
300
+ };
301
+ };
302
+
303
+ // MARKED AS NOT DRY [google.protobuf names]
304
+ // TODO some have google.protobuf.Any shows up... figure out the better way to handle this
305
+ const removeProtoPrefix = (obj: DerivedImportObj): DerivedImportObj => {
306
+ if (/\./.test(obj.name)) {
307
+ obj.name = obj.name.split(".")[obj.name.split(".").length - 1];
308
+ obj.importAs =
309
+ obj.importAs.split(".")[obj.importAs.split(".").length - 1];
310
+ }
311
+ return obj;
312
+ };
313
+
314
+ const SDKTypeObject = removeProtoPrefix(appendSuffix(obj, "SDKType"));
315
+ const AminoTypeObject = removeProtoPrefix(appendSuffix(obj, "Amino"));
316
+ const EncodedTypeObject = removeProtoPrefix(
317
+ appendSuffix(obj, "ProtoMsg")
318
+ );
319
+ // const AminoTypeUrlObject = removeProtoPrefix(appendSuffix(obj, 'AminoType'));
320
+
321
+ if (lookup && ["Type", "Enum"].includes(lookup.obj.type)) {
322
+ const arr = [...m, obj];
323
+
324
+ if (
325
+ context.options.aminoEncoding?.enabled &&
326
+ !context.options.aminoEncoding.useLegacyInlineEncoding
327
+ ) {
328
+ // check and see if this derived import has been required...
329
+ const foundEnc = context.proto.derivedImports.find((a) => {
330
+ if (a.type !== "ProtoMsg") return false;
331
+ if (EncodedTypeObject.orig === a.symbol.symbolName) {
332
+ // UNTIL you fix the ImportObjs to have ref...
333
+ let rel = getRelativePath(a.symbol.ref, a.symbol.source);
334
+ if (rel === EncodedTypeObject.path) {
335
+ return true;
336
+ }
337
+ }
338
+ });
339
+ const foundAmino = context.proto.derivedImports.find((a) => {
340
+ if (a.type !== "Amino") return false;
341
+ if (
342
+ AminoTypeObject.orig === a.symbol.symbolName &&
343
+ a.symbol.ref &&
344
+ a.symbol.source
345
+ ) {
346
+ // UNTIL you fix the ImportObjs to have ref...
347
+ let rel = getRelativePath(a.symbol.ref, a.symbol.source);
348
+ if (rel === AminoTypeObject.path) {
349
+ return true;
350
+ }
351
+ }
352
+ });
353
+
354
+ // we need Any types as defaults...
355
+ if (foundEnc || EncodedTypeObject.orig === "Any") {
356
+ arr.push(EncodedTypeObject);
357
+ }
358
+ if (foundAmino || AminoTypeObject.orig === "Any") {
359
+ arr.push(AminoTypeObject);
360
+ }
361
+ }
362
+ if (context.options.useSDKTypes) {
363
+ // issue in output1 (probably legacy v1 amino transpiler)
364
+ // ProposalSDKType wasn't being found in QueryProposalResponseSDKType
365
+ arr.push(SDKTypeObject);
366
+ // const foundSDK = context.proto.derivedImports.find(a => {
367
+ // if (a.type !== 'SDKType') return false;
368
+
369
+ // if (SDKTypeObject.orig === a.symbol.symbolName) {
370
+ // // UNTIL you fix the ImportObjs to have ref...
371
+ // let rel = getRelativePath(a.symbol.ref, a.symbol.source);
372
+ // if (rel === SDKTypeObject.path) {
373
+ // return true;
374
+ // }
375
+ // }
376
+ // });
377
+
378
+ // if (foundSDK) {
379
+ // arr.push(SDKTypeObject);
380
+ // }
381
+ }
382
+
383
+ return arr;
384
+ }
385
+ }
386
+ return [...m, obj];
387
+ }, []);
388
+ };
389
+
390
+ export const aggregateImports = (
391
+ context: TelescopeParseContext,
392
+ allImports: ImportHash,
393
+ filepath: string
394
+ ): ImportObj[] => {
395
+ const protoImports: ImportObj[] = getProtoImports(context, filepath);
396
+ const aminoImports: ImportObj[] = getAminoImports(context, filepath);
397
+ const genericImports: ImportObj[] = getGenericImports(context, filepath);
398
+ const parsedImports: ImportObj[] = getParsedImports(
399
+ context,
400
+ context.amino.ref.traversed.parsedImports,
401
+ filepath
402
+ );
403
+ const additionalImports: ImportObj[] = importHashToArray(allImports);
404
+ const utilities: ImportObj[] = convertUtilsToImports(context);
405
+
406
+ let list = []
407
+ .concat(parsedImports)
408
+ .concat(utilities)
409
+ .concat(protoImports)
410
+ .concat(aminoImports)
411
+ .concat(genericImports)
412
+ .concat(additionalImports);
413
+
414
+ if (
415
+ context.options.useSDKTypes ||
416
+ (context.options.aminoEncoding?.enabled &&
417
+ !context.options.aminoEncoding?.useLegacyInlineEncoding)
418
+ ) {
419
+ list = addDerivativeTypesToImports(context, list);
420
+ }
421
+
422
+ list = list.filter((imp) => {
423
+ const alias = context.store.getTypeAlias(imp.orig || imp.name, imp.protoPath);
424
+ return !alias;
425
+ });
426
+
427
+ return list;
428
+ };
429
+
430
+ export const getImportsFromMutations = (mutations: ServiceMutation[]) => {
431
+ return mutations.map((mutation) => {
432
+ return {
433
+ import: mutation.messageImport,
434
+ name: mutation.message,
435
+ };
436
+ });
437
+ };
438
+
439
+ // TODO implement ServiceQuery type (it is the same)
440
+ export const getImportsFromQueries = (queries: ServiceMutation[]) => {
441
+ return queries.reduce((m, query) => {
442
+ const req = {
443
+ import: query.messageImport,
444
+ name: query.message,
445
+ };
446
+ const res = {
447
+ import: query.responseImport,
448
+ name: query.response,
449
+ };
450
+ return [...m, req, res];
451
+ }, []);
452
+ };
453
+
454
+ export const getDepsFromMutations = (
455
+ mutations: ServiceMutation[],
456
+ filename: string
457
+ ) => {
458
+ return getImportsFromMutations(mutations)
459
+ .map((imp) => {
460
+ const f = filename;
461
+ const f2 = imp.import;
462
+ if (f === f2) return;
463
+ const importPath = getRelativePath(f, f2);
464
+ return {
465
+ ...imp,
466
+ importPath,
467
+ };
468
+ })
469
+ .filter(Boolean)
470
+ .reduce((m, v) => {
471
+ m[v.importPath] = m[v.importPath] ?? [];
472
+ if (!m[v.importPath].includes(v.name)) {
473
+ m[v.importPath].push(v.name);
474
+ }
475
+ return m;
476
+ }, {});
477
+ };
478
+
479
+ export const getDepsFromQueries = (queries: any[], filename: string) => {
480
+ return getImportsFromQueries(queries)
481
+ .map((imp) => {
482
+ const f = filename;
483
+ const f2 = imp.import;
484
+ if (f === f2) return;
485
+ const importPath = getRelativePath(f, f2);
486
+ return {
487
+ ...imp,
488
+ importPath,
489
+ };
490
+ })
491
+ .filter(Boolean)
492
+ .reduce((m, v) => {
493
+ m[v.importPath] = m[v.importPath] ?? [];
494
+ if (!m[v.importPath].includes(v.name)) {
495
+ m[v.importPath].push(v.name);
496
+ }
497
+ return m;
498
+ }, {});
499
+ };
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { TelescopeInput } from './types';
2
+ import { TelescopeBuilder } from './builder';
3
+
4
+ export * from './builder';
5
+ export * from './bundler';
6
+ export * from './types';
7
+
8
+ export default async (input: TelescopeInput) => {
9
+ const builder = new TelescopeBuilder(input);
10
+ await builder.build();
11
+ };
12
+