@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
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const path_1 = __importDefault(require("path"));
30
+ const fs_extra_1 = __importDefault(require("fs-extra"));
31
+ const immutable_1 = __importDefault(require("immutable"));
32
+ const ts = __importStar(require("../../../codegen/typescript"));
33
+ const abi_1 = __importDefault(require("../abi"));
34
+ const abi_2 = __importDefault(require("./abi"));
35
+ let tempdir;
36
+ let abi;
37
+ let generatedTypes;
38
+ describe('ABI code generation', () => {
39
+ beforeAll(async () => {
40
+ tempdir = await fs_extra_1.default.mkdtemp('abi-codegen');
41
+ try {
42
+ const filename = path_1.default.join(tempdir, 'ABI.json');
43
+ await fs_extra_1.default.writeFile(filename, JSON.stringify([
44
+ {
45
+ constant: true,
46
+ inputs: [],
47
+ name: 'read',
48
+ outputs: [{ name: '', type: 'bytes32' }],
49
+ payable: false,
50
+ type: 'function',
51
+ },
52
+ {
53
+ constant: true,
54
+ inputs: [
55
+ {
56
+ name: 'proposalId',
57
+ type: 'uint256',
58
+ },
59
+ {
60
+ components: [
61
+ {
62
+ name: 'foo',
63
+ type: 'uint8',
64
+ },
65
+ {
66
+ name: 'bar',
67
+ type: 'tuple',
68
+ components: [{ name: 'baz', type: 'address' }],
69
+ },
70
+ ],
71
+ name: '',
72
+ type: 'tuple',
73
+ },
74
+ ],
75
+ name: 'getProposal',
76
+ outputs: [
77
+ {
78
+ components: [
79
+ {
80
+ name: 'result',
81
+ type: 'uint8',
82
+ },
83
+ {
84
+ name: 'target',
85
+ type: 'address',
86
+ },
87
+ {
88
+ name: 'data',
89
+ type: 'bytes',
90
+ },
91
+ {
92
+ name: 'proposer',
93
+ type: 'address',
94
+ },
95
+ {
96
+ name: 'feeRecipient',
97
+ type: 'address',
98
+ },
99
+ {
100
+ name: 'fee',
101
+ type: 'uint256',
102
+ },
103
+ {
104
+ name: 'startTime',
105
+ type: 'uint256',
106
+ },
107
+ {
108
+ name: 'yesCount',
109
+ type: 'uint256',
110
+ },
111
+ {
112
+ name: 'noCount',
113
+ type: 'uint256',
114
+ },
115
+ ],
116
+ name: '',
117
+ type: 'tuple',
118
+ },
119
+ ],
120
+ payable: false,
121
+ stateMutability: 'view',
122
+ type: 'function',
123
+ },
124
+ {
125
+ type: 'function',
126
+ stateMutability: 'view',
127
+ payable: 'false',
128
+ name: 'getProposals',
129
+ outputs: [
130
+ {
131
+ type: 'uint256',
132
+ name: 'size',
133
+ },
134
+ {
135
+ type: 'tuple[]',
136
+ components: [
137
+ { name: 'first', type: 'uint256' },
138
+ { name: 'second', type: 'string' },
139
+ ],
140
+ },
141
+ ],
142
+ },
143
+ {
144
+ type: 'function',
145
+ stateMutability: 'view',
146
+ name: 'overloaded',
147
+ inputs: [
148
+ {
149
+ type: 'string',
150
+ },
151
+ ],
152
+ outputs: [
153
+ {
154
+ type: 'string',
155
+ },
156
+ ],
157
+ },
158
+ {
159
+ type: 'function',
160
+ stateMutability: 'view',
161
+ name: 'overloaded',
162
+ inputs: [
163
+ {
164
+ type: 'uint256',
165
+ },
166
+ ],
167
+ outputs: [
168
+ {
169
+ type: 'string',
170
+ },
171
+ ],
172
+ },
173
+ {
174
+ type: 'function',
175
+ stateMutability: 'view',
176
+ name: 'overloaded',
177
+ inputs: [
178
+ {
179
+ type: 'bytes32',
180
+ },
181
+ ],
182
+ outputs: [
183
+ {
184
+ type: 'string',
185
+ },
186
+ ],
187
+ },
188
+ ]), 'utf-8');
189
+ abi = abi_1.default.load('Contract', filename);
190
+ const codegen = new abi_2.default(abi);
191
+ generatedTypes = codegen.generateTypes();
192
+ }
193
+ finally {
194
+ await fs_extra_1.default.remove(tempdir);
195
+ }
196
+ });
197
+ afterAll(async () => {
198
+ await fs_extra_1.default.remove(tempdir);
199
+ });
200
+ describe('Generated types', () => {
201
+ test('All expected types are generated', () => {
202
+ expect(generatedTypes.map(type => type.name)).toEqual([
203
+ 'Contract__getProposalResultValue0Struct',
204
+ 'Contract__getProposalInputParam1Struct',
205
+ 'Contract__getProposalInputParam1BarStruct',
206
+ 'Contract__getProposalsResultValue1Struct',
207
+ 'Contract__getProposalsResult',
208
+ 'Contract',
209
+ ]);
210
+ });
211
+ });
212
+ describe('Contract class', () => {
213
+ test('Exists', () => {
214
+ expect(generatedTypes.find(type => type.name === 'Contract')).toBeDefined();
215
+ });
216
+ test('Has methods', () => {
217
+ const contract = generatedTypes.find(type => type.name === 'Contract');
218
+ expect(contract.methods).toBeInstanceOf(Array);
219
+ });
220
+ test('Has `bind` method', () => {
221
+ const contract = generatedTypes.find(type => type.name === 'Contract');
222
+ expect(contract.methods.find((method) => method.name === 'bind')).toBeDefined();
223
+ });
224
+ test('Has methods for all callable functions', () => {
225
+ const contract = generatedTypes.find(type => type.name === 'Contract');
226
+ expect(contract.methods.map((method) => method.name)).toContain('getProposal');
227
+ });
228
+ });
229
+ describe('Methods for callable functions', () => {
230
+ test('Have correct parameters', () => {
231
+ const contract = generatedTypes.find(type => type.name === 'Contract');
232
+ expect(contract.methods.map((method) => [method.name, method.params])).toEqual([
233
+ ['bind', immutable_1.default.List([ts.param('address', 'Address')])],
234
+ ['read', immutable_1.default.List()],
235
+ ['try_read', immutable_1.default.List()],
236
+ [
237
+ 'getProposal',
238
+ immutable_1.default.List([
239
+ ts.param('proposalId', 'BigInt'),
240
+ ts.param('param1', 'Contract__getProposalInputParam1Struct'),
241
+ ]),
242
+ ],
243
+ [
244
+ 'try_getProposal',
245
+ immutable_1.default.List([
246
+ ts.param('proposalId', 'BigInt'),
247
+ ts.param('param1', 'Contract__getProposalInputParam1Struct'),
248
+ ]),
249
+ ],
250
+ ['getProposals', immutable_1.default.List()],
251
+ ['try_getProposals', immutable_1.default.List()],
252
+ ['overloaded', immutable_1.default.List([ts.param('param0', 'string')])],
253
+ ['try_overloaded', immutable_1.default.List([ts.param('param0', 'string')])],
254
+ ['overloaded1', immutable_1.default.List([ts.param('param0', 'BigInt')])],
255
+ ['try_overloaded1', immutable_1.default.List([ts.param('param0', 'BigInt')])],
256
+ ['overloaded2', immutable_1.default.List([ts.param('param0', 'Bytes')])],
257
+ ['try_overloaded2', immutable_1.default.List([ts.param('param0', 'Bytes')])],
258
+ ]);
259
+ });
260
+ test('Have correct return types', () => {
261
+ const contract = generatedTypes.find(type => type.name === 'Contract');
262
+ expect(contract.methods.map((method) => [method.name, method.returnType])).toEqual([
263
+ ['bind', ts.namedType('Contract')],
264
+ ['read', ts.namedType('Bytes')],
265
+ ['try_read', 'ethereum.CallResult<Bytes>'],
266
+ ['getProposal', ts.namedType('Contract__getProposalResultValue0Struct')],
267
+ ['try_getProposal', 'ethereum.CallResult<Contract__getProposalResultValue0Struct>'],
268
+ ['getProposals', ts.namedType('Contract__getProposalsResult')],
269
+ ['try_getProposals', 'ethereum.CallResult<Contract__getProposalsResult>'],
270
+ ['overloaded', ts.namedType('string')],
271
+ ['try_overloaded', 'ethereum.CallResult<string>'],
272
+ ['overloaded1', ts.namedType('string')],
273
+ ['try_overloaded1', 'ethereum.CallResult<string>'],
274
+ ['overloaded2', ts.namedType('string')],
275
+ ['try_overloaded2', 'ethereum.CallResult<string>'],
276
+ ]);
277
+ });
278
+ });
279
+ describe('Tuples', () => {
280
+ test('Tuple types exist for function parameters', () => {
281
+ let tupleType = generatedTypes.find(type => type.name === 'Contract__getProposalInputParam1Struct');
282
+ // Verify that the tuple type has methods
283
+ expect(tupleType.methods).toBeDefined();
284
+ // Verify that the tuple type has getters for all tuple fields with
285
+ // the right return types
286
+ expect(tupleType.methods.map((method) => [method.name, method.returnType])).toEqual([
287
+ ['get foo', 'i32'],
288
+ ['get bar', 'Contract__getProposalInputParam1BarStruct'],
289
+ ]);
290
+ // Inner tuple:
291
+ tupleType = generatedTypes.find(type => type.name === 'Contract__getProposalInputParam1BarStruct');
292
+ // Verify that the tuple type has methods
293
+ expect(tupleType.methods).toBeDefined();
294
+ // Verify that the tuple type has getters for all tuple fields with
295
+ // the right return types
296
+ expect(tupleType.methods.map((method) => [method.name, method.returnType])).toEqual([
297
+ ['get baz', 'Address'],
298
+ ]);
299
+ });
300
+ test('Tuple types exist for function return values', () => {
301
+ const tupleType = generatedTypes.find(type => type.name === 'Contract__getProposalResultValue0Struct');
302
+ // Verify that the tuple type has methods
303
+ expect(tupleType.methods).toBeDefined();
304
+ // Verify that the tuple type has getters for all tuple fields with
305
+ // the right return types
306
+ expect(tupleType.methods.map((method) => [method.name, method.returnType])).toEqual([
307
+ ['get result', 'i32'],
308
+ ['get target', 'Address'],
309
+ ['get data', 'Bytes'],
310
+ ['get proposer', 'Address'],
311
+ ['get feeRecipient', 'Address'],
312
+ ['get fee', 'BigInt'],
313
+ ['get startTime', 'BigInt'],
314
+ ['get yesCount', 'BigInt'],
315
+ ['get noCount', 'BigInt'],
316
+ ]);
317
+ });
318
+ test('Function bodies are generated correctly for tuple arrays', () => {
319
+ const contract = generatedTypes.find(type => type.name === 'Contract');
320
+ const getter = contract.methods.find((method) => method.name === 'getProposals');
321
+ expect(getter.body).not.toContain('toTupleArray<undefined>');
322
+ expect(getter.body).toContain('result[1].toTupleArray<Contract__getProposalsResultValue1Struct>()');
323
+ });
324
+ });
325
+ });
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const tsCodegen = __importStar(require("../../../codegen/typescript"));
27
+ class EthereumTemplateCodeGen {
28
+ template;
29
+ constructor(template) {
30
+ this.template = template;
31
+ this.template = template;
32
+ }
33
+ generateModuleImports() {
34
+ return ['Address'];
35
+ }
36
+ generateCreateMethod() {
37
+ const name = this.template.get('name');
38
+ return tsCodegen.staticMethod('create', [tsCodegen.param('address', tsCodegen.namedType('Address'))], tsCodegen.namedType('void'), `
39
+ DataSourceTemplate.create('${name}', [address.toHex()])
40
+ `);
41
+ }
42
+ generateCreateWithContextMethod() {
43
+ const name = this.template.get('name');
44
+ return tsCodegen.staticMethod('createWithContext', [
45
+ tsCodegen.param('address', tsCodegen.namedType('Address')),
46
+ tsCodegen.param('context', tsCodegen.namedType('DataSourceContext')),
47
+ ], tsCodegen.namedType('void'), `
48
+ DataSourceTemplate.createWithContext('${name}', [address.toHex()], context)
49
+ `);
50
+ }
51
+ }
52
+ exports.default = EthereumTemplateCodeGen;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class EthereumContract {
4
+ address;
5
+ static identifierName() {
6
+ return 'address';
7
+ }
8
+ constructor(address) {
9
+ this.address = address;
10
+ this.address = address;
11
+ }
12
+ validate() {
13
+ const pattern = /^(0x)?[0-9a-fA-F]{40}$/;
14
+ const errorMessage = "Must be 40 hexadecimal characters, with an optional '0x' prefix.";
15
+ const valid = pattern.test(this.address);
16
+ return {
17
+ valid,
18
+ error: valid ? null : errorMessage,
19
+ };
20
+ }
21
+ }
22
+ exports.default = EthereumContract;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mapping = exports.source = void 0;
7
+ const gluegun_1 = require("gluegun");
8
+ const schema_1 = require("../../../scaffold/schema");
9
+ const abi_1 = __importDefault(require("../abi"));
10
+ const source = ({ contract, contractName }) => `
11
+ address: '${contract}'
12
+ abi: ${contractName}`;
13
+ exports.source = source;
14
+ const mapping = ({ abi, contractName }) => `
15
+ kind: ethereum/events
16
+ apiVersion: 0.0.7
17
+ language: wasm/assemblyscript
18
+ entities:
19
+ ${(0, schema_1.abiEvents)(abi)
20
+ .map(event => `- ${event.get('_alias')}`)
21
+ .join('\n ')}
22
+ abis:
23
+ - name: ${contractName}
24
+ file: ./abis/${contractName}.json
25
+ eventHandlers:
26
+ ${(0, schema_1.abiEvents)(abi)
27
+ .map(event => `
28
+ - event: ${abi_1.default.eventSignature(event)}
29
+ handler: handle${event.get('_alias')}`)
30
+ .join('')}
31
+ file: ./src/${gluegun_1.strings.kebabCase(contractName)}.ts`;
32
+ exports.mapping = mapping;
@@ -1,25 +1,16 @@
1
- import { generateEventFieldAssignments } from '../../../scaffold/mapping';
2
- import ABI from '../abi';
3
-
4
- export const generatePlaceholderHandlers = ({
5
- abi,
6
- events,
7
- contractName,
8
- }: {
9
- abi: ABI;
10
- events: any[];
11
- contractName: string;
12
- }) =>
13
- `
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePlaceholderHandlers = void 0;
4
+ const mapping_1 = require("../../../scaffold/mapping");
5
+ const generatePlaceholderHandlers = ({ abi, events, contractName, }) => `
14
6
  import { BigInt } from '@graphprotocol/graph-ts'
