@graphprotocol/graph-cli 0.37.3 → 0.37.4-alpha-20230117095424-b5750b1

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 (352) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/bin.js +6 -0
  3. package/dist/cli.js +26 -0
  4. package/dist/codegen/schema.js +244 -0
  5. package/dist/codegen/schema.test.js +455 -0
  6. package/dist/codegen/template.js +66 -0
  7. package/dist/codegen/types/conversions.js +335 -0
  8. package/dist/codegen/types/index.js +71 -0
  9. package/dist/codegen/types/index.test.js +563 -0
  10. package/dist/codegen/typescript.js +200 -0
  11. package/dist/codegen/util.js +40 -0
  12. package/dist/codegen/util.test.js +93 -0
  13. package/dist/command-helpers/abi.js +76 -0
  14. package/dist/command-helpers/auth.js +76 -0
  15. package/dist/command-helpers/compiler.js +66 -0
  16. package/dist/command-helpers/data-sources.js +29 -0
  17. package/dist/command-helpers/fs.js +9 -0
  18. package/dist/command-helpers/gluegun.js +48 -0
  19. package/dist/command-helpers/ipfs.js +5 -0
  20. package/dist/command-helpers/jsonrpc.js +27 -0
  21. package/dist/command-helpers/network.js +90 -0
  22. package/dist/command-helpers/network.test.js +86 -0
  23. package/dist/command-helpers/node.js +40 -0
  24. package/dist/command-helpers/scaffold.js +110 -0
  25. package/dist/command-helpers/spinner.js +80 -0
  26. package/dist/command-helpers/studio.js +14 -0
  27. package/dist/command-helpers/studio.test.js +41 -0
  28. package/dist/command-helpers/subgraph.js +22 -0
  29. package/dist/command-helpers/version.js +66 -0
  30. package/dist/command-helpers/version.test.js +186 -0
  31. package/dist/commands/add.js +187 -0
  32. package/dist/commands/auth.js +122 -0
  33. package/dist/commands/build.js +136 -0
  34. package/dist/commands/codegen.js +128 -0
  35. package/dist/commands/create.js +94 -0
  36. package/dist/commands/deploy.js +335 -0
  37. package/dist/commands/init.js +800 -0
  38. package/dist/commands/local.js +380 -0
  39. package/dist/commands/remove.js +95 -0
  40. package/dist/commands/test.js +293 -0
  41. package/dist/compiler/asc.js +83 -0
  42. package/dist/compiler/index.js +466 -0
  43. package/dist/debug.js +16 -0
  44. package/dist/migrations/mapping_api_version_0_0_1.js +83 -0
  45. package/dist/migrations/mapping_api_version_0_0_2.js +83 -0
  46. package/dist/migrations/mapping_api_version_0_0_3.js +83 -0
  47. package/dist/migrations/mapping_api_version_0_0_4.js +85 -0
  48. package/dist/migrations/mapping_api_version_0_0_5.js +85 -0
  49. package/dist/migrations/spec_version_0_0_2.js +45 -0
  50. package/dist/migrations/spec_version_0_0_3.js +50 -0
  51. package/dist/migrations/util/load-manifest.js +16 -0
  52. package/dist/migrations/util/versions.js +28 -0
  53. package/dist/migrations.js +54 -0
  54. package/{src → dist}/protocols/arweave/manifest.graphql +0 -0
  55. package/{src/protocols/arweave/scaffold/manifest.ts → dist/protocols/arweave/scaffold/manifest.js} +7 -3
  56. package/{src/protocols/arweave/scaffold/mapping.ts → dist/protocols/arweave/scaffold/mapping.js} +5 -2
  57. package/dist/protocols/arweave/subgraph.js +23 -0
  58. package/dist/protocols/contract.js +2 -0
  59. package/{src → dist}/protocols/cosmos/manifest.graphql +0 -0
  60. package/dist/protocols/cosmos/scaffold/manifest.js +15 -0
  61. package/{src/protocols/cosmos/scaffold/mapping.ts → dist/protocols/cosmos/scaffold/mapping.js} +5 -2
  62. package/dist/protocols/cosmos/subgraph.js +28 -0
  63. package/dist/protocols/ethereum/abi.js +138 -0
  64. package/dist/protocols/ethereum/codegen/abi.js +474 -0
  65. package/dist/protocols/ethereum/codegen/abi.test.js +325 -0
  66. package/dist/protocols/ethereum/codegen/template.js +52 -0
  67. package/dist/protocols/ethereum/contract.js +22 -0
  68. package/{src → dist}/protocols/ethereum/manifest.graphql +0 -0
  69. package/dist/protocols/ethereum/scaffold/manifest.js +32 -0
  70. package/{src/protocols/ethereum/scaffold/mapping.ts → dist/protocols/ethereum/scaffold/mapping.js} +18 -29
  71. package/dist/protocols/ethereum/subgraph.js +172 -0
  72. package/dist/protocols/ethereum/type-generator.js +123 -0
  73. package/dist/protocols/index.js +266 -0
  74. package/dist/protocols/ipfs/codegen/file_template.js +53 -0
  75. package/dist/protocols/near/contract.js +41 -0
  76. package/{src → dist}/protocols/near/manifest.graphql +0 -0
  77. package/dist/protocols/near/scaffold/manifest.js +16 -0
  78. package/{src/protocols/near/scaffold/mapping.ts → dist/protocols/near/scaffold/mapping.js} +5 -2
  79. package/dist/protocols/near/subgraph.js +23 -0
  80. package/dist/protocols/subgraph.js +2 -0
  81. package/{src → dist}/protocols/substreams/manifest.graphql +0 -0
  82. package/dist/protocols/substreams/scaffold/manifest.js +12 -0
  83. package/dist/protocols/substreams/subgraph.js +23 -0
  84. package/{src/scaffold/cosmos.test.ts → dist/scaffold/cosmos.test.js} +21 -22
  85. package/{src/scaffold/ethereum.test.ts → dist/scaffold/ethereum.test.js} +85 -101
  86. package/dist/scaffold/index.js +133 -0
  87. package/dist/scaffold/mapping.js +57 -0
  88. package/{src/scaffold/near.test.ts → dist/scaffold/near.test.js} +22 -23
  89. package/dist/scaffold/schema.js +86 -0
  90. package/dist/scaffold/tests.js +179 -0
  91. package/dist/schema.js +54 -0
  92. package/dist/subgraph.js +243 -0
  93. package/dist/type-generator.js +225 -0
  94. package/dist/validation/contract.js +44 -0
  95. package/dist/validation/index.js +10 -0
  96. package/dist/validation/manifest.js +266 -0
  97. package/dist/validation/schema.js +768 -0
  98. package/dist/validation/schema.test.js +35 -0
  99. package/dist/watcher.js +79 -0
  100. package/package.json +5 -1
  101. package/babel.config.js +0 -3
  102. package/jest.config.js +0 -175
  103. package/src/bin.ts +0 -6
  104. package/src/cli.ts +0 -30
  105. package/src/codegen/schema.test.ts +0 -460
  106. package/src/codegen/schema.ts +0 -299
  107. package/src/codegen/template.ts +0 -45
  108. package/src/codegen/types/conversions.ts +0 -358
  109. package/src/codegen/types/index.test.ts +0 -715
  110. package/src/codegen/types/index.ts +0 -111
  111. package/src/codegen/typescript.ts +0 -224
  112. package/src/codegen/util.test.ts +0 -112
  113. package/src/codegen/util.ts +0 -54
  114. package/src/command-helpers/abi.ts +0 -99
  115. package/src/command-helpers/auth.ts +0 -46
  116. package/src/command-helpers/compiler.ts +0 -60
  117. package/src/command-helpers/data-sources.ts +0 -36
  118. package/src/command-helpers/fs.ts +0 -5
  119. package/src/command-helpers/gluegun.ts +0 -52
  120. package/src/command-helpers/ipfs-http-client.d.ts +0 -1
  121. package/src/command-helpers/ipfs.ts +0 -3
  122. package/src/command-helpers/jsonrpc.ts +0 -22
  123. package/src/command-helpers/network.test.ts +0 -85
  124. package/src/command-helpers/network.ts +0 -133
  125. package/src/command-helpers/node.ts +0 -46
  126. package/src/command-helpers/scaffold.ts +0 -174
  127. package/src/command-helpers/spinner.ts +0 -60
  128. package/src/command-helpers/studio.test.ts +0 -84
  129. package/src/command-helpers/studio.ts +0 -25
  130. package/src/command-helpers/subgraph.ts +0 -21
  131. package/src/command-helpers/version.test.ts +0 -241
  132. package/src/command-helpers/version.ts +0 -53
  133. package/src/commands/add.ts +0 -220
  134. package/src/commands/auth.ts +0 -138
  135. package/src/commands/binary-install-raw.d.ts +0 -1
  136. package/src/commands/build.ts +0 -147
  137. package/src/commands/codegen.ts +0 -123
  138. package/src/commands/create.ts +0 -109
  139. package/src/commands/deploy.ts +0 -388
  140. package/src/commands/init.ts +0 -1060
  141. package/src/commands/local.ts +0 -539
  142. package/src/commands/remove.ts +0 -110
  143. package/src/commands/test.ts +0 -369
  144. package/src/compiler/asc.ts +0 -77
  145. package/src/compiler/index.ts +0 -677
  146. package/src/debug.ts +0 -15
  147. package/src/migrations/mapping_api_version_0_0_1.ts +0 -75
  148. package/src/migrations/mapping_api_version_0_0_2.ts +0 -75
  149. package/src/migrations/mapping_api_version_0_0_3.ts +0 -75
  150. package/src/migrations/mapping_api_version_0_0_4.ts +0 -77
  151. package/src/migrations/mapping_api_version_0_0_5.ts +0 -77
  152. package/src/migrations/spec_version_0_0_2.ts +0 -24
  153. package/src/migrations/spec_version_0_0_3.ts +0 -29
  154. package/src/migrations/util/load-manifest.ts +0 -10
  155. package/src/migrations/util/versions.ts +0 -27
  156. package/src/migrations.ts +0 -33
  157. package/src/protocols/arweave/subgraph.ts +0 -22
  158. package/src/protocols/contract.ts +0 -9
  159. package/src/protocols/cosmos/scaffold/manifest.ts +0 -11
  160. package/src/protocols/cosmos/subgraph.ts +0 -27
  161. package/src/protocols/ethereum/abi.ts +0 -153
  162. package/src/protocols/ethereum/codegen/abi.test.ts +0 -330
  163. package/src/protocols/ethereum/codegen/abi.ts +0 -719
  164. package/src/protocols/ethereum/codegen/template.ts +0 -41
  165. package/src/protocols/ethereum/contract.ts +0 -24
  166. package/src/protocols/ethereum/scaffold/manifest.ts +0 -28
  167. package/src/protocols/ethereum/subgraph.ts +0 -189
  168. package/src/protocols/ethereum/type-generator.ts +0 -191
  169. package/src/protocols/index.ts +0 -287
  170. package/src/protocols/ipfs/codegen/file_template.ts +0 -43
  171. package/src/protocols/near/contract.ts +0 -47
  172. package/src/protocols/near/scaffold/manifest.ts +0 -13
  173. package/src/protocols/near/subgraph.ts +0 -22
  174. package/src/protocols/subgraph.ts +0 -12
  175. package/src/protocols/substreams/scaffold/manifest.ts +0 -8
  176. package/src/protocols/substreams/subgraph.ts +0 -22
  177. package/src/scaffold/index.ts +0 -172
  178. package/src/scaffold/mapping.ts +0 -44
  179. package/src/scaffold/schema.ts +0 -89
  180. package/src/scaffold/tests.ts +0 -217
  181. package/src/schema.ts +0 -26
  182. package/src/subgraph.ts +0 -302
  183. package/src/type-generator.ts +0 -266
  184. package/src/validation/contract.ts +0 -51
  185. package/src/validation/index.ts +0 -5
  186. package/src/validation/manifest.ts +0 -360
  187. package/src/validation/schema.test.ts +0 -38
  188. package/src/validation/schema.ts +0 -957
  189. package/src/watcher.ts +0 -96
  190. package/tests/cli/globalSetup.ts +0 -8
  191. package/tests/cli/globalTeardown.ts +0 -8
  192. package/tests/cli/init/ethereum/abis/Marketplace.json +0 -408
  193. package/tests/cli/init/ethereum/abis/OverloadedElements.json +0 -91
  194. package/tests/cli/init/ethereum/abis/SoloMargin.json +0 -2729
  195. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stderr +0 -14
  196. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stdout +0 -12
  197. package/tests/cli/init/ethereum/from-contract-with-abi.stderr +0 -14
  198. package/tests/cli/init/ethereum/from-contract-with-abi.stdout +0 -12
  199. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stderr +0 -14
  200. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stdout +0 -12
  201. package/tests/cli/init/ethereum/from-contract.stderr +0 -16
  202. package/tests/cli/init/ethereum/from-contract.stdout +0 -12
  203. package/tests/cli/init/ethereum/from-example.stderr +0 -12
  204. package/tests/cli/init/ethereum/from-example.stdout +0 -12
  205. package/tests/cli/init/near/from-contract.stderr +0 -14
  206. package/tests/cli/init/near/from-contract.stdout +0 -12
  207. package/tests/cli/init.test.ts +0 -157
  208. package/tests/cli/spawn-command.d.ts +0 -7
  209. package/tests/cli/util.ts +0 -132
  210. package/tests/cli/validation/abi-not-found/Abi.json +0 -7
  211. package/tests/cli/validation/abi-not-found/mapping.ts +0 -0
  212. package/tests/cli/validation/abi-not-found/schema.graphql +0 -3
  213. package/tests/cli/validation/abi-not-found/subgraph.yaml +0 -42
  214. package/tests/cli/validation/abi-not-found copy.stderr +0 -13
  215. package/tests/cli/validation/big-decimal-is-valid/Abi.json +0 -7
  216. package/tests/cli/validation/big-decimal-is-valid/mapping.ts +0 -0
  217. package/tests/cli/validation/big-decimal-is-valid/schema.graphql +0 -4
  218. package/tests/cli/validation/big-decimal-is-valid/subgraph.yaml +0 -23
  219. package/tests/cli/validation/call-function-not-found/Abi.json +0 -57
  220. package/tests/cli/validation/call-function-not-found/mapping.ts +0 -0
  221. package/tests/cli/validation/call-function-not-found/schema.graphql +0 -3
  222. package/tests/cli/validation/call-function-not-found/subgraph.yaml +0 -22
  223. package/tests/cli/validation/call-function-not-found.stderr +0 -10
  224. package/tests/cli/validation/call-handler-with-tuple/Abi.json +0 -24
  225. package/tests/cli/validation/call-handler-with-tuple/generated/schema.ts +0 -44
  226. package/tests/cli/validation/call-handler-with-tuple/mapping.ts +0 -0
  227. package/tests/cli/validation/call-handler-with-tuple/schema.graphql +0 -3
  228. package/tests/cli/validation/call-handler-with-tuple/subgraph.yaml +0 -22
  229. package/tests/cli/validation/call-handler-with-tuple.stderr +0 -24
  230. package/tests/cli/validation/conflicting-network-names/Abi.json +0 -7
  231. package/tests/cli/validation/conflicting-network-names/mapping.ts +0 -0
  232. package/tests/cli/validation/conflicting-network-names/schema.graphql +0 -3
  233. package/tests/cli/validation/conflicting-network-names/subgraph.yaml +0 -41
  234. package/tests/cli/validation/conflicting-network-names.stderr +0 -10
  235. package/tests/cli/validation/conflicting-protocol-names/Abi.json +0 -7
  236. package/tests/cli/validation/conflicting-protocol-names/mapping.ts +0 -0
  237. package/tests/cli/validation/conflicting-protocol-names/schema.graphql +0 -3
  238. package/tests/cli/validation/conflicting-protocol-names/subgraph.yaml +0 -41
  239. package/tests/cli/validation/conflicting-protocol-names.stderr +0 -10
  240. package/tests/cli/validation/derived-from-target-type-missing/Abi.json +0 -6
  241. package/tests/cli/validation/derived-from-target-type-missing/mapping.ts +0 -0
  242. package/tests/cli/validation/derived-from-target-type-missing/schema.graphql +0 -4
  243. package/tests/cli/validation/derived-from-target-type-missing/subgraph.yaml +0 -22
  244. package/tests/cli/validation/derived-from-target-type-missing.stderr +0 -5
  245. package/tests/cli/validation/derived-from-with-interface/Gravity.json +0 -1
  246. package/tests/cli/validation/derived-from-with-interface/mapping.ts +0 -22
  247. package/tests/cli/validation/derived-from-with-interface/schema.graphql +0 -19
  248. package/tests/cli/validation/derived-from-with-interface/subgraph.yaml +0 -25
  249. package/tests/cli/validation/duplicate-data-source-name/Abi.json +0 -7
  250. package/tests/cli/validation/duplicate-data-source-name/mapping.ts +0 -0
  251. package/tests/cli/validation/duplicate-data-source-name/schema.graphql +0 -4
  252. package/tests/cli/validation/duplicate-data-source-name/subgraph.yaml +0 -40
  253. package/tests/cli/validation/duplicate-data-source-name.stderr +0 -5
  254. package/tests/cli/validation/duplicate-template-name/Abi.json +0 -7
  255. package/tests/cli/validation/duplicate-template-name/mapping.ts +0 -0
  256. package/tests/cli/validation/duplicate-template-name/schema.graphql +0 -4
  257. package/tests/cli/validation/duplicate-template-name/subgraph.yaml +0 -59
  258. package/tests/cli/validation/duplicate-template-name.stderr +0 -5
  259. package/tests/cli/validation/entity-field-args/Abi.json +0 -7
  260. package/tests/cli/validation/entity-field-args/mapping.ts +0 -0
  261. package/tests/cli/validation/entity-field-args/schema.graphql +0 -4
  262. package/tests/cli/validation/entity-field-args/subgraph.yaml +0 -22
  263. package/tests/cli/validation/entity-field-args.stderr +0 -5
  264. package/tests/cli/validation/ethereum-contract-without-handlers/Abi.json +0 -7
  265. package/tests/cli/validation/ethereum-contract-without-handlers/mapping.ts +0 -0
  266. package/tests/cli/validation/ethereum-contract-without-handlers/schema.graphql +0 -3
  267. package/tests/cli/validation/ethereum-contract-without-handlers/subgraph.yaml +0 -19
  268. package/tests/cli/validation/ethereum-contract-without-handlers.stderr +0 -6
  269. package/tests/cli/validation/event-not-found/Abi.json +0 -7
  270. package/tests/cli/validation/event-not-found/mapping.ts +0 -0
  271. package/tests/cli/validation/event-not-found/schema.graphql +0 -3
  272. package/tests/cli/validation/event-not-found/subgraph.yaml +0 -40
  273. package/tests/cli/validation/event-not-found.stderr +0 -12
  274. package/tests/cli/validation/example-values-found/Abi.json +0 -7
  275. package/tests/cli/validation/example-values-found/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  276. package/tests/cli/validation/example-values-found/generated/schema.ts +0 -44
  277. package/tests/cli/validation/example-values-found/mapping.ts +0 -0
  278. package/tests/cli/validation/example-values-found/schema.graphql +0 -3
  279. package/tests/cli/validation/example-values-found/subgraph.yaml +0 -24
  280. package/tests/cli/validation/example-values-found.stderr +0 -34
  281. package/tests/cli/validation/invalid-abis/InvalidAbi.json +0 -1
  282. package/tests/cli/validation/invalid-abis/mapping.ts +0 -0
  283. package/tests/cli/validation/invalid-abis/schema.graphql +0 -3
  284. package/tests/cli/validation/invalid-abis/subgraph.yaml +0 -22
  285. package/tests/cli/validation/invalid-abis.stderr +0 -5
  286. package/tests/cli/validation/invalid-contract-addresses/Abi.json +0 -7
  287. package/tests/cli/validation/invalid-contract-addresses/mapping.ts +0 -0
  288. package/tests/cli/validation/invalid-contract-addresses/schema.graphql +0 -3
  289. package/tests/cli/validation/invalid-contract-addresses/subgraph.yaml +0 -58
  290. package/tests/cli/validation/invalid-contract-addresses.stderr +0 -14
  291. package/tests/cli/validation/invalid-data-source-template/mapping.ts +0 -0
  292. package/tests/cli/validation/invalid-data-source-template/schema.graphql +0 -3
  293. package/tests/cli/validation/invalid-data-source-template/subgraph.yaml +0 -32
  294. package/tests/cli/validation/invalid-data-source-template.stderr +0 -30
  295. package/tests/cli/validation/invalid-entity-field-types/Abi.json +0 -7
  296. package/tests/cli/validation/invalid-entity-field-types/mapping.ts +0 -0
  297. package/tests/cli/validation/invalid-entity-field-types/schema.graphql +0 -157
  298. package/tests/cli/validation/invalid-entity-field-types/subgraph.yaml +0 -22
  299. package/tests/cli/validation/invalid-entity-field-types.stderr +0 -148
  300. package/tests/cli/validation/invalid-fulltext-directive/Abi.json +0 -7
  301. package/tests/cli/validation/invalid-fulltext-directive/mapping.ts +0 -0
  302. package/tests/cli/validation/invalid-fulltext-directive/schema.graphql +0 -140
  303. package/tests/cli/validation/invalid-fulltext-directive/subgraph.yaml +0 -22
  304. package/tests/cli/validation/invalid-fulltext-directive.stderr +0 -32
  305. package/tests/cli/validation/invalid-graphql-schema/Abi.json +0 -7
  306. package/tests/cli/validation/invalid-graphql-schema/mapping.ts +0 -0
  307. package/tests/cli/validation/invalid-graphql-schema/schema.graphql +0 -8
  308. package/tests/cli/validation/invalid-graphql-schema/subgraph.yaml +0 -22
  309. package/tests/cli/validation/invalid-graphql-schema.stderr +0 -25
  310. package/tests/cli/validation/invalid-manifest/subgraph.yaml +0 -13
  311. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol/subgraph.yaml +0 -12
  312. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol.stderr +0 -5
  313. package/tests/cli/validation/invalid-manifest.stderr +0 -28
  314. package/tests/cli/validation/missing-entity-id/Abi.json +0 -7
  315. package/tests/cli/validation/missing-entity-id/mapping.ts +0 -0
  316. package/tests/cli/validation/missing-entity-id/schema.graphql +0 -3
  317. package/tests/cli/validation/missing-entity-id/subgraph.yaml +0 -22
  318. package/tests/cli/validation/missing-entity-id/types/ExampleSubgraph/ExampleContract.ts +0 -35
  319. package/tests/cli/validation/missing-entity-id/types/schema.ts +0 -27
  320. package/tests/cli/validation/missing-entity-id.stderr +0 -5
  321. package/tests/cli/validation/missing-or-invalid-derived-from-fields/Abi.json +0 -7
  322. package/tests/cli/validation/missing-or-invalid-derived-from-fields/mapping.ts +0 -0
  323. package/tests/cli/validation/missing-or-invalid-derived-from-fields/schema.graphql +0 -40
  324. package/tests/cli/validation/missing-or-invalid-derived-from-fields/subgraph.yaml +0 -22
  325. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stderr +0 -10
  326. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stdout +0 -0
  327. package/tests/cli/validation/near-is-valid/mapping.ts +0 -0
  328. package/tests/cli/validation/near-is-valid/schema.graphql +0 -8
  329. package/tests/cli/validation/near-is-valid/subgraph.yaml +0 -30
  330. package/tests/cli/validation/nested-template-nice-error/Abi.json +0 -7
  331. package/tests/cli/validation/nested-template-nice-error/mapping.ts +0 -0
  332. package/tests/cli/validation/nested-template-nice-error/schema.graphql +0 -3
  333. package/tests/cli/validation/nested-template-nice-error/subgraph.yaml +0 -35
  334. package/tests/cli/validation/nested-template-nice-error.stderr +0 -5
  335. package/tests/cli/validation/no-network-names/Abi.json +0 -7
  336. package/tests/cli/validation/no-network-names/mapping.ts +0 -0
  337. package/tests/cli/validation/no-network-names/schema.graphql +0 -3
  338. package/tests/cli/validation/no-network-names/subgraph.yaml +0 -40
  339. package/tests/cli/validation/no-network-names.stderr +0 -34
  340. package/tests/cli/validation/source-without-address-is-valid/Abi.json +0 -7
  341. package/tests/cli/validation/source-without-address-is-valid/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  342. package/tests/cli/validation/source-without-address-is-valid/mapping.ts +0 -0
  343. package/tests/cli/validation/source-without-address-is-valid/schema.graphql +0 -3
  344. package/tests/cli/validation/source-without-address-is-valid/subgraph.yaml +0 -23
  345. package/tests/cli/validation/source-without-address-is-valid.stderr +0 -24
  346. package/tests/cli/validation/topic0-is-valid/Abi.json +0 -7
  347. package/tests/cli/validation/topic0-is-valid/mapping.ts +0 -0
  348. package/tests/cli/validation/topic0-is-valid/schema.graphql +0 -4
  349. package/tests/cli/validation/topic0-is-valid/subgraph.yaml +0 -24
  350. package/tests/cli/validation.test.ts +0 -226
  351. package/tsconfig.build.json +0 -4
  352. package/tsconfig.json +0 -19
