@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,41 +0,0 @@
1
- import immutable from 'immutable';
2
- import * as tsCodegen from '../../../codegen/typescript';
3
-
4
- export default class EthereumTemplateCodeGen {
5
- constructor(public template: immutable.Map<any, any>) {
6
- this.template = template;
7
- }
8
-
9
- generateModuleImports() {
10
- return ['Address'];
11
- }
12
-
13
- generateCreateMethod() {
14
- const name = this.template.get('name');
15
-
16
- return tsCodegen.staticMethod(
17
- 'create',
18
- [tsCodegen.param('address', tsCodegen.namedType('Address'))],
19
- tsCodegen.namedType('void'),
20
- `
21
- DataSourceTemplate.create('${name}', [address.toHex()])
22
- `,
23
- );
24
- }
25
-
26
- generateCreateWithContextMethod() {
27
- const name = this.template.get('name');
28
-
29
- return tsCodegen.staticMethod(
30
- 'createWithContext',
31
- [
32
- tsCodegen.param('address', tsCodegen.namedType('Address')),
33
- tsCodegen.param('context', tsCodegen.namedType('DataSourceContext')),
34
- ],
35
- tsCodegen.namedType('void'),
36
- `
37
- DataSourceTemplate.createWithContext('${name}', [address.toHex()], context)
38
- `,
39
- );
40
- }
41
- }
@@ -1,24 +0,0 @@
1
- import { Contract } from '../contract';
2
-
3
- export default class EthereumContract implements Contract {
4
- static identifierName() {
5
- return 'address';
6
- }
7
-
8
- constructor(private address: string) {
9
- this.address = address;
10
- }
11
-
12
- validate() {
13
- const pattern = /^(0x)?[0-9a-fA-F]{40}$/;
14
-
15
- const errorMessage = "Must be 40 hexadecimal characters, with an optional '0x' prefix.";
16
-
17
- const valid = pattern.test(this.address);
18
-
19
- return {
20
- valid,
21
- error: valid ? null : errorMessage,
22
- };
23
- }
24
- }
@@ -1,28 +0,0 @@
1
- import { strings } from 'gluegun';
2
- import { abiEvents } from '../../../scaffold/schema';
3
- import ABI from '../abi';
4
-
5
- export const source = ({ contract, contractName }: { contract: string; contractName: string }) => `
6
- address: '${contract}'
7
- abi: ${contractName}`;
8
-
9
- export const mapping = ({ abi, contractName }: { abi: ABI; contractName: string }) => `
10
- kind: ethereum/events
11
- apiVersion: 0.0.7
12
- language: wasm/assemblyscript
13
- entities:
14
- ${abiEvents(abi)
15
- .map(event => `- ${event.get('_alias')}`)
16
- .join('\n ')}
17
- abis:
18
- - name: ${contractName}
19
- file: ./abis/${contractName}.json
20
- eventHandlers:
21
- ${abiEvents(abi)
22
- .map(
23
- event => `
24
- - event: ${ABI.eventSignature(event)}
25
- handler: handle${event.get('_alias')}`,
26
- )
27
- .join('')}
28
- file: ./src/${strings.kebabCase(contractName)}.ts`;
@@ -1,189 +0,0 @@
1
- import immutable from 'immutable';
2
- import * as DataSourcesExtractor from '../../command-helpers/data-sources';
3
- import { Subgraph, SubgraphOptions } from '../subgraph';
4
- import ABI from './abi';
5
-
6
- export default class EthereumSubgraph implements Subgraph {
7
- public manifest: SubgraphOptions['manifest'];
8
- public resolveFile: SubgraphOptions['resolveFile'];
9
- public protocol: SubgraphOptions['protocol'];
10
-
11
- constructor(options: SubgraphOptions) {
12
- this.manifest = options.manifest;
13
- this.resolveFile = options.resolveFile;
14
- this.protocol = options.protocol;
15
- }
16
-
17
- validateManifest() {
18
- return this.validateAbis().concat(this.validateEvents()).concat(this.validateCallFunctions());
19
- }
20
-
21
- validateAbis() {
22
- const dataSourcesAndTemplates = DataSourcesExtractor.fromManifest(this.manifest, this.protocol);
23
-
24
- return dataSourcesAndTemplates.reduce(
25
- (errors: any[], dataSourceOrTemplate: any) =>
26
- errors.concat(
27
- this.validateDataSourceAbis(
28
- dataSourceOrTemplate.get('dataSource'),
29
- dataSourceOrTemplate.get('path'),
30
- ),
31
- ),
32
- immutable.List(),
33
- );
34
- }
35
-
36
- validateDataSourceAbis(dataSource: any, path: string) {
37
- // Validate that the the "source > abi" reference of all data sources
38
- // points to an existing ABI in the data source ABIs
39
- const abiName = dataSource.getIn(['source', 'abi']);
40
- const abiNames = dataSource.getIn(['mapping', 'abis']).map((abi: any) => abi.get('name'));
41
- const nameErrors = abiNames.includes(abiName)
42
- ? immutable.List()
43
- : immutable.fromJS([
44
- {
45
- path: [...path, 'source', 'abi'],
46
- message: `\
47
- ABI name '${abiName}' not found in mapping > abis.
48
- Available ABIs:
49
- ${abiNames
50
- .sort()
51
- .map((name: string) => `- ${name}`)
52
- .join('\n')}`,
53
- },
54
- ]);
55
-
56
- // Validate that all ABI files are valid
57
- const fileErrors = dataSource
58
- .getIn(['mapping', 'abis'])
59
- .reduce((errors: any[], abi: any, abiIndex: number) => {
60
- try {
61
- ABI.load(abi.get('name'), this.resolveFile(abi.get('file')));
62
- return errors;
63
- } catch (e) {
64
- return errors.push(
65
- immutable.fromJS({
66
- path: [...path, 'mapping', 'abis', abiIndex, 'file'],
67
- message: e.message,
68
- }),
69
- );
70
- }
71
- }, immutable.List());
72
-
73
- return nameErrors.concat(fileErrors);
74
- }
75
-
76
- validateEvents() {
77
- const dataSourcesAndTemplates = DataSourcesExtractor.fromManifest(this.manifest, this.protocol);
78
-
79
- return dataSourcesAndTemplates.reduce((errors: any[], dataSourceOrTemplate: any) => {
80
- return errors.concat(
81
- this.validateDataSourceEvents(
82
- dataSourceOrTemplate.get('dataSource'),
83
- dataSourceOrTemplate.get('path'),
84
- ),
85
- );
86
- }, immutable.List());
87
- }
88
-
89
- validateDataSourceEvents(dataSource: any, path: string) {
90
- let abi: ABI;
91
- try {
92
- // Resolve the source ABI name into a real ABI object
93
- const abiName = dataSource.getIn(['source', 'abi']);
94
- const abiEntry = dataSource
95
- .getIn(['mapping', 'abis'])
96
- .find((abi: any) => abi.get('name') === abiName);
97
- abi = ABI.load(abiEntry.get('name'), this.resolveFile(abiEntry.get('file')));
98
- } catch (_) {
99
- // Ignore errors silently; we can't really say anything about
100
- // the events if the ABI can't even be loaded
101
- return immutable.List();
102
- }
103
-
104
- // Obtain event signatures from the mapping
105
- const manifestEvents = dataSource
106
- .getIn(['mapping', 'eventHandlers'], immutable.List())
107
- .map((handler: any) => handler.get('event'));
108
-
109
- // Obtain event signatures from the ABI
110
- const abiEvents = abi.eventSignatures();
111
-
112
- // Add errors for every manifest event signature that is not
113
- // present in the ABI
114
- return manifestEvents.reduce(
115
- (errors: any[], manifestEvent: any, index: number) =>
116
- abiEvents.includes(manifestEvent)
117
- ? errors
118
- : errors.push(
119
- immutable.fromJS({
120
- path: [...path, 'eventHandlers', index],
121
- message: `\
122
- Event with signature '${manifestEvent}' not present in ABI '${abi.name}'.
123
- Available events:
124
- ${abiEvents
125
- .sort()
126
- .map(event => `- ${event}`)
127
- .join('\n')}`,
128
- }),
129
- ),
130
- immutable.List(),
131
- );
132
- }
133
-
134
- validateCallFunctions() {
135
- return this.manifest
136
- .get('dataSources')
137
- .filter((dataSource: any) => this.protocol.isValidKindName(dataSource.get('kind')))
138
- .reduce((errors: any[], dataSource: any, dataSourceIndex: string) => {
139
- const path = ['dataSources', dataSourceIndex, 'callHandlers'];
140
-
141
- let abi: ABI;
142
- try {
143
- // Resolve the source ABI name into a real ABI object
144
- const abiName = dataSource.getIn(['source', 'abi']);
145
- const abiEntry = dataSource
146
- .getIn(['mapping', 'abis'])
147
- .find((abi: any) => abi.get('name') === abiName);
148
- abi = ABI.load(abiEntry.get('name'), this.resolveFile(abiEntry.get('file')));
149
- } catch (e) {
150
- // Ignore errors silently; we can't really say anything about
151
- // the call functions if the ABI can't even be loaded
152
- return errors;
153
- }
154
-
155
- // Obtain event signatures from the mapping
156
- const manifestFunctions = dataSource
157
- .getIn(['mapping', 'callHandlers'], immutable.List())
158
- .map((handler: any) => handler.get('function'));
159
-
160
- // Obtain event signatures from the ABI
161
- const abiFunctions = abi.callFunctionSignatures();
162
-
163
- // Add errors for every manifest event signature that is not
164
- // present in the ABI
165
- return manifestFunctions.reduce(
166
- (errors: any[], manifestFunction: any, index: number) =>
167
- abiFunctions.includes(manifestFunction)
168
- ? errors
169
- : errors.push(
170
- immutable.fromJS({
171
- path: [...path, index],
172
- message: `\
173
- Call function with signature '${manifestFunction}' not present in ABI '${abi.name}'.
174
- Available call functions:
175
- ${abiFunctions
176
- .sort()
177
- .map(tx => `- ${tx}`)
178
- .join('\n')}`,
179
- }),
180
- ),
181
- errors,
182
- );
183
- }, immutable.List());
184
- }
185
-
186
- handlerTypes() {
187
- return immutable.List(['blockHandlers', 'callHandlers', 'eventHandlers']);
188
- }
189
- }
@@ -1,191 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import immutable from 'immutable';
4
- import prettier from 'prettier';
5
- import { GENERATED_FILE_NOTE } from '../../codegen/typescript';
6
- import { displayPath } from '../../command-helpers/fs';
7
- import { Spinner, step, withSpinner } from '../../command-helpers/spinner';
8
- import { TypeGeneratorOptions } from '../../type-generator';
9
- import ABI from './abi';
10
-
11
- export default class EthereumTypeGenerator {
12
- private sourceDir: TypeGeneratorOptions['sourceDir'];
13
- private outputDir: TypeGeneratorOptions['outputDir'];
14
-
15
- constructor(options: TypeGeneratorOptions) {
16
- this.sourceDir = options.sourceDir;
17
- this.outputDir = options.outputDir;
18
- }
19
-
20
- async loadABIs(subgraph: immutable.Map<any, any>) {
21
- return await withSpinner(
22
- 'Load contract ABIs',
23
- 'Failed to load contract ABIs',
24
- `Warnings while loading contract ABIs`,
25
- async spinner => {
26
- try {
27
- return subgraph
28
- .get('dataSources')
29
- .reduce(
30
- (abis: any[], dataSource: any) =>
31
- dataSource
32
- .getIn(['mapping', 'abis'])
33
- .reduce(
34
- (abis: any[], abi: any) =>
35
- abis.push(
36
- this._loadABI(dataSource, abi.get('name'), abi.get('file'), spinner),
37
- ),
38
- abis,
39
- ),
40
- immutable.List(),
41
- );
42
- } catch (e) {
43
- throw Error(`Failed to load contract ABIs: ${e.message}`);
44
- }
45
- },
46
- );
47
- }
48
-
49
- _loadABI(dataSource: any, name: string, maybeRelativePath: string, spinner: Spinner) {
50
- try {
51
- if (this.sourceDir) {
52
- const absolutePath = path.resolve(this.sourceDir, maybeRelativePath);
53
- step(spinner, `Load contract ABI from`, displayPath(absolutePath));
54
- return { dataSource, abi: ABI.load(name, absolutePath) };
55
- }
56
- return { dataSource, abi: ABI.load(name, maybeRelativePath) };
57
- } catch (e) {
58
- throw Error(`Failed to load contract ABI: ${e.message}`);
59
- }
60
- }
61
-
62
- async loadDataSourceTemplateABIs(subgraph: immutable.Map<any, any>) {
63
- return await withSpinner(
64
- `Load data source template ABIs`,
65
- `Failed to load data source template ABIs`,
66
- `Warnings while loading data source template ABIs`,
67
- async spinner => {
68
- const abis = [];
69
- for (const template of subgraph.get('templates', immutable.List())) {
70
- for (const abi of template.getIn(['mapping', 'abis'])) {
71
- abis.push(
72
- this._loadDataSourceTemplateABI(template, abi.get('name'), abi.get('file'), spinner),
73
- );
74
- }
75
- }
76
- return abis;
77
- },
78
- );
79
- }
80
-
81
- _loadDataSourceTemplateABI(
82
- template: any,
83
- name: string,
84
- maybeRelativePath: string,
85
- spinner: Spinner,
86
- ) {
87
- try {
88
- if (this.sourceDir) {
89
- const absolutePath = path.resolve(this.sourceDir, maybeRelativePath);
90
- step(spinner, `Load data source template ABI from`, displayPath(absolutePath));
91
- return { template, abi: ABI.load(name, absolutePath) };
92
- }
93
- return { template, abi: ABI.load(name, maybeRelativePath) };
94
- } catch (e) {
95
- throw Error(`Failed to load data source template ABI: ${e.message}`);
96
- }
97
- }
98
-
99
- generateTypesForABIs(abis: any[]) {
100
- return withSpinner(
101
- `Generate types for contract ABIs`,
102
- `Failed to generate types for contract ABIs`,
103
- `Warnings while generating types for contract ABIs`,
104
- async spinner => {
105
- return await Promise.all(
106
- abis.map(async abi => await this._generateTypesForABI(abi, spinner)),
107
- );
108
- },
109
- );
110
- }
111
-
112
- async _generateTypesForABI(abi: any, spinner: Spinner) {
113
- try {
114
- step(
115
- spinner,
116
- `Generate types for contract ABI:`,
117
- `${abi.abi.name} (${displayPath(abi.abi.file)})`,
118
- );
119
-
120
- const codeGenerator = abi.abi.codeGenerator();
121
- const code = prettier.format(
122
- [
123
- GENERATED_FILE_NOTE,
124
- ...codeGenerator.generateModuleImports(),
125
- ...codeGenerator.generateTypes(),
126
- ].join('\n'),
127
- {
128
- parser: 'typescript',
129
- },
130
- );
131
-
132
- const outputFile = path.join(
133
- this.outputDir,
134
- abi.dataSource.get('name'),
135
- `${abi.abi.name}.ts`,
136
- );
137
- step(spinner, `Write types to`, displayPath(outputFile));
138
- await fs.mkdirs(path.dirname(outputFile));
139
- await fs.writeFile(outputFile, code);
140
- } catch (e) {
141
- throw Error(`Failed to generate types for contract ABI: ${e.message}`);
142
- }
143
- }
144
-
145
- async generateTypesForDataSourceTemplateABIs(abis: any[]) {
146
- return await withSpinner(
147
- `Generate types for data source template ABIs`,
148
- `Failed to generate types for data source template ABIs`,
149
- `Warnings while generating types for data source template ABIs`,
150
- async spinner => {
151
- return await Promise.all(
152
- abis.map(async abi => await this._generateTypesForDataSourceTemplateABI(abi, spinner)),
153
- );
154
- },
155
- );
156
- }
157
-
158
- async _generateTypesForDataSourceTemplateABI(abi: any, spinner: Spinner) {
159
- try {
160
- step(
161
- spinner,
162
- `Generate types for data source template ABI:`,
163
- `${abi.template.get('name')} > ${abi.abi.name} (${displayPath(abi.abi.file)})`,
164
- );
165
-
166
- const codeGenerator = abi.abi.codeGenerator();
167
- const code = prettier.format(
168
- [
169
- GENERATED_FILE_NOTE,
170
- ...codeGenerator.generateModuleImports(),
171
- ...codeGenerator.generateTypes(),
172
- ].join('\n'),
173
- {
174
- parser: 'typescript',
175
- },
176
- );
177
-
178
- const outputFile = path.join(
179
- this.outputDir,
180
- 'templates',
181
- abi.template.get('name'),
182
- `${abi.abi.name}.ts`,
183
- );
184
- step(spinner, `Write types to`, displayPath(outputFile));
185
- await fs.mkdirs(path.dirname(outputFile));
186
- await fs.writeFile(outputFile, code);
187
- } catch (e) {
188
- throw Error(`Failed to generate types for data source template ABI: ${e.message}`);
189
- }
190
- }
191
- }