15
7
  import { ${contractName}, ${events.map(event => event._alias)} }
16
8
  from '../generated/${contractName}/${contractName}'
17
9
  import { ExampleEntity } from '../generated/schema'
18
10
 
19
11
  ${events
20
- .map((event, index) =>
21
- index === 0
22
- ? `
12
+ .map((event, index) => index === 0
13
+ ? `
23
14
  export function handle${event._alias}(event: ${event._alias}): void {
24
15
  // Entities can be loaded from the store using a string ID; this ID
25
16
  // needs to be unique across all entities of the same type
@@ -38,7 +29,7 @@ export const generatePlaceholderHandlers = ({
38
29
  entity.count = entity.count + BigInt.fromI32(1)
39
30
 
40
31
  // Entity fields can be set based on event parameters
41
- ${generateEventFieldAssignments(event).slice(0, 2).join('\n')}
32
+ ${(0, mapping_1.generateEventFieldAssignments)(event).slice(0, 2).join('\n')}
42
33
 
43
34
  // Entities can be written to the store with \`.save()\`
44
35
  entity.save()
@@ -58,19 +49,17 @@ export const generatePlaceholderHandlers = ({
58
49
  // The following functions can then be called on this contract to access
59
50
  // state variables and other data:
60
51
  //
61
- // ${
62
- abi.codeGenerator().callableFunctions().isEmpty()
63
- ? 'None'
64
- : abi
65
- .codeGenerator()
66
- .callableFunctions()
67
- .map((fn: any) => `- contract.${fn.get('name')}(...)`)
68
- .join('\n// ')
69
- }
52
+ // ${abi.codeGenerator().callableFunctions().isEmpty()
53
+ ? 'None'
54
+ : abi
55
+ .codeGenerator()
56
+ .callableFunctions()
57
+ .map((fn) => `- contract.${fn.get('name')}(...)`)
58
+ .join('\n// ')}
70
59
  }
71
60
  `
72
- : `
61
+ : `
73
62
  export function handle${event._alias}(event: ${event._alias}): void {}
74
- `,
75
- )
63
+ `)
76
64
  .join('\n')}`;
65
+ exports.generatePlaceholderHandlers = generatePlaceholderHandlers;