@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,76 @@
1
+ import fs from "fs";
2
+ import YAML from "yaml";
3
+ import { isPathExist } from "./utils";
4
+ import { crossGlob as glob } from '@cosmology/utils';
5
+ export function parseBufLockFile(filePath) {
6
+ if (!isPathExist(filePath)) {
7
+ console.warn(`No such file ${filePath}`);
8
+ return [];
9
+ }
10
+ const bufLock = fs.readFileSync(filePath, "utf8");
11
+ const deps = bufLock.split(/-\s/);
12
+ const repos = [];
13
+ deps.forEach((dep) => {
14
+ if (!dep.startsWith("remote")) {
15
+ return;
16
+ }
17
+ const bufDep = {
18
+ owner: /owner:\s(.+)/.exec(dep)?.[1],
19
+ repo: /repository:\s(.+)/.exec(dep)?.[1],
20
+ };
21
+ if (!bufDep.owner || !bufDep.repo) {
22
+ throw new Error("owner or repository is missing.");
23
+ }
24
+ repos.push(bufDep);
25
+ });
26
+ return repos;
27
+ }
28
+ export function parseBufYamlFile(filePath) {
29
+ if (!isPathExist(filePath)) {
30
+ console.warn(`No such file ${filePath}`);
31
+ return [];
32
+ }
33
+ const { deps } = YAML.parse(fs.readFileSync(filePath, "utf8"));
34
+ if (deps) {
35
+ return deps.map((dep) => {
36
+ const [_, owner, repo] = dep.split("/");
37
+ return {
38
+ owner,
39
+ repo: repo.split(":")[0],
40
+ };
41
+ });
42
+ }
43
+ return [];
44
+ }
45
+ export function findAllBufYamlFiles(dir) {
46
+ return glob(`${dir}/**/buf.yaml`, {
47
+ ignore: `${dir}/node_modules/**`,
48
+ });
49
+ }
50
+ export function findAllBufLockFiles(dir) {
51
+ return glob(`${dir}/**/buf.lock`, {
52
+ ignore: `${dir}/node_modules/**`,
53
+ });
54
+ }
55
+ export function getAllBufDeps(dir) {
56
+ const bufDeps = [];
57
+ const bufLockFiles = findAllBufLockFiles(dir);
58
+ bufLockFiles.map(async (filePath) => {
59
+ const deps = parseBufLockFile(filePath);
60
+ deps.forEach((dep) => {
61
+ if (bufDeps.findIndex((_dep) => _dep.owner == dep.owner && _dep.repo == dep.repo) == -1) {
62
+ bufDeps.push(dep);
63
+ }
64
+ });
65
+ });
66
+ const bufYamlFiles = findAllBufYamlFiles(dir);
67
+ bufYamlFiles.map(async (filePath) => {
68
+ const deps = await parseBufYamlFile(filePath);
69
+ deps.forEach((dep) => {
70
+ if (bufDeps.findIndex((_dep) => _dep.owner == dep.owner && _dep.repo == dep.repo) == -1) {
71
+ bufDeps.push(dep);
72
+ }
73
+ });
74
+ });
75
+ return bufDeps;
76
+ }
@@ -0,0 +1,27 @@
1
+ export const bufInfo = [
2
+ {
3
+ owner: "protocolbuffers",
4
+ repo: "wellknowntypes",
5
+ git: [
6
+ {
7
+ owner: "protocolbuffers",
8
+ repo: "protobuf",
9
+ },
10
+ ],
11
+ },
12
+ {
13
+ owner: "cosmos",
14
+ repo: "gogo-proto",
15
+ git: [
16
+ {
17
+ owner: "cosmos",
18
+ repo: "gogoproto",
19
+ },
20
+ ],
21
+ },
22
+ ];
23
+ export const presetProtoDirMapping = {
24
+ "gogo/protobuf/master": ".",
25
+ "googleapis/googleapis/master": ".",
26
+ "protocolbuffers/protobuf/main": "src",
27
+ };
@@ -0,0 +1,54 @@
1
+ import { exec, getMainBranchName, isPathExist, makeDir, removeFolder, } from "./utils";
2
+ const branchCache = {};
3
+ export class GitRepo {
4
+ owner;
5
+ repo;
6
+ ssh;
7
+ constructor(owner, repo, ssh = false) {
8
+ this.owner = owner;
9
+ this.repo = repo;
10
+ this.ssh = ssh;
11
+ }
12
+ get fullName() {
13
+ return `${this.owner}/${this.repo}`;
14
+ }
15
+ get httpsUrl() {
16
+ return `https://github.com/${this.fullName}.git`;
17
+ }
18
+ get sshUrl() {
19
+ return `git@github.com:${this.fullName}.git`;
20
+ }
21
+ async getMainBranchName() {
22
+ const url = this.ssh ? this.sshUrl : this.httpsUrl;
23
+ if (branchCache[url]) {
24
+ return branchCache[url];
25
+ }
26
+ branchCache[url] = await getMainBranchName(url);
27
+ return branchCache[url];
28
+ }
29
+ clone(branch, depth = 1, outDir = "./git-modules", isOverride) {
30
+ const dir = `${outDir}/${this.fullName}/${branch}`;
31
+ try {
32
+ if (!isOverride && isPathExist(dir)) {
33
+ console.log(`Folder ${dir} already exists, skip cloning`);
34
+ return dir;
35
+ }
36
+ else {
37
+ console.log(`Cloning to ${dir}`);
38
+ }
39
+ removeFolder(dir);
40
+ makeDir(dir);
41
+ exec(`git clone ${this.ssh ? this.sshUrl : this.httpsUrl} --depth ${depth} --branch ${branch} --single-branch ${dir}`);
42
+ console.log(`Cloned ${this.fullName}/${branch} to ${dir}`);
43
+ return dir;
44
+ }
45
+ catch (error) {
46
+ if (error.message.startsWith("Cloning into")) {
47
+ return dir;
48
+ }
49
+ else {
50
+ throw error;
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1 @@
1
+ export * from "./recursive";
@@ -0,0 +1,125 @@
1
+ import { getAllBufDeps } from "./bufbuild";
2
+ import { GitRepo } from "./git-repo";
3
+ import { join, dirname, resolve, relative } from "path";
4
+ import { getCorrespondingGit, makeDir, parseProtoFile } from "./utils";
5
+ import fs from "fs";
6
+ import { crossGlob as glob } from '@cosmology/utils';
7
+ export async function cloneAll({ repos, gitModulesDir, protoDirMapping, ssh, }) {
8
+ let clonedResult = {};
9
+ for (const { owner, repo, branch } of repos) {
10
+ const cloned = await clone({
11
+ owner,
12
+ repo,
13
+ branch,
14
+ gitModulesDir,
15
+ protoDirMapping,
16
+ ssh,
17
+ cloned: clonedResult,
18
+ });
19
+ for (const [key, value] of Object.entries(cloned)) {
20
+ clonedResult[key] = value;
21
+ }
22
+ }
23
+ return clonedResult;
24
+ }
25
+ export async function clone({ owner, repo, branch, gitModulesDir: outDir, protoDirMapping, ssh, cloned, }) {
26
+ let clonedResult = cloned ?? {};
27
+ const gitRepo = new GitRepo(owner, repo, ssh);
28
+ const gitBranch = branch ?? (await gitRepo.getMainBranchName());
29
+ const resultKey = `${owner}/${repo}/${gitBranch}`;
30
+ if (clonedResult[resultKey]) {
31
+ console.log(`Skip cloning ${resultKey}`);
32
+ return clonedResult;
33
+ }
34
+ const gitDir = gitRepo.clone(gitBranch, 1, outDir);
35
+ const protoDir = protoDirMapping?.[`${owner}/${repo}/${gitBranch}`] ?? "proto";
36
+ clonedResult[`${owner}/${repo}/${gitBranch}`] = {
37
+ owner,
38
+ repo,
39
+ branch: gitBranch,
40
+ protoDir,
41
+ protoPath: resolve(`${outDir}/${owner}/${repo}/${gitBranch}/${protoDir}`),
42
+ };
43
+ const bufDeps = await getAllBufDeps(gitDir);
44
+ await Promise.all(bufDeps.map(async (bufRepo) => {
45
+ const gitRepos = getCorrespondingGit(bufRepo);
46
+ await Promise.all(gitRepos.map(async (gitRepo) => {
47
+ const gitRepoObj = new GitRepo(gitRepo.owner, gitRepo.repo, ssh);
48
+ const branch = await gitRepoObj.getMainBranchName();
49
+ const depsClonedResult = await clone({
50
+ ...gitRepo,
51
+ gitModulesDir: outDir,
52
+ branch,
53
+ protoDirMapping,
54
+ ssh,
55
+ cloned: clonedResult,
56
+ });
57
+ for (const [key, value] of Object.entries(depsClonedResult)) {
58
+ clonedResult[key] = value;
59
+ }
60
+ }));
61
+ }));
62
+ return clonedResult;
63
+ }
64
+ export function extractProto({ sources, targets, outDir }) {
65
+ const extractProtoFiles = extractProtoFromDirs({
66
+ targets,
67
+ sources,
68
+ });
69
+ extractProtoFiles.map(({ sourceFile, target }) => {
70
+ const targetFile = join(outDir, target);
71
+ const deepTargetDir = dirname(targetFile);
72
+ makeDir(deepTargetDir);
73
+ fs.copyFileSync(sourceFile, targetFile);
74
+ console.info(`Copied ${target} from ${sourceFile.replace(target, "")}`);
75
+ });
76
+ }
77
+ function extractProtoFromDirs({ targets, sources, }) {
78
+ const extractProtoFiles = [];
79
+ const existingFiles = new Set();
80
+ if (!targets || targets.length === 0) {
81
+ return [];
82
+ }
83
+ if (!sources || Object.keys(sources).length === 0) {
84
+ return [];
85
+ }
86
+ for (const target of targets) {
87
+ for (const source of Object.values(sources)) {
88
+ const sourceProtoPath = resolve(source.protoPath);
89
+ const files = glob(join(sourceProtoPath, target));
90
+ extractProtoFiles.push(...files
91
+ .map((file) => {
92
+ const copyTarget = relative(sourceProtoPath, file);
93
+ const duplicate = existingFiles.has(copyTarget);
94
+ existingFiles.add(copyTarget);
95
+ if (!duplicate) {
96
+ const resultFiles = [
97
+ {
98
+ sourceFile: file,
99
+ target: copyTarget,
100
+ },
101
+ ];
102
+ const newTargets = parseProtoFile(file);
103
+ if (newTargets && newTargets.length > 0) {
104
+ const deps = extractProtoFromDirs({
105
+ targets: newTargets,
106
+ sources,
107
+ });
108
+ const filteredDeps = deps?.filter((dep) => {
109
+ const depDuplicate = existingFiles.has(dep.target);
110
+ existingFiles.add(dep.target);
111
+ return !depDuplicate;
112
+ });
113
+ if (filteredDeps && filteredDeps.length > 0) {
114
+ resultFiles.push(...filteredDeps);
115
+ }
116
+ }
117
+ return resultFiles;
118
+ }
119
+ })
120
+ .flat()
121
+ .filter(Boolean));
122
+ }
123
+ }
124
+ return extractProtoFiles;
125
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,77 @@
1
+ import { exec as _exec } from "shelljs";
2
+ import fs from "fs";
3
+ import { bufInfo } from "./config";
4
+ import { crossGlob as glob } from '@cosmology/utils';
5
+ export function exec(command, verbose = false) {
6
+ const { code, stdout, stderr } = _exec(command);
7
+ if (code === 0) {
8
+ if (verbose) {
9
+ console.log(stdout);
10
+ }
11
+ }
12
+ else {
13
+ console.error(`Failed: ${command}`);
14
+ throw new Error(stderr);
15
+ }
16
+ return { stdout };
17
+ }
18
+ export async function getMainBranchName(url) {
19
+ console.log(`Checking main branch for ${url}`);
20
+ const { stdout } = exec(`git ls-remote -h ${url} main`);
21
+ if (stdout) {
22
+ return "main";
23
+ }
24
+ const { stdout: stdout2 } = exec(`git ls-remote -h ${url} master`);
25
+ if (stdout2) {
26
+ return "master";
27
+ }
28
+ throw new Error("Can't find `main` or `master` branch");
29
+ }
30
+ export function getCorrespondingGit(bufRepo) {
31
+ const bufItem = bufInfo.find((repo) => repo.owner === bufRepo.owner && repo.repo === bufRepo.repo);
32
+ if (bufItem) {
33
+ return bufItem.git;
34
+ }
35
+ else {
36
+ return [bufRepo];
37
+ }
38
+ }
39
+ export function parseProtoFile(filePath) {
40
+ if (!isPathExist(filePath)) {
41
+ console.warn(`No such file ${filePath}`);
42
+ return [];
43
+ }
44
+ let proto;
45
+ try {
46
+ proto = fs.readFileSync(filePath, "utf8");
47
+ }
48
+ catch (error) {
49
+ console.log(filePath);
50
+ throw new Error(error);
51
+ }
52
+ const deps = [];
53
+ proto?.split("\n").forEach((line) => {
54
+ if (line.trim().startsWith("import ")) {
55
+ const dep = /import\s"(.+)";?/.exec(line)?.[1];
56
+ if (!dep) {
57
+ throw Error(`Failed to parse line: ${line}`);
58
+ }
59
+ deps.push(dep);
60
+ }
61
+ });
62
+ return deps;
63
+ }
64
+ export function isPathExist(path) {
65
+ return fs.existsSync(path);
66
+ }
67
+ export function findAllProtoFiles(dir) {
68
+ return glob(`${dir}/**/*.proto`, {
69
+ ignore: `${dir}/node_modules/**`,
70
+ });
71
+ }
72
+ export function removeFolder(dir) {
73
+ fs.rmSync(dir, { recursive: true, force: true });
74
+ }
75
+ export function makeDir(dir) {
76
+ fs.mkdirSync(dir, { recursive: true });
77
+ }
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { cli } from './cli';
3
+ var argv = require('minimist')(process.argv.slice(2), {
4
+ boolean: ['ssh']
5
+ });
6
+ (async () => {
7
+ await cli(argv);
8
+ })();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ import { aggregateImports, getImportStatements } from '../imports';
2
+ import { join } from 'path';
3
+ import { TelescopeParseContext } from '../build';
4
+ import { writeAstToFile } from '../utils/files';
5
+ import { fixlocalpaths } from '../utils';
6
+ import { createEmptyProtoRef } from '@cosmology/proto-parser';
7
+ export const commonBundlePlugin = (builder, bundleFilename, packageMappings, astFn) => {
8
+ const localname = bundleFilename;
9
+ // create proto ref for context
10
+ const pkg = '@root';
11
+ const ref = createEmptyProtoRef(pkg, localname);
12
+ // create context
13
+ const pCtx = new TelescopeParseContext(ref, builder.store, builder.options);
14
+ // generate code for createRpcQueryHooks and imports of related packages.
15
+ const ast = astFn(pCtx.proto, packageMappings);
16
+ // generate imports added by context.addUtil
17
+ const imports = fixlocalpaths(aggregateImports(pCtx, {}, localname));
18
+ const importStmts = getImportStatements(localname, imports, builder.options);
19
+ // construct the AST
20
+ const prog = [].concat(importStmts).concat(ast);
21
+ // write the file.
22
+ const filename = join(builder.outPath, localname);
23
+ builder.files.push(localname);
24
+ writeAstToFile(builder.outPath, builder.options, prog, filename);
25
+ };
@@ -0,0 +1,33 @@
1
+ import { readSchemas } from '@cosmwasm/ts-codegen';
2
+ import { pascal } from 'case';
3
+ import { basename, dirname, join } from 'path';
4
+ import { readFileSync, readdirSync } from 'fs';
5
+ export const getDirectories = source => readdirSync(source, { withFileTypes: true })
6
+ .filter(dirent => dirent.isDirectory())
7
+ .map(dirent => dirent.name);
8
+ export const getContracts = () => {
9
+ const contracts = getDirectories('./contracts')
10
+ .map(contractDirname => {
11
+ return {
12
+ name: `${contractDirname}`,
13
+ value: `./contracts/${contractDirname}`
14
+ };
15
+ });
16
+ return contracts;
17
+ };
18
+ export const getContractSchemata = async (schemata, out, argv) => {
19
+ const s = [];
20
+ for (let i = 0; i < schemata.length; i++) {
21
+ const path = schemata[i];
22
+ const pkg = JSON.parse(readFileSync(join(path, 'package.json'), 'utf-8'));
23
+ const name = basename(path);
24
+ const folder = basename(dirname(path));
25
+ const contractName = pascal(pkg.contract) || pascal(name);
26
+ const schemas = await readSchemas({ schemaDir: path });
27
+ const outPath = join(out, folder);
28
+ s.push({
29
+ contractName, schemas, outPath
30
+ });
31
+ }
32
+ return s;
33
+ };
@@ -0,0 +1,106 @@
1
+ import * as t from "@babel/types";
2
+ import { parse } from "@babel/parser";
3
+ import { mkdirp } from "mkdirp";
4
+ import { writeFileSync } from "fs";
5
+ import { dirname } from "path";
6
+ import minimatch from "minimatch";
7
+ import generate from "@babel/generator";
8
+ import { unused } from "./unused";
9
+ import traverse from "@babel/traverse";
10
+ import { toPosixPath } from "@cosmology/utils";
11
+ export function getExportedTypeNames(program) {
12
+ const exportedNames = [];
13
+ const ast = t.program(program);
14
+ const content = generate(ast).code;
15
+ const plugins = ["typescript"];
16
+ const newAst = parse(content, {
17
+ sourceType: "module",
18
+ plugins,
19
+ });
20
+ traverse(newAst, {
21
+ ExportNamedDeclaration(path) {
22
+ const node = path.node;
23
+ // Handle direct declarations (type aliases, interfaces, enums)
24
+ if (node.declaration) {
25
+ const decl = node.declaration;
26
+ const isTypeExport = node.exportKind === "type";
27
+ const isTypeDecl = [
28
+ "TSTypeAliasDeclaration",
29
+ "TSInterfaceDeclaration",
30
+ "TSEnumDeclaration",
31
+ ].includes(decl.type);
32
+ if (isTypeExport || isTypeDecl) {
33
+ if ("id" in decl && decl.id?.type === "Identifier") {
34
+ exportedNames.push(decl.id.name);
35
+ }
36
+ }
37
+ // Handle const declarations that might be types (e.g., const schemas)
38
+ if (decl.type === "VariableDeclaration" && decl.kind === "const") {
39
+ decl.declarations.forEach((declarator) => {
40
+ if (declarator.id?.type === "Identifier") {
41
+ exportedNames.push(declarator.id.name);
42
+ }
43
+ });
44
+ }
45
+ }
46
+ // Handle export specifiers (e.g., export { SomeType })
47
+ if (node.specifiers && node.specifiers.length > 0) {
48
+ const isTypeExport = node.exportKind === "type";
49
+ if (isTypeExport) {
50
+ node.specifiers.forEach((spec) => {
51
+ if (spec.type === "ExportSpecifier" && spec.exported.type === "Identifier") {
52
+ exportedNames.push(spec.exported.name);
53
+ }
54
+ });
55
+ }
56
+ }
57
+ },
58
+ });
59
+ return exportedNames;
60
+ }
61
+ export const writeAstToFile = (outPath, options, program, filename) => {
62
+ const ast = t.program(program);
63
+ const content = generate(ast).code;
64
+ if (options.removeUnusedImports) {
65
+ const plugins = ["typescript"];
66
+ const newAst = parse(content, {
67
+ sourceType: "module",
68
+ plugins,
69
+ });
70
+ traverse(newAst, unused);
71
+ const content2 = generate(newAst).code;
72
+ writeContentToFile(toPosixPath(outPath), options, content2, toPosixPath(filename));
73
+ }
74
+ else {
75
+ writeContentToFile(toPosixPath(outPath), options, content, toPosixPath(filename));
76
+ }
77
+ };
78
+ export const writeContentToFile = (outPath, options, content, filename) => {
79
+ let esLintPrefix = "";
80
+ let tsLintPrefix = "";
81
+ let nameWithoutPath = filename.replace(outPath, "");
82
+ // strip off leading slash
83
+ if (nameWithoutPath.startsWith("/"))
84
+ nameWithoutPath = nameWithoutPath.replace(/^\//, "");
85
+ options.tsDisable.patterns.forEach((pattern) => {
86
+ if (minimatch(nameWithoutPath, pattern)) {
87
+ tsLintPrefix = `//@ts-nocheck\n`;
88
+ }
89
+ });
90
+ options.eslintDisable.patterns.forEach((pattern) => {
91
+ if (minimatch(nameWithoutPath, pattern)) {
92
+ esLintPrefix = `/* eslint-disable */\n`;
93
+ }
94
+ });
95
+ if (options.tsDisable.files.includes(nameWithoutPath) ||
96
+ options.tsDisable.disableAll) {
97
+ tsLintPrefix = `//@ts-nocheck\n`;
98
+ }
99
+ if (options.eslintDisable.files.includes(nameWithoutPath) ||
100
+ options.eslintDisable.disableAll) {
101
+ esLintPrefix = `/* eslint-disable */\n`;
102
+ }
103
+ const text = tsLintPrefix + esLintPrefix + content;
104
+ mkdirp.sync(dirname(filename));
105
+ writeFileSync(filename, text);
106
+ };