@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,153 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import immutable from 'immutable';
4
- import AbiCodeGenerator from './codegen/abi';
5
-
6
- const TUPLE_ARRAY_PATTERN = /^tuple\[([0-9]*)\]$/;
7
- const TUPLE_MATRIX_PATTERN = /^tuple\[([0-9]*)\]\[([0-9]*)\]$/;
8
-
9
- const buildOldSignatureParameter = (input: immutable.Map<any, any>) => {
10
- return input.get('type') === 'tuple'
11
- ? `(${input
12
- .get('components')
13
- .map((component: any) => buildSignatureParameter(component))
14
- .join(',')})`
15
- : String(input.get('type'));
16
- };
17
-
18
- const buildSignatureParameter = (input: immutable.Map<any, any>) => {
19
- if (input.get('type') === 'tuple') {
20
- return `(${input.get('indexed') ? 'indexed ' : ''}${input
21
- .get('components')
22
- .map((component: any) => buildSignatureParameter(component))
23
- .join(',')})`;
24
- }
25
- if (input.get('type').match(TUPLE_ARRAY_PATTERN)) {
26
- const length = input.get('type').match(TUPLE_ARRAY_PATTERN)[1];
27
- return `(${input.get('indexed') ? 'indexed ' : ''}${input
28
- .get('components')
29
- .map((component: any) => buildSignatureParameter(component))
30
- .join(',')})[${length ? length : ''}]`;
31
- }
32
- if (input.get('type').match(TUPLE_MATRIX_PATTERN)) {
33
- const length1 = input.get('type').match(TUPLE_MATRIX_PATTERN)[1];
34
- const length2 = input.get('type').match(TUPLE_MATRIX_PATTERN)[2];
35
- return `(${input.get('indexed') ? 'indexed ' : ''}${input
36
- .get('components')
37
- .map((component: any) => buildSignatureParameter(component))
38
- .join(',')})[${length1 ? length1 : ''}][${length2 ? length2 : ''}]`;
39
- }
40
- return `${input.get('indexed') ? 'indexed ' : ''}${input.get('type')}`;
41
- };
42
-
43
- export default class ABI {
44
- constructor(
45
- public name: string,
46
- public file: string | undefined,
47
- public data: immutable.Collection<any, any>,
48
- ) {
49
- this.name = name;
50
- this.file = file;
51
- this.data = data;
52
- }
53
-
54
- codeGenerator() {
55
- return new AbiCodeGenerator(this);
56
- }
57
-
58
- static oldEventSignature(event: immutable.Map<any, any>) {
59
- return `${event.get('name')}(${event
60
- .get('inputs', [])
61
- .map(buildOldSignatureParameter)
62
- .join(',')})`;
63
- }
64
-
65
- static eventSignature(event: immutable.Map<any, any>) {
66
- return `${event.get('name')}(${event
67
- .get('inputs', [])
68
- .map(buildSignatureParameter)
69
- .join(',')})`;
70
- }
71
-
72
- /**
73
- * For the ABI of a function, returns a string function signature compatible
74
- * with the Rust `ethabi` library. It is of the form
75
- *
76
- * <function>([<input-type-1>, ...])[:(<output-type-1,...)]
77
- *
78
- * A few examples for a function called `example`:
79
- *
80
- * - No inputs or outputs: `example()`
81
- * - One input and output: `example(uint256):(bool)`
82
- * - Multiple inputs and outputs: `example(uint256,(string,bytes32)):(bool,uint256)`
83
- */
84
- functionSignature(fn: immutable.Map<any, any>) {
85
- const inputs = fn.get('inputs', []).map(buildSignatureParameter).join(',');
86
- const outputs = fn.get('outputs', []).map(buildSignatureParameter).join(',');
87
- return `${fn.get('name')}(${inputs})${outputs.length > 0 ? `:(${outputs})` : ''}`;
88
- }
89
-
90
- oldEventSignatures() {
91
- return this.data
92
- .filter((entry: any) => entry.get('type') === 'event')
93
- .map(ABI.oldEventSignature);
94
- }
95
-
96
- eventSignatures() {
97
- return this.data.filter((entry: any) => entry.get('type') === 'event').map(ABI.eventSignature);
98
- }
99
-
100
- callFunctions() {
101
- // An entry is a function if its type is not set or if it is one of
102
- // 'constructor', 'function' or 'fallback'
103
- const functionTypes = immutable.Set(['constructor', 'function', 'fallback']);
104
- const functions = this.data.filter(
105
- (entry: any) => !entry.has('type') || functionTypes.includes(entry.get('type')),
106
- );
107
-
108
- // A function is a call function if it is nonpayable, payable or
109
- // not constant
110
- const mutabilityTypes = immutable.Set(['nonpayable', 'payable']);
111
- return functions.filter(
112
- (entry: any) =>
113
- mutabilityTypes.includes(entry.get('stateMutability')) || entry.get('constant') === false,
114
- );
115
- }
116
-
117
- callFunctionSignatures() {
118
- return this.callFunctions()
119
- .filter((entry: any) => entry.get('type') !== 'constructor')
120
- .map((entry: any) => {
121
- const name = entry.get('name', '<default>');
122
- const inputs = entry
123
- .get('inputs', immutable.List())
124
- .map((input: any) => buildSignatureParameter(input));
125
-
126
- return `${name}(${inputs.join(',')})`;
127
- });
128
- }
129
-
130
- static normalized(json: any) {
131
- if (Array.isArray(json)) {
132
- return json;
133
- }
134
- if (json.abi !== undefined) {
135
- return json.abi;
136
- }
137
- if (json.compilerOutput?.abi) {
138
- return json.compilerOutput.abi;
139
- }
140
- return undefined;
141
- }
142
-
143
- static load(name: string, file: string) {
144
- const data = JSON.parse(fs.readFileSync(file).toString());
145
- const abi = ABI.normalized(data);
146
-
147
- if (abi === null || abi === undefined) {
148
- throw Error(`No valid ABI in file: ${path.relative(process.cwd(), file)}`);
149
- }
150
-
151
- return new ABI(name, file, immutable.fromJS(abi));
152
- }
153
- }
@@ -1,330 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import immutable from 'immutable';
4
- import * as ts from '../../../codegen/typescript';
5
- import ABI from '../abi';
6
- import AbiCodeGenerator from './abi';
7
-
8
- let tempdir: string;
9
- let abi: ABI;
10
- let generatedTypes: any[];
11
-
12
- describe('ABI code generation', () => {
13
- beforeAll(async () => {
14
- tempdir = await fs.mkdtemp('abi-codegen');
15
-
16
- try {
17
- const filename = path.join(tempdir, 'ABI.json');
18
- await fs.writeFile(
19
- filename,
20
- JSON.stringify([
21
- {
22
- constant: true,
23
- inputs: [],
24
- name: 'read',
25
- outputs: [{ name: '', type: 'bytes32' }],
26
- payable: false,
27
- type: 'function',
28
- },
29
- {
30
- constant: true,
31
- inputs: [
32
- {
33
- name: 'proposalId',
34
- type: 'uint256',
35
- },
36
- {
37
- components: [
38
- {
39
- name: 'foo',
40
- type: 'uint8',
41
- },
42
- {
43
- name: 'bar',
44
- type: 'tuple',
45
- components: [{ name: 'baz', type: 'address' }],
46
- },
47
- ],
48
- name: '',
49
- type: 'tuple',
50
- },
51
- ],
52
- name: 'getProposal',
53
- outputs: [
54
- {
55
- components: [
56
- {
57
- name: 'result',
58
- type: 'uint8',
59
- },
60
- {
61
- name: 'target',
62
- type: 'address',
63
- },
64
- {
65
- name: 'data',
66
- type: 'bytes',
67
- },
68
- {
69
- name: 'proposer',
70
- type: 'address',
71
- },
72
- {
73
- name: 'feeRecipient',
74
- type: 'address',
75
- },
76
- {
77
- name: 'fee',
78
- type: 'uint256',
79
- },
80
- {
81
- name: 'startTime',
82
- type: 'uint256',
83
- },
84
- {
85
- name: 'yesCount',
86
- type: 'uint256',
87
- },
88
- {
89
- name: 'noCount',
90
- type: 'uint256',
91
- },
92
- ],
93
- name: '',
94
- type: 'tuple',
95
- },
96
- ],
97
- payable: false,
98
- stateMutability: 'view',
99
- type: 'function',
100
- },
101
- {
102
- type: 'function',
103
- stateMutability: 'view',
104
- payable: 'false',
105
- name: 'getProposals',
106
- outputs: [
107
- {
108
- type: 'uint256',
109
- name: 'size',
110
- },
111
- {
112
- type: 'tuple[]',
113
- components: [
114
- { name: 'first', type: 'uint256' },
115
- { name: 'second', type: 'string' },
116
- ],
117
- },
118
- ],
119
- },
120
- {
121
- type: 'function',
122
- stateMutability: 'view',
123
- name: 'overloaded',
124
- inputs: [
125
- {
126
- type: 'string',
127
- },
128
- ],
129
- outputs: [
130
- {
131
- type: 'string',
132
- },
133
- ],
134
- },
135
- {
136
- type: 'function',
137
- stateMutability: 'view',
138
- name: 'overloaded',
139
- inputs: [
140
- {
141
- type: 'uint256',
142
- },
143
- ],
144
- outputs: [
145
- {
146
- type: 'string',
147
- },
148
- ],
149
- },
150
- {
151
- type: 'function',
152
- stateMutability: 'view',
153
- name: 'overloaded',
154
- inputs: [
155
- {
156
- type: 'bytes32',
157
- },
158
- ],
159
- outputs: [
160
- {
161
- type: 'string',
162
- },
163
- ],
164
- },
165
- ]),
166
- 'utf-8',
167
- );
168
- abi = ABI.load('Contract', filename);
169
- const codegen = new AbiCodeGenerator(abi);
170
- generatedTypes = codegen.generateTypes();
171
- } finally {
172
- await fs.remove(tempdir);
173
- }
174
- });
175
-
176
- afterAll(async () => {
177
- await fs.remove(tempdir);
178
- });
179
-
180
- describe('Generated types', () => {
181
- test('All expected types are generated', () => {
182
- expect(generatedTypes.map(type => type.name)).toEqual([
183
- 'Contract__getProposalResultValue0Struct',
184
- 'Contract__getProposalInputParam1Struct',
185
- 'Contract__getProposalInputParam1BarStruct',
186
- 'Contract__getProposalsResultValue1Struct',
187
- 'Contract__getProposalsResult',
188
- 'Contract',
189
- ]);
190
- });
191
- });
192
-
193
- describe('Contract class', () => {
194
- test('Exists', () => {
195
- expect(generatedTypes.find(type => type.name === 'Contract')).toBeDefined();
196
- });
197
-
198
- test('Has methods', () => {
199
- const contract = generatedTypes.find(type => type.name === 'Contract');
200
- expect(contract.methods).toBeInstanceOf(Array);
201
- });
202
-
203
- test('Has `bind` method', () => {
204
- const contract = generatedTypes.find(type => type.name === 'Contract');
205
- expect(contract.methods.find((method: any) => method.name === 'bind')).toBeDefined();
206
- });
207
-
208
- test('Has methods for all callable functions', () => {
209
- const contract = generatedTypes.find(type => type.name === 'Contract');
210
- expect(contract.methods.map((method: any) => method.name)).toContain('getProposal');
211
- });
212
- });
213
-
214
- describe('Methods for callable functions', () => {
215
- test('Have correct parameters', () => {
216
- const contract = generatedTypes.find(type => type.name === 'Contract');
217
- expect(contract.methods.map((method: any) => [method.name, method.params])).toEqual([
218
- ['bind', immutable.List([ts.param('address', 'Address')])],
219
- ['read', immutable.List()],
220
- ['try_read', immutable.List()],
221
- [
222
- 'getProposal',
223
- immutable.List([
224
- ts.param('proposalId', 'BigInt'),
225
- ts.param('param1', 'Contract__getProposalInputParam1Struct'),
226
- ]),
227
- ],
228
- [
229
- 'try_getProposal',
230
- immutable.List([
231
- ts.param('proposalId', 'BigInt'),
232
- ts.param('param1', 'Contract__getProposalInputParam1Struct'),
233
- ]),
234
- ],
235
- ['getProposals', immutable.List()],
236
- ['try_getProposals', immutable.List()],
237
- ['overloaded', immutable.List([ts.param('param0', 'string')])],
238
- ['try_overloaded', immutable.List([ts.param('param0', 'string')])],
239
- ['overloaded1', immutable.List([ts.param('param0', 'BigInt')])],
240
- ['try_overloaded1', immutable.List([ts.param('param0', 'BigInt')])],
241
- ['overloaded2', immutable.List([ts.param('param0', 'Bytes')])],
242
- ['try_overloaded2', immutable.List([ts.param('param0', 'Bytes')])],
243
- ]);
244
- });
245
-
246
- test('Have correct return types', () => {
247
- const contract = generatedTypes.find(type => type.name === 'Contract');
248
- expect(contract.methods.map((method: any) => [method.name, method.returnType])).toEqual([
249
- ['bind', ts.namedType('Contract')],
250
- ['read', ts.namedType('Bytes')],
251
- ['try_read', 'ethereum.CallResult<Bytes>'],
252
- ['getProposal', ts.namedType('Contract__getProposalResultValue0Struct')],
253
- ['try_getProposal', 'ethereum.CallResult<Contract__getProposalResultValue0Struct>'],
254
- ['getProposals', ts.namedType('Contract__getProposalsResult')],
255
- ['try_getProposals', 'ethereum.CallResult<Contract__getProposalsResult>'],
256
- ['overloaded', ts.namedType('string')],
257
- ['try_overloaded', 'ethereum.CallResult<string>'],
258
- ['overloaded1', ts.namedType('string')],
259
- ['try_overloaded1', 'ethereum.CallResult<string>'],
260
- ['overloaded2', ts.namedType('string')],
261
- ['try_overloaded2', 'ethereum.CallResult<string>'],
262
- ]);
263
- });
264
- });
265
-
266
- describe('Tuples', () => {
267
- test('Tuple types exist for function parameters', () => {
268
- let tupleType = generatedTypes.find(
269
- type => type.name === 'Contract__getProposalInputParam1Struct',
270
- );
271
-
272
- // Verify that the tuple type has methods
273
- expect(tupleType.methods).toBeDefined();
274
-
275
- // Verify that the tuple type has getters for all tuple fields with
276
- // the right return types
277
- expect(tupleType.methods.map((method: any) => [method.name, method.returnType])).toEqual([
278
- ['get foo', 'i32'],
279
- ['get bar', 'Contract__getProposalInputParam1BarStruct'],
280
- ]);
281
-
282
- // Inner tuple:
283
- tupleType = generatedTypes.find(
284
- type => type.name === 'Contract__getProposalInputParam1BarStruct',
285
- );
286
-
287
- // Verify that the tuple type has methods
288
- expect(tupleType.methods).toBeDefined();
289
-
290
- // Verify that the tuple type has getters for all tuple fields with
291
- // the right return types
292
- expect(tupleType.methods.map((method: any) => [method.name, method.returnType])).toEqual([
293
- ['get baz', 'Address'],
294
- ]);
295
- });
296
-
297
- test('Tuple types exist for function return values', () => {
298
- const tupleType = generatedTypes.find(
299
- type => type.name === 'Contract__getProposalResultValue0Struct',
300
- );
301
-
302
- // Verify that the tuple type has methods
303
- expect(tupleType.methods).toBeDefined();
304
-
305
- // Verify that the tuple type has getters for all tuple fields with
306
- // the right return types
307
- expect(tupleType.methods.map((method: any) => [method.name, method.returnType])).toEqual([
308
- ['get result', 'i32'],
309
- ['get target', 'Address'],
310
- ['get data', 'Bytes'],
311
- ['get proposer', 'Address'],
312
- ['get feeRecipient', 'Address'],
313
- ['get fee', 'BigInt'],
314
- ['get startTime', 'BigInt'],
315
- ['get yesCount', 'BigInt'],
316
- ['get noCount', 'BigInt'],
317
- ]);
318
- });
319
-
320
- test('Function bodies are generated correctly for tuple arrays', () => {
321
- const contract = generatedTypes.find(type => type.name === 'Contract');
322
- const getter = contract.methods.find((method: any) => method.name === 'getProposals');
323
-
324
- expect(getter.body).not.toContain('toTupleArray<undefined>');
325
- expect(getter.body).toContain(
326
- 'result[1].toTupleArray<Contract__getProposalsResultValue1Struct>()',
327
- );
328
- });
329
- });
330
- });