@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,120 @@
1
+ import * as shell from "shelljs";
2
+ import { readFileSync } from "fs";
3
+ import { clone, cloneAll, extractProto } from "../protod/recursive";
4
+ import { removeFolder } from "../protod/utils";
5
+ import { DownloadOptions } from "../protod/types";
6
+ import deepmerge from "deepmerge";
7
+ import { presetProtoDirMapping } from "../protod/config";
8
+
9
+ export default async (argv: { [key: string]: string | string[] } | DownloadOptions) => {
10
+ if (!shell.which("git")) {
11
+ shell.echo("Sorry, this script requires git");
12
+ return shell.exit(1);
13
+ }
14
+
15
+ let configJson: DownloadOptions;
16
+
17
+ if ('config' in argv || 'git-repo' in argv) {
18
+ const config = Array.isArray(argv["config"])
19
+ ? argv["config"][0]
20
+ : argv["config"];
21
+
22
+ if (config) {
23
+ try {
24
+ const configText = readFileSync(config, {
25
+ encoding: "utf8",
26
+ });
27
+ configJson = JSON.parse(configText);
28
+ } catch (ex) {
29
+ console.log(ex);
30
+ throw new Error("Must provide a .json file for --config.");
31
+ }
32
+ } else {
33
+ configJson = {};
34
+ }
35
+
36
+ const gitRepos = Array.isArray(argv["git-repo"])
37
+ ? argv["git-repo"]
38
+ : [argv["git-repo"]];
39
+
40
+ if (argv["git-repo"] && gitRepos && gitRepos.length > 0) {
41
+ configJson.repos = gitRepos.map((gitRepo) => {
42
+ const [owner, repo, branch] = gitRepo.split("/");
43
+
44
+ if (!owner || !repo) {
45
+ shell.echo(
46
+ "wrong `git-repo` format (i.e. <owner>/<repository> or <owner>/<repository>/<branch>).\n"
47
+ );
48
+ return shell.exit(1);
49
+ }
50
+
51
+ return { owner, repo, branch };
52
+ });
53
+ }
54
+
55
+ const targets = Array.isArray(argv["targets"])
56
+ ? argv["targets"]
57
+ : argv["targets"]?.split(",");
58
+ if (targets && targets.length > 0) {
59
+ configJson.targets = targets;
60
+ }
61
+
62
+ let outDir = Array.isArray(argv["out"]) ? argv["out"][0] : argv["out"];
63
+ if (outDir) {
64
+ configJson.outDir = outDir;
65
+ }
66
+
67
+ let sshOpt = argv["ssh"];
68
+ configJson.ssh = configJson.ssh || !!sshOpt;
69
+ } else {
70
+ configJson = argv as DownloadOptions;
71
+ }
72
+
73
+ if (!configJson.repos || configJson.repos.length === 0) {
74
+ shell.echo(
75
+ "missing `repos` configuration, you can set through `--git-repo` argument or set repos field in config file.\n"
76
+ );
77
+ return shell.exit(1);
78
+ }
79
+
80
+ if (!configJson.targets || configJson.targets.length === 0) {
81
+ shell.echo("there must be 'targets' file patterns.\n");
82
+ shell.exit(1);
83
+ }
84
+
85
+ if (!configJson.protoDirMapping) {
86
+ configJson.protoDirMapping = {};
87
+ }
88
+
89
+ configJson.protoDirMapping = deepmerge(
90
+ presetProtoDirMapping,
91
+ configJson.protoDirMapping
92
+ );
93
+
94
+ if (!configJson.outDir) {
95
+ shell.echo(
96
+ "out directory is not specified, downloading to `proto` folder by default.\n"
97
+ );
98
+ configJson.outDir = "proto";
99
+ }
100
+
101
+ if (configJson.deleteTempRepoDir) {
102
+ removeFolder(configJson.tempRepoDir);
103
+ }
104
+
105
+ const result = await cloneAll({
106
+ repos: configJson.repos,
107
+ gitModulesDir: "./git-modules",
108
+ ssh: configJson.ssh,
109
+ protoDirMapping: configJson.protoDirMapping,
110
+ });
111
+
112
+ if (result) {
113
+ removeFolder(configJson.outDir);
114
+ extractProto({
115
+ sources: result,
116
+ targets: configJson.targets,
117
+ outDir: configJson.outDir,
118
+ });
119
+ }
120
+ };
@@ -0,0 +1,156 @@
1
+ import * as shell from 'shelljs';
2
+ import { prompt } from '../prompt';
3
+ import dargs from 'dargs';
4
+ import { crossGlob as glob } from '@cosmology/utils';
5
+
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+ const repo = 'https://github.com/hyperweb-io/telescope-module-boilerplate.git';
9
+
10
+ export default async argv => {
11
+ if (!shell.which('git')) {
12
+ shell.echo('Sorry, this script requires git');
13
+ return shell.exit(1);
14
+ }
15
+
16
+ let results: { [key: string]: any } = {};
17
+
18
+ const argsFromCommand = process.argv.slice(2);
19
+ argsFromCommand.forEach((arg, index) => {
20
+ if (arg.startsWith('--')) {
21
+ let key = arg.slice(2).replace(/-/g, '').toUpperCase();
22
+ key = `__${key}__`;
23
+ const value = argsFromCommand[index + 1] && !argsFromCommand[index + 1].startsWith('--') ? argsFromCommand[index + 1] : '';
24
+
25
+ if (Array.isArray(value)) {
26
+ results[key] = value.split(',');
27
+ } else {
28
+ results[key] = value;
29
+ }
30
+ }
31
+ });
32
+ const { name } = results.__MODULENAME__ ? { name: results.__MODULENAME__ } : await prompt([
33
+ {
34
+ type: 'string',
35
+ name: 'name',
36
+ message: 'Enter your new module name',
37
+ }
38
+ ], argv);
39
+ shell.exec(`git clone ${repo} ${name}`);
40
+ shell.cd(name);
41
+
42
+ let questions = JSON.parse(fs.readFileSync(`.questions.json`));
43
+ questions = questions.filter(question => !(question.name in results));
44
+
45
+ const fullname = shell
46
+ .exec('git config --global user.name', { silent: true })
47
+ .trim();
48
+ const email = shell
49
+ .exec('git config --global user.email', { silent: true })
50
+ .trim();
51
+
52
+ // @__USERNAME__/__MODULENAME__
53
+ // __PACKAGE_IDENTIFIER__
54
+ const args = dargs(
55
+ {
56
+ _: [],
57
+ ...argv,
58
+ __MODULENAME__: name,
59
+ __USERFULLNAME__: fullname,
60
+ __USEREMAIL__: email,
61
+ },
62
+ { allowCamelCase: true }
63
+ );
64
+
65
+ const answerResults = await prompt(questions, args);
66
+ results = { ...results, answerResults }
67
+
68
+ const license = results.__LICENSE__ ?? await prompt(
69
+ [
70
+ {
71
+ name: '__LICENSE__',
72
+ message: 'Which license?',
73
+ choices: ['MIT', 'closed'],
74
+ type: 'list',
75
+ required: true,
76
+ },
77
+ ],
78
+ []
79
+ );
80
+
81
+ let scopedResults;
82
+ if (results.__ACCESS__ === 'public') {
83
+ if (results.__USENPMSCOPED__ !== undefined) {
84
+ scopedResults = { scoped: true }
85
+ } else {
86
+ scopedResults = await prompt(
87
+ [
88
+ {
89
+ type: 'confirm',
90
+ name: 'scoped',
91
+ message: 'use npm scopes?',
92
+ required: true,
93
+ },
94
+ ],
95
+ []
96
+ );
97
+ }
98
+ }
99
+
100
+ const files = []
101
+ .concat(glob(process.cwd() + '/**/.*'))
102
+ .concat(glob(process.cwd() + '/**/*'));
103
+
104
+ for (let i = 0; i < files.length; i++) {
105
+ const templateFile = files[i];
106
+ if (fs.lstatSync(templateFile).isDirectory()) continue;
107
+
108
+ let content = fs.readFileSync(templateFile).toString();
109
+ if (
110
+ path.basename(templateFile) === 'LICENSE' &&
111
+ license.__LICENSE__ === 'closed'
112
+ ) {
113
+ content = `Copyright (c) ${new Date().getFullYear()} __USERFULLNAME__ <__USEREMAIL__> - All Rights Reserved
114
+ Unauthorized copying via any medium is strictly prohibited
115
+ Proprietary and confidential`;
116
+ }
117
+
118
+ Object.keys(results).forEach(key => {
119
+ if (/^__/.test(key)) {
120
+ content = content.replace(new RegExp(key, 'g'), results[key]);
121
+ }
122
+ });
123
+ if (results.__ACCESS__ === 'public') {
124
+ if (scopedResults.scoped) {
125
+ content = content.replace(
126
+ /__PACKAGE_IDENTIFIER__/g,
127
+ `@${results.__USERNAME__}/${results.__MODULENAME__}`
128
+ );
129
+ } else {
130
+ content = content.replace(
131
+ /__PACKAGE_IDENTIFIER__/g,
132
+ `${results.__MODULENAME__}`
133
+ );
134
+ }
135
+ } else {
136
+ content = content.replace(
137
+ /__PACKAGE_IDENTIFIER__/g,
138
+ `@${results.__USERNAME__}/${results.__MODULENAME__}`
139
+ );
140
+ }
141
+
142
+ fs.writeFileSync(templateFile, content);
143
+ }
144
+
145
+ shell.rm('-rf', '.git');
146
+ shell.rm('-rf', '.questions.json');
147
+
148
+ console.log(`
149
+
150
+ |||
151
+ (o o)
152
+ ooO--(_)--Ooo-
153
+
154
+ ✨ Great work!
155
+ `);
156
+ };
@@ -0,0 +1,154 @@
1
+ import { resolve, join, dirname, basename, extname } from 'path';
2
+ import { mkdirp } from 'mkdirp';
3
+ import { crossGlob as glob } from '@cosmology/utils';
4
+ import { rimrafSync as rimraf } from 'rimraf';
5
+ import { exec } from 'shelljs';
6
+ import { prompt } from '../prompt';
7
+ import { parse } from 'parse-package-name';
8
+ import { tmpdir } from 'os';
9
+ import { readFileSync, writeFileSync } from 'fs';
10
+
11
+ const TMPDIR = tmpdir();
12
+ const rnd = () =>
13
+ Math.random().toString(36).substring(2, 15) +
14
+ Math.random().toString(36).substring(2, 15);
15
+
16
+ const getPackages = (names) => {
17
+ return names.map(pkg => {
18
+ const { name, version } = parse(pkg);
19
+ return `${name}@${version}`
20
+ }).join(' ');
21
+ };
22
+
23
+ export default async (argv) => {
24
+
25
+ // don't prompt if we got this...
26
+ if (argv._.length) {
27
+ argv.pkg = argv._;
28
+ }
29
+
30
+ // current dir/package
31
+ const cur = process.cwd();
32
+ let thisPackage;
33
+ try {
34
+ thisPackage = JSON.parse(readFileSync(join(cur, 'package.json'), 'utf-8'));
35
+ } catch (e) {
36
+ throw new Error('make sure you are inside of a telescope package!');
37
+ }
38
+
39
+ // what are we installing?
40
+ let { pkg } = await prompt([
41
+ {
42
+ type: 'checkbox',
43
+ name: 'pkg',
44
+ message:
45
+ 'which packages do you want to support?',
46
+ choices: [
47
+ 'amino',
48
+ 'akash',
49
+ // 'axelar',
50
+ 'bcna',
51
+ // 'bitsong', // Error: namespace and package not supported, yet.
52
+ // 'canto',
53
+ // 'cht',
54
+ 'comdex',
55
+ 'confio',
56
+ 'cosmos',
57
+ 'cosmos_proto',
58
+ 'cosmwasm',
59
+ // 'cronos',
60
+ // 'cyber',
61
+ // 'desmos',
62
+ // 'echelon',
63
+ // 'em',
64
+ // 'eve',
65
+ // 'evmos',
66
+ // 'galaxy',
67
+ 'gogoproto',
68
+ 'google',
69
+ 'ibc',
70
+ 'injective',
71
+ 'juno',
72
+ // 'kava',
73
+ // 'likechain',
74
+ // 'lumenx',
75
+ 'omniflix',
76
+ // 'oracle',
77
+ 'osmosis',
78
+ // 'panacea',
79
+ 'passage3d',
80
+ 'persistence',
81
+ // 'provenance',
82
+ // 'pylons',
83
+ 'regen',
84
+ // 'scavenge',
85
+ // 'sentinel',
86
+ // 'shentu',
87
+ // 'sifnode',
88
+ 'stargaze',
89
+ 'tendermint',
90
+ 'umee',
91
+ // 'uptake',
92
+ // 'vidulum',
93
+ ].map(name => {
94
+ return {
95
+ name,
96
+ value: `@protobufs/${name}`
97
+ }
98
+ })
99
+ }
100
+ ], argv);
101
+
102
+ // install
103
+ if (!Array.isArray(pkg)) pkg = [pkg];
104
+ const tmp = join(TMPDIR, rnd());
105
+ mkdirp.sync(tmp);
106
+ process.chdir(tmp);
107
+ exec(`npm install ${getPackages(pkg)} --production --prefix ./protobufs`);
108
+
109
+ // protos
110
+ const pkgs = glob('./protobufs/**/package.json');
111
+ const cmds = pkgs
112
+ .filter((f) => { return f !== './protobufs/package.json' })
113
+ .map((f) => resolve(join(tmp, f)))
114
+ .map((conf) => {
115
+ const extDir = dirname(conf);
116
+ const dir = extDir.split('node_modules/')[1];
117
+ const dst = basename(dir);
118
+
119
+ const files = glob(`${extDir}/**/*`, { nodir: true });
120
+ files.forEach(f => {
121
+ if (extname(f) === '.proto'
122
+ || f === 'package.json'
123
+ || /license/i.test(f)
124
+ || /readme/i.test(f)) return;
125
+ rimraf(f);
126
+ });
127
+ return [extDir, resolve(join(cur, 'proto', dst)), dir];
128
+ });
129
+
130
+ // move protos
131
+ for (const [src, dst, pkg] of cmds) {
132
+ rimraf(dst);
133
+ console.log(`installing ${pkg}...`);
134
+ mkdirp.sync(dirname(dst));
135
+ exec(`mv ${src} ${dst}`);
136
+ }
137
+
138
+ // package
139
+ const packageInfo = JSON.parse(readFileSync('./protobufs/package.json', 'utf-8'));
140
+ const deps = packageInfo.dependencies ?? {};
141
+ thisPackage.devDependencies = thisPackage.devDependencies ?? {};
142
+ thisPackage.devDependencies = {
143
+ ...thisPackage.devDependencies,
144
+ ...deps
145
+ };
146
+
147
+ thisPackage.devDependencies = Object.fromEntries(Object.entries(thisPackage.devDependencies).sort());
148
+
149
+ writeFileSync(join(cur, 'package.json'), JSON.stringify(thisPackage, null, 2));
150
+
151
+ // cleanup
152
+ rimraf(tmp);
153
+ process.chdir(cur);
154
+ };
@@ -0,0 +1,198 @@
1
+ import { prompt } from '../prompt';
2
+ import telescope from '../index';
3
+ import { writeFileSync, readFileSync } from 'fs';
4
+ import { defaultTelescopeOptions } from '@cosmology/types';
5
+ import * as path from 'path'
6
+ import * as dotty from 'dotty';
7
+ import deepmerge from 'deepmerge';
8
+
9
+ export default async (argv: {
10
+ [key: string]: string | string[]
11
+ }) => {
12
+ let options: {
13
+ [key: string]: unknown
14
+ } = {}
15
+ let protoDirs;
16
+ let outPath;
17
+ let data: any;
18
+ let overrideConfig = true;
19
+
20
+ if (argv.useDefaults) {
21
+ const defaultOptions = { ...defaultTelescopeOptions };
22
+
23
+ dotty.remove(defaultOptions, "aminoEncoding");
24
+ dotty.remove(defaultOptions, "packages");
25
+
26
+ options = defaultOptions;
27
+ } else {
28
+ options = {
29
+ // global options (can be overridden through plugins)
30
+ interfaces: {
31
+ enabled: false,
32
+ useByDefault: false,
33
+ useUnionTypes: false,
34
+ },
35
+
36
+ prototypes: {
37
+ enabled: true,
38
+ parser: {
39
+ keepCase: false
40
+ },
41
+ methods: {
42
+ fromJSON: false,
43
+ toJSON: false,
44
+ encode: true,
45
+ decode: true,
46
+ fromPartial: true,
47
+ toAmino: true,
48
+ fromAmino: true,
49
+ fromProto: true,
50
+ toProto: true
51
+ },
52
+ addTypeUrlToObjects: true,
53
+ addTypeUrlToDecoders: true,
54
+
55
+ typingsFormat: {
56
+ duration: 'duration',
57
+ timestamp: 'date',
58
+ useExact: false,
59
+ useDeepPartial: false,
60
+ num64: 'bigint',
61
+ customTypes: {
62
+ useCosmosSDKDec: true
63
+ }
64
+ },
65
+ },
66
+
67
+ bundle: {
68
+ enabled: true
69
+ },
70
+
71
+ stargateClients: {
72
+ enabled: true,
73
+ includeCosmosDefaultTypes: true
74
+ },
75
+
76
+ aminoEncoding: {
77
+ enabled: true,
78
+ },
79
+
80
+ lcdClients: {
81
+ enabled: true
82
+ },
83
+
84
+ rpcClients: {
85
+ enabled: true,
86
+ camelCase: true
87
+ }
88
+ }
89
+
90
+ }
91
+
92
+ const questions = [
93
+ {
94
+ _: true,
95
+ type: 'path',
96
+ name: 'protoDirs',
97
+ message: 'where is the proto directory?',
98
+ default: './proto'
99
+ },
100
+ {
101
+ _: true,
102
+ type: 'path',
103
+ name: 'outPath',
104
+ message: 'where is the output directory?',
105
+ default: './src/codegen'
106
+ }
107
+ ];
108
+
109
+ if (argv.config) {
110
+ overrideConfig = false;
111
+ const { config } = argv;
112
+ const configs = Array.isArray(config) ? config : [config];
113
+ const inputConfigFullPaths = configs.map(c => path.resolve(c));
114
+ let configJson;
115
+
116
+ for (const inputConfigPath of inputConfigFullPaths) {
117
+ try {
118
+ const configText = readFileSync(inputConfigPath, {
119
+ encoding: 'utf8'
120
+ })
121
+ if (configJson) {
122
+ configJson = deepmerge(configJson, JSON.parse(configText));
123
+ } else {
124
+ configJson = JSON.parse(configText);
125
+ }
126
+ } catch (ex) {
127
+ console.log(ex);
128
+ throw new Error("Must provide a .json file for --config.");
129
+ }
130
+ }
131
+
132
+ // append protoDirs in config to argv.protoDirs
133
+ argv.protoDirs = [
134
+ ...(argv.protoDirs
135
+ ? Array.isArray(argv.protoDirs)
136
+ ? argv.protoDirs
137
+ : [argv.protoDirs]
138
+ : []),
139
+ ...(configJson.protoDirs ?? []),
140
+ ];
141
+
142
+ if (configJson.outPath) {
143
+ argv.outPath = configJson.outPath;
144
+ }
145
+
146
+ // For now, useDefaults will be override by --config
147
+ if (configJson.options) {
148
+ options = configJson.options;
149
+ }
150
+ }
151
+
152
+ if (!argv.config && !argv.useDefaults) {
153
+ try {
154
+ //check if there's valid .telescope.json file to use
155
+ data = JSON.parse(readFileSync('./.telescope.json', {
156
+ encoding: 'utf8'
157
+ }))
158
+ } catch (e) { }
159
+
160
+ //if there's existing valid .telescope.json, use and keep the file
161
+ if (data?.protoDirs && data?.outPath && data?.options) {
162
+ overrideConfig = false
163
+ protoDirs = data.protoDirs
164
+ outPath = data.outPath
165
+ options = data.options
166
+ }
167
+ }
168
+ if (!protoDirs || !outPath) {
169
+ ({ protoDirs, outPath } = await prompt(questions, argv));
170
+ }
171
+
172
+ if (!Array.isArray(protoDirs)) {
173
+ protoDirs = [protoDirs];
174
+ }
175
+
176
+ // remove any duplicate protodirs
177
+ protoDirs = [...new Set(protoDirs)];
178
+
179
+ if (overrideConfig) {
180
+ writeFileSync(
181
+ process.cwd() + '/.telescope.json',
182
+ JSON.stringify(
183
+ {
184
+ protoDirs,
185
+ outPath,
186
+ options
187
+ }, null, 2)
188
+ );
189
+ }
190
+
191
+ await telescope({
192
+ protoDirs,
193
+ outPath,
194
+ options
195
+ });
196
+
197
+ console.log(`✨ transpilation successful!`);
198
+ };
@@ -0,0 +1,33 @@
1
+ import { prompt } from '../prompt';
2
+ import { generateClient } from '@cosmwasm/ts-codegen';
3
+ import { getContracts, getContractSchemata } from '../utils/contracts';
4
+
5
+ export default async (argv) => {
6
+
7
+ const contracts = getContracts();
8
+
9
+ const questions = [
10
+ {
11
+ _: true,
12
+ type: 'checkbox',
13
+ name: 'schema',
14
+ message: 'which directory contains the the Rust contracts?',
15
+ choices: contracts
16
+ },
17
+ {
18
+ _: true,
19
+ type: 'path',
20
+ name: 'out',
21
+ message: 'where is the output directory?',
22
+ default: './src/contracts'
23
+ }
24
+ ];
25
+
26
+ let { schema, out } = await prompt(questions, argv);
27
+ if (!Array.isArray(schema)) schema = [schema];
28
+
29
+ const s = await getContractSchemata(schema, out, argv);
30
+ s.forEach(async ({ contractName, schemas, outPath }) => {
31
+ await generateClient(contractName, schemas, outPath);
32
+ });
33
+ };