@@ -1,111 +0,0 @@
1
- import immutable from 'immutable';
2
- import TYPE_CONVERSIONS from './conversions';
3
-
4
- // Conversion utilities
5
-
6
- const conversionsForTypeSystems = (fromTypeSystem: string, toTypeSystem: string) => {
7
- const conversions = TYPE_CONVERSIONS.getIn([fromTypeSystem, toTypeSystem]);
8
- if (conversions === undefined) {
9
- throw new Error(`Conversions from '${fromTypeSystem}' to '${toTypeSystem}' are not supported`);
10
- }
11
- return conversions as immutable.Collection<any, any>;
12
- };
13
-
14
- const objectifyConversion = (
15
- fromTypeSystem: string,
16
- toTypeSystem: string,
17
- conversion: immutable.Collection<any, any>,
18
- ) => {
19
- return immutable.fromJS({
20
- from: {
21
- typeSystem: fromTypeSystem,
22
- type: conversion.get(0),
23
- },
24
- to: {
25
- typeSystem: toTypeSystem,
26
- type: conversion.get(1),
27
- },
28
- convert: conversion.get(2),
29
- });
30
- };
31
-
32
- const findConversionFromType = (
33
- fromTypeSystem: string,
34
- toTypeSystem: string,
35
- fromType: string,
36
- ): immutable.Collection<any, any> => {
37
- const conversions = conversionsForTypeSystems(fromTypeSystem, toTypeSystem);
38
-
39
- const conversion = conversions.find(conversion =>
40
- typeof conversion.get(0) === 'string'
41
- ? conversion.get(0) === fromType
42
- : !!fromType.match(conversion.get(0)),
43
- );
44
-
45
- if (conversion === undefined) {
46
- throw new Error(
47
- `Conversion from '${fromTypeSystem}' to '${toTypeSystem}' for ` +
48
- `source type '${fromType}' is not supported`,
49
- );
50
- }
51
-
52
- return objectifyConversion(fromTypeSystem, toTypeSystem, conversion);
53
- };
54
-
55
- const findConversionToType = (
56
- fromTypeSystem: string,
57
- toTypeSystem: string,
58
- toType: string,
59
- ): immutable.Collection<any, any> => {
60
- const conversions = conversionsForTypeSystems(fromTypeSystem, toTypeSystem);
61
-
62
- const conversion = conversions.find(conversion =>
63
- typeof conversion.get(1) === 'string'
64
- ? conversion.get(1) === toType
65
- : !!toType.match(conversion.get(1)),
66
- );
67
-
68
- if (conversion === undefined) {
69
- throw new Error(
70
- `Conversion from '${fromTypeSystem}' to '${toTypeSystem}' for ` +
71
- `target type '${toType}' is not supported`,
72
- );
73
- }
74
-
75
- return objectifyConversion(fromTypeSystem, toTypeSystem, conversion);
76
- };
77
-
78
- // High-level type system API
79
-
80
- export const ascTypeForProtocol = (protocol: string, protocolType: string) =>
81
- findConversionFromType(protocol, 'AssemblyScript', protocolType).getIn(['to', 'type']) as string;
82
-
83
- // TODO: this can be removed/replaced by the function above
84
- export const ascTypeForEthereum = (ethereumType: string) =>
85
- ascTypeForProtocol('ethereum', ethereumType);
86
-
87
- export const ethereumTypeForAsc = (ascType: string) =>
88
- findConversionFromType('AssemblyScript', 'ethereum', ascType).getIn(['to', 'type']) as
89
- | string
90
- | RegExp;
91
-
92
- export const ethereumToAsc = (code: string, ethereumType: string, internalType?: string) =>
93
- findConversionFromType('ethereum', 'AssemblyScript', ethereumType).get('convert')(
94
- code,
95
- internalType,
96
- );
97
-
98
- export const ethereumFromAsc = (code: string, ethereumType: string) =>
99
- findConversionToType('AssemblyScript', 'ethereum', ethereumType).get('convert')(code);
100
-
101
- export const ascTypeForValue = (valueType: string) =>
102
- findConversionFromType('Value', 'AssemblyScript', valueType).getIn(['to', 'type']);
103
-
104
- export const valueTypeForAsc = (ascType: string) =>
105
- findConversionFromType('AssemblyScript', 'Value', ascType).getIn(['to', 'type']);
106
-
107
- export const valueToAsc = (code: string, valueType: string) =>
108
- findConversionFromType('Value', 'AssemblyScript', valueType).get('convert')(code);
109
-
110
- export const valueFromAsc = (code: string, valueType: string) =>
111
- findConversionToType('AssemblyScript', 'Value', valueType).get('convert')(code);
@@ -1,224 +0,0 @@
1
- class Param {
2
- constructor(public name: string, public type: string | NamedType | NullableType) {
3
- this.name = name;
4
- this.type = type;
5
- }
6
-
7
- toString() {
8
- return `${this.name}: ${this.type.toString()}`;
9
- }
10
- }
11
-
12
- class Method {
13
- constructor(
14
- public name: string,
15
- public params: Param[],
16
- public returnType: string | NamedType | null | undefined,
17
- public body: string,
18
- ) {
19
- this.name = name;
20
- this.params = params || [];
21
- this.returnType = returnType;
22
- this.body = body || '';
23
- }
24
-
25
- toString() {
26
- return `
27
- ${this.name}(${this.params.map(param => param.toString()).join(', ')})${
28
- this.returnType ? `: ${this.returnType.toString()}` : ''
29
- } {${this.body}
30
- }
31
- `;
32
- }
33
- }
34
-
35
- class StaticMethod {
36
- constructor(
37
- public name: string,
38
- public params: Param[],
39
- public returnType: NamedType | NullableType,
40
- public body: string,
41
- ) {
42
- this.name = name;
43
- this.params = params || [];
44
- this.returnType = returnType || 'void';
45
- this.body = body || '';
46
- }
47
-
48
- toString() {
49
- return `
50
- static ${this.name}(${this.params.map(param => param.toString()).join(', ')})${
51
- this.returnType ? `: ${this.returnType.toString()}` : ''
52
- } {${this.body}
53
- }
54
- `;
55
- }
56
- }
57
-
58
- interface ClassOptions {
59
- extends?: string;
60
- export?: boolean;
61
- }
62
-
63
- class Class {
64
- public extends: string | undefined;
65
- public methods: string[];
66
- public members: any[];
67
- public export: boolean;
68
-
69
- constructor(public name: string, options: ClassOptions) {
70
- this.name = name;
71
- this.extends = options.extends;
72
- this.methods = [];
73
- this.members = [];
74
- this.export = options.export || false;
75
- }
76
-
77
- addMember(member: any) {
78
- this.members.push(member);
79
- }
80
-
81
- addMethod(method: any) {
82
- this.methods.push(method);
83
- }
84
-
85
- toString() {
86
- return `
87
- ${this.export ? 'export' : ''} class ${this.name}${this.extends ? ` extends ${this.extends}` : ''} {
88
- ${this.members.map(member => member.toString()).join('\n')}
89
- ${this.methods.map(method => method.toString()).join('')}
90
- }
91
- `;
92
- }
93
- }
94
-
95
- class ClassMember {
96
- constructor(public name: string, public type: string) {
97
- this.name = name;
98
- this.type = type;
99
- }
100
-
101
- toString() {
102
- return ` ${this.name}: ${this.type.toString()}`;
103
- }
104
- }
105
-
106
- class NamedType {
107
- constructor(public name: string) {
108
- this.name = name;
109
- }
110
-
111
- toString() {
112
- return this.name;
113
- }
114
-
115
- capitalize() {
116
- this.name = this.name.charAt(0).toUpperCase() + this.name.slice(1);
117
- return this;
118
- }
119
-
120
- isPrimitive() {
121
- const primitives = [
122
- 'boolean',
123
- 'u8',
124
- 'i8',
125
- 'u16',
126
- 'i16',
127
- 'u32',
128
- 'i32',
129
- 'u64',
130
- 'i64',
131
- 'f32',
132
- 'f64',
133
- 'usize',
134
- 'isize',
135
- ];
136
- return primitives.includes(this.name);
137
- }
138
- }
139
-
140
- class ArrayType {
141
- public name: string;
142
-
143
- constructor(public inner: NamedType) {
144
- this.inner = inner;
145
- this.name = `Array<${inner.toString()}>`;
146
- }
147
-
148
- toString() {
149
- return this.name;
150
- }
151
- }
152
-
153
- class NullableType {
154
- constructor(public inner: NamedType | ArrayType) {
155
- this.inner = inner;
156
- }
157
-
158
- toString() {
159
- return `${this.inner.toString()} | null`;
160
- }
161
- }
162
-
163
- class ModuleImports {
164
- constructor(public nameOrNames: string | string[], public module: string) {
165
- this.nameOrNames = nameOrNames;
166
- this.module = module;
167
- }
168
-
169
- toString() {
170
- return `import { ${
171
- typeof this.nameOrNames === 'string' ? this.nameOrNames : this.nameOrNames.join(',')
172
- } } from "${this.module}"`;
173
- }
174
- }
175
-
176
- const namedType = (name: string) => new NamedType(name);
177
- const arrayType = (name: NamedType) => new ArrayType(name);
178
- const param = (name: string, type: string | NamedType) => new Param(name, type);
179
- const method = (
180
- name: string,
181
- params: Param[],
182
- returnType: string | NamedType | null | undefined,
183
- body: string,
184
- ) => new Method(name, params, returnType, body);
185
- const staticMethod = (
186
- name: string,
187
- params: Param[],
188
- returnType: NamedType | NullableType,
189
- body: string,
190
- ) => new StaticMethod(name, params, returnType, body);
191
- const klass = (name: string, options: ClassOptions) => new Class(name, options);
192
- const klassMember = (name: string, type: string) => new ClassMember(name, type);
193
- const nullableType = (type: NamedType | ArrayType) => new NullableType(type);
194
- const moduleImports = (nameOrNames: string | string[], module: string) =>
195
- new ModuleImports(nameOrNames, module);
196
-
197
- const GENERATED_FILE_NOTE = `
198
- // THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
199
- `;
200
-
201
- export {
202
- ArrayType,
203
- arrayType,
204
- Class,
205
- ClassMember,
206
- // Utilities
207
- GENERATED_FILE_NOTE,
208
- klass,
209
- klassMember,
210
- Method,
211
- method,
212
- ModuleImports,
213
- moduleImports,
214
- NamedType,
215
- // Code generators
216
- namedType,
217
- NullableType,
218
- nullableType,
219
- // Types
220
- Param,
221
- param,
222
- StaticMethod,
223
- staticMethod,
224
- };
@@ -1,112 +0,0 @@
1
- import { disambiguateNames, unrollTuple } from './util';
2
-
3
- describe('Codegen utilities', () => {
4
- test('Name disambiguation', () => {
5
- expect(
6
- disambiguateNames({
7
- values: ['a', 'b', 'c'],
8
- getName: x => x,
9
- setName: (_x, name) => name,
10
- }),
11
- ).toEqual(['a', 'b', 'c']);
12
-
13
- expect(
14
- disambiguateNames({
15
- values: ['a', 'a', 'a'],
16
- getName: x => x,
17
- setName: (_x, name) => name,
18
- }),
19
- ).toEqual(['a', 'a1', 'a2']);
20
-
21
- expect(
22
- disambiguateNames({
23
- values: [
24
- { name: 'ExampleEvent', inputs: [] },
25
- { name: 'ExampleEvent', inputs: [{ type: 'uint256' }] },
26
- { name: 'ExampleEvent', inputs: [{ type: 'uint96' }] },
27
- ],
28
- getName: event => event.name,
29
- setName: (event, name) => {
30
- event.name = name;
31
- return event;
32
- },
33
- }),
34
- ).toEqual([
35
- { name: 'ExampleEvent', inputs: [] },
36
- { name: 'ExampleEvent1', inputs: [{ type: 'uint256' }] },
37
- { name: 'ExampleEvent2', inputs: [{ type: 'uint96' }] },
38
- ]);
39
- });
40
-
41
- test('Tuple unrolling', () => {
42
- expect(
43
- unrollTuple({
44
- value: { type: 'tuple', name: 'value', components: [] },
45
- path: ['value'],
46
- index: 0,
47
- }),
48
- ).toEqual([]);
49
-
50
- expect(
51
- unrollTuple({
52
- value: {
53
- type: 'tuple',
54
- name: 'value',
55
- components: [{ name: 'a', type: 'string' }],
56
- },
57
- path: ['value'],
58
- index: 0,
59
- }),
60
- ).toEqual([{ path: ['value', 'a'], type: 'string' }]);
61
-
62
- expect(
63
- unrollTuple({
64
- value: {
65
- type: 'tuple',
66
- name: 'value',
67
- components: [
68
- { name: 'a', type: 'string' },
69
- { name: 'b', type: 'uint256' },
70
- ],
71
- },
72
- path: ['value'],
73
- index: 0,
74
- }),
75
- ).toEqual([
76
- { path: ['value', 'a'], type: 'string' },
77
- { path: ['value', 'b'], type: 'uint256' },
78
- ]);
79
-
80
- expect(
81
- unrollTuple({
82
- value: {
83
- type: 'tuple',
84
- name: 'value',
85
- components: [
86
- { name: 'a', type: 'string' },
87
- { name: 'b', type: 'uint256' },
88
- {
89
- name: 'c',
90
- type: 'tuple',
91
- components: [
92
- { type: 'bytes32' },
93
- {
94
- name: 'd',
95
- type: 'tuple',
96
- components: [{ name: 'd1', type: 'uint72' }],
97
- },
98
- ],
99
- },
100
- ],
101
- },
102
- path: ['value'],
103
- index: 1,
104
- }),
105
- ).toEqual([
106
- { path: ['value', 'a'], type: 'string' },
107
- { path: ['value', 'b'], type: 'uint256' },
108
- { path: ['value', 'c', 'value0'], type: 'bytes32' },
109
- { path: ['value', 'c', 'd', 'd1'], type: 'uint72' },
110
- ]);
111
- });
112
- });
@@ -1,54 +0,0 @@
1
- export function disambiguateNames<T>({
2
- values,
3
- getName,
4
- setName,
5
- }: {
6
- values: T[];
7
- getName: (value: T, index: number) => string;
8
- setName: (value: T, name: string) => void;
9
- }) {
10
- const collisionCounter = new Map();
11
- return values.map((value, index) => {
12
- const name = getName(value, index);
13
- const counter = collisionCounter.get(name);
14
- if (counter === undefined) {
15
- collisionCounter.set(name, 1);
16
- return setName(value, name);
17
- }
18
- collisionCounter.set(name, counter + 1);
19
- return setName(value, `${name}${counter}`);
20
- });
21
- }
22
-
23
- export function isTupleType(t: string) {
24
- return t === 'tuple';
25
- }
26
-
27
- export function containsTupleType(t: string) {
28
- return isTupleType(t) || isTupleArrayType(t) || isTupleMatrixType(t);
29
- }
30
-
31
- export function isTupleArrayType(t: string) {
32
- return t.match(/^tuple\[([0-9]+)?\]$/);
33
- }
34
-
35
- export function isTupleMatrixType(t: string) {
36
- return t.match(/^tuple\[([0-9]+)?\]\[([0-9]+)?\]$/);
37
- }
38
-
39
- export const unrollTuple = ({
40
- path,
41
- value,
42
- }: {
43
- path: string[];
44
- index: number; // TODO: index is unused, do we really need it?
45
- value: any;
46
- }) =>
47
- value.components.reduce((acc: any[], component: any, index: number) => {
48
- const name = component.name || `value${index}`;
49
- return acc.concat(
50
- component.type === 'tuple'
51
- ? unrollTuple({ path: [...path, name], index, value: component })
52
- : [{ path: [...path, name], type: component.type }],
53
- );
54
- }, []);
@@ -1,99 +0,0 @@
1
- import immutable from 'immutable';
2
- import fetch from 'node-fetch';
3
- import ABI from '../protocols/ethereum/abi';
4
- import { withSpinner } from './spinner';
5
-
6
- export const loadAbiFromEtherscan = async (
7
- ABICtor: typeof ABI,
8
- network: string,
9
- address: string,
10
- ): Promise<ABI> =>
11
- await withSpinner(
12
- `Fetching ABI from Etherscan`,
13
- `Failed to fetch ABI from Etherscan`,
14
- `Warnings while fetching ABI from Etherscan`,
15
- async () => {
16
- const scanApiUrl = getEtherscanLikeAPIUrl(network);
17
- const result = await fetch(`${scanApiUrl}?module=contract&action=getabi&address=${address}`);
18
- const json = await result.json();
19
-
20
- // Etherscan returns a JSON object that has a `status`, a `message` and
21
- // a `result` field. The `status` is '0' in case of errors and '1' in
22
- // case of success
23
- if (json.status === '1') {
24
- return new ABICtor('Contract', undefined, immutable.fromJS(JSON.parse(json.result)));
25
- }
26
- throw new Error('ABI not found, try loading it from a local file');
27
- },
28
- );
29
-
30
- export const loadAbiFromBlockScout = async (
31
- ABICtor: typeof ABI,
32
- network: string,
33
- address: string,
34
- ) =>
35
- await withSpinner(
36
- `Fetching ABI from BlockScout`,
37
- `Failed to fetch ABI from BlockScout`,
38
- `Warnings while fetching ABI from BlockScout`,
39
- async () => {
40
- const result = await fetch(
41
- `https://blockscout.com/${network.replace(
42
- '-',
43
- '/',
44
- )}/api?module=contract&action=getabi&address=${address}`,
45
- );
46
- const json = await result.json();
47
-
48
- // BlockScout returns a JSON object that has a `status`, a `message` and
49
- // a `result` field. The `status` is '0' in case of errors and '1' in
50
- // case of success
51
- if (json.status === '1') {
52
- return new ABICtor('Contract', undefined, immutable.fromJS(JSON.parse(json.result)));
53
- }
54
- throw new Error('ABI not found, try loading it from a local file');
55
- },
56
- );
57
-
58
- const getEtherscanLikeAPIUrl = (network: string) => {
59
- switch (network) {
60
- case 'mainnet':
61
- return `https://api.etherscan.io/api`;
62
- case 'arbitrum-one':
63
- return `https://api.arbiscan.io/api`;
64
- case 'bsc':
65
- return `https://api.bscscan.com/api`;
66
- case 'chapel':
67
- return `https://api-testnet.bscscan.com/api`;
68
- case 'matic':
69
- return `https://api.polygonscan.com/api`;
70
- case 'mumbai':
71
- return `https://api-testnet.polygonscan.com/api`;
72
- case 'aurora':
73
- return `https://api.aurorascan.dev/api`;
74
- case 'aurora-testnet':
75
- return `https://api-testnet.aurorascan.dev/api`;
76
- case 'optimism-kovan':
77
- return `https://api-kovan-optimistic.etherscan.io/api`;
78
- case 'optimism':
79
- return `https://api-optimistic.etherscan.io/api`;
80
- case 'moonbeam':
81
- return `https://api-moonbeam.moonscan.io/api`;
82
- case 'moonriver':
83
- return `https://api-moonriver.moonscan.io/api`;
84
- case 'mbase':
85
- return `https://api-moonbase.moonscan.io/api`;
86
- case 'avalanche':
87
- return `https://api.snowtrace.io/api`;
88
- case 'fuji':
89
- return `https://api-testnet.snowtrace.io/api`;
90
- case 'gnosis':
91
- return `https://api.gnosisscan.io/api`;
92
- case 'fantom':
93
- return `https://api.ftmscan.com/api`;
94
- case 'fantom-testnet':
95
- return `https://api-testnet.ftmscan.com/api`;
96
- default:
97
- return `https://api-${network}.etherscan.io/api`;
98
- }
99
- };
@@ -1,46 +0,0 @@
1
- import fs from 'fs';
2
- import os from 'os';
3
- import path from 'path';
4
- import * as toolbox from 'gluegun';
5
- import { normalizeNodeUrl } from './node';
6
-
7
- const homedir = os.homedir();
8
-
9
- const CONFIG_PATH = path.join(homedir, '/.graph-cli.json');
10
- const getConfig = () => {
11
- let config;
12
- try {
13
- config = JSON.parse(fs.readFileSync(CONFIG_PATH).toString());
14
- } catch {
15
- config = {};
16
- }
17
- return config;
18
- };
19
-
20
- export const identifyDeployKey = async (node: string, deployKey: string) => {
21
- // Determine the deploy key to use, if any:
22
- // - First try using --deploy-key, if provided
23
- // - Then see if we have a deploy key set for the Graph node
24
- if (deployKey !== undefined) {
25
- return deployKey;
26
- }
27
- try {
28
- node = normalizeNodeUrl(node);
29
- const config = getConfig();
30
- return config[node];
31
- } catch (e) {
32
- toolbox.print.warning(`Could not get deploy key: ${e.message}`);
33
- toolbox.print.info(`Continuing without a deploy key\n`);
34
- }
35
- };
36
-
37
- export const saveDeployKey = async (node: string, deployKey: string) => {
38
- try {
39
- node = normalizeNodeUrl(node);
40
- const config = getConfig();
41
- config[node] = deployKey;
42
- fs.writeFileSync(CONFIG_PATH, JSON.stringify(config));
43
- } catch (e) {
44
- throw new Error(`Error storing deploy key: ${e.message}`);
45
- }
46
- };
@@ -1,60 +0,0 @@
1
- import { URL } from 'url';
2
- import * as toolbox from 'gluegun';
3
- import ipfsHttpClient from 'ipfs-http-client';
4
- import Compiler from '../compiler';
5
- import Protocol from '../protocols';
6
-
7
- interface CreateCompilerOptions {
8
- ipfs: any;
9
- headers?: any;
10
- outputDir: string;
11
- outputFormat: string;
12
- skipMigrations: boolean;
13
- blockIpfsMethods?: boolean;
14
- protocol: Protocol;
15
- }
16
-
17
- // Helper function to construct a subgraph compiler
18
- export function createCompiler(
19
- manifest: string,
20
- {
21
- ipfs,
22
- headers,
23
- outputDir,
24
- outputFormat,
25
- skipMigrations,
26
- blockIpfsMethods,
27
- protocol,
28
- }: CreateCompilerOptions,
29
- ) {
30
- // Parse the IPFS URL
31
- let url;
32
- try {
33
- url = ipfs ? new URL(ipfs) : undefined;
34
- } catch (e) {
35
- toolbox.print.error(`Invalid IPFS URL: ${ipfs}
36
- The IPFS URL must be of the following format: http(s)://host[:port]/[path]`);
37
- return null;
38
- }
39
-
40
- // Connect to the IPFS node (if a node address was provided)
41
- ipfs = ipfs
42
- ? ipfsHttpClient({
43
- protocol: url?.protocol.replace(/[:]+$/, ''),
44
- host: url?.hostname,
45
- port: url?.port,
46
- 'api-path': url?.pathname.replace(/\/$/, '') + '/api/v0/',
47
- headers,
48
- })
49
- : undefined;
50
-
51
- return new Compiler({
52
- ipfs,
53
- subgraphManifest: manifest,
54
- outputDir,
55
- outputFormat,
56
- skipMigrations,
57
- blockIpfsMethods,
58
- protocol,
59
- });
60
- }