@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,460 +0,0 @@
1
- import * as graphql from 'graphql/language';
2
- import immutable from 'immutable';
3
- import prettier from 'prettier';
4
- import Schema from '../schema';
5
- import SchemaCodeGenerator from './schema';
6
- import {
7
- ArrayType,
8
- Class,
9
- Method,
10
- NamedType,
11
- NullableType,
12
- Param,
13
- StaticMethod,
14
- } from './typescript';
15
-
16
- const formatTS = (code: string) => prettier.format(code, { parser: 'typescript', semi: false });
17
-
18
- const createSchemaCodeGen = (schema: string) =>
19
- new SchemaCodeGenerator(new Schema('', schema, immutable.fromJS(graphql.parse(schema))));
20
-
21
- const testEntity = (generatedTypes: any[], expectedEntity: any) => {
22
- const entity = generatedTypes.find(type => type.name === expectedEntity.name);
23
-
24
- expect(entity instanceof Class).toBe(true);
25
- expect(entity.extends).toBe('Entity');
26
- expect(entity.export).toBe(true);
27
-
28
- const { members, methods } = entity;
29
-
30
- expect(members).toStrictEqual(expectedEntity.members);
31
-
32
- for (const expectedMethod of expectedEntity.methods) {
33
- const method = methods.find((method: any) => method.name === expectedMethod.name);
34
-
35
- expectedMethod.static
36
- ? expect(method instanceof StaticMethod).toBe(true)
37
- : expect(method instanceof Method).toBe(true);
38
-
39
- expect(method.params).toStrictEqual(expectedMethod.params);
40
- expect(method.returnType).toStrictEqual(expectedMethod.returnType);
41
- expect(formatTS(method.body)).toBe(formatTS(expectedMethod.body));
42
- }
43
-
44
- expect(methods.length).toBe(expectedEntity.methods.length);
45
- };
46
-
47
- describe('Schema code generator', () => {
48
- test('Should generate nothing for non entity types', () => {
49
- const codegen = createSchemaCodeGen(`
50
- type Foo {
51
- foobar: Int
52
- }
53
-
54
- type Bar {
55
- barfoo: Int
56
- }
57
- `);
58
-
59
- expect(codegen.generateTypes().size).toBe(0);
60
- });
61
-
62
- describe('Should generate correct classes for each entity', () => {
63
- const codegen = createSchemaCodeGen(`
64
- # just to be sure nothing will be generated from non-entity types alongside regular ones
65
- type Foo {
66
- foobar: Int
67
- }
68
-
69
- type Account @entity {
70
- id: ID!
71
-
72
- # two non primitive types
73
- description: String
74
- name: String!
75
-
76
- # two primitive types (i32)
77
- age: Int
78
- count: Int!
79
-
80
- # derivedFrom
81
- wallets: [Wallet!] @derivedFrom(field: "account")
82
- }
83
-
84
- type Wallet @entity {
85
- id: ID!
86
- amount: BigInt!
87
- account: Account!
88
- }
89
- `);
90
-
91
- const generatedTypes = codegen.generateTypes();
92
-
93
- test('Foo is NOT an entity', () => {
94
- const foo = generatedTypes.find((type: any) => type.name === 'Foo');
95
- expect(foo).toBe(undefined);
96
- // Account and Wallet
97
- expect(generatedTypes.size).toBe(2);
98
- });
99
-
100
- test('Account is an entity with the correct methods', () => {
101
- testEntity(generatedTypes, {
102
- name: 'Account',
103
- members: [],
104
- methods: [
105
- {
106
- name: 'constructor',
107
- params: [new Param('id', new NamedType('string'))],
108
- returnType: undefined,
109
- body: `
110
- super()
111
- this.set('id', Value.fromString(id))
112
- `,
113
- },
114
- {
115
- name: 'save',
116
- params: [],
117
- returnType: new NamedType('void'),
118
- body: `
119
- let id = this.get('id')
120
- assert(id != null, 'Cannot save Account entity without an ID')
121
- if (id) {
122
- assert(
123
- id.kind == ValueKind.STRING,
124
- \`Entities of type Account must have an ID of type String but the id '\${id.displayData()}' is of type \${id.displayKind()}\`)
125
- store.set('Account', id.toString(), this)
126
- }
127
- `,
128
- },
129
- {
130
- name: 'load',
131
- static: true,
132
- params: [new Param('id', new NamedType('string'))],
133
- returnType: new NullableType(new NamedType('Account')),
134
- body: `
135
- return changetype<Account | null>(store.get('Account', id))
136
- `,
137
- },
138
- {
139
- name: 'get id',
140
- params: [],
141
- returnType: new NamedType('string'),
142
- body: `
143
- let value = this.get('id')
144
- return value!.toString()
145
- `,
146
- },
147
- {
148
- name: 'set id',
149
- params: [new Param('value', new NamedType('string'))],
150
- returnType: undefined,
151
- body: `
152
- this.set('id', Value.fromString(value))
153
- `,
154
- },
155
- {
156
- name: 'get description',
157
- params: [],
158
- returnType: new NullableType(new NamedType('string')),
159
- body: `
160
- let value = this.get('description')
161
- if (!value || value.kind == ValueKind.NULL) {
162
- return null
163
- } else {
164
- return value.toString()
165
- }
166
- `,
167
- },
168
- {
169
- name: 'set description',
170
- params: [new Param('value', new NullableType(new NamedType('string')))],
171
- returnType: undefined,
172
- body: `
173
- if (!value) {
174
- this.unset('description')
175
- } else {
176
- this.set('description', Value.fromString(<string>value))
177
- }
178
- `,
179
- },
180
- {
181
- name: 'get name',
182
- params: [],
183
- returnType: new NamedType('string'),
184
- body: `
185
- let value = this.get('name')
186
- return value!.toString()
187
- `,
188
- },
189
- {
190
- name: 'set name',
191
- params: [new Param('value', new NamedType('string'))],
192
- returnType: undefined,
193
- body: `
194
- this.set('name', Value.fromString(value))
195
- `,
196
- },
197
- {
198
- name: 'get age',
199
- params: [],
200
- returnType: new NamedType('i32'),
201
- body: `
202
- let value = this.get('age')
203
- return value!.toI32()
204
- `,
205
- },
206
- {
207
- name: 'set age',
208
- params: [new Param('value', new NamedType('i32'))],
209
- returnType: undefined,
210
- body: `
211
- this.set('age', Value.fromI32(value))
212
- `,
213
- },
214
- {
215
- name: 'get count',
216
- params: [],
217
- returnType: new NamedType('i32'),
218
- body: `
219
- let value = this.get('count')
220
- return value!.toI32()
221
- `,
222
- },
223
- {
224
- name: 'set count',
225
- params: [new Param('value', new NamedType('i32'))],
226
- returnType: undefined,
227
- body: `
228
- this.set('count', Value.fromI32(value))
229
- `,
230
- },
231
- {
232
- name: 'get wallets',
233
- params: [],
234
- returnType: new NullableType(new ArrayType(new NamedType('string'))),
235
- body: `
236
- let value = this.get('wallets')
237
- if (!value || value.kind == ValueKind.NULL) {
238
- return null
239
- } else {
240
- return value.toStringArray()
241
- }
242
- `,
243
- },
244
- {
245
- name: 'set wallets',
246
- params: [new Param('value', new NullableType(new ArrayType(new NamedType('string'))))],
247
- returnType: undefined,
248
- body: `
249
- if (!value) {
250
- this.unset('wallets')
251
- } else {
252
- this.set('wallets', Value.fromStringArray(<Array<string>>value))
253
- }
254
- `,
255
- },
256
- ],
257
- });
258
- });
259
-
260
- test('Wallet is an entity with the correct methods', () => {
261
- testEntity(generatedTypes, {
262
- name: 'Wallet',
263
- members: [],
264
- methods: [
265
- {
266
- name: 'constructor',
267
- params: [new Param('id', new NamedType('string'))],
268
- returnType: undefined,
269
- body: `
270
- super()
271
- this.set('id', Value.fromString(id))
272
- `,
273
- },
274
- {
275
- name: 'save',
276
- params: [],
277
- returnType: new NamedType('void'),
278
- body: `
279
- let id = this.get('id')
280
- assert(id != null, 'Cannot save Wallet entity without an ID')
281
- if (id) {
282
- assert(
283
- id.kind == ValueKind.STRING,
284
- \`Entities of type Wallet must have an ID of type String but the id '\${id.displayData()}' is of type \${id.displayKind()}\`)
285
- store.set('Wallet', id.toString(), this)
286
- }
287
- `,
288
- },
289
- {
290
- name: 'load',
291
- static: true,
292
- params: [new Param('id', new NamedType('string'))],
293
- returnType: new NullableType(new NamedType('Wallet')),
294
- body: `
295
- return changetype<Wallet | null>(store.get('Wallet', id))
296
- `,
297
- },
298
- {
299
- name: 'get id',
300
- params: [],
301
- returnType: new NamedType('string'),
302
- body: `
303
- let value = this.get('id')
304
- return value!.toString()
305
- `,
306
- },
307
- {
308
- name: 'set id',
309
- params: [new Param('value', new NamedType('string'))],
310
- returnType: undefined,
311
- body: `
312
- this.set('id', Value.fromString(value))
313
- `,
314
- },
315
- {
316
- name: 'get amount',
317
- params: [],
318
- returnType: new NamedType('BigInt'),
319
- body: `
320
- let value = this.get('amount')
321
- return value!.toBigInt()
322
- `,
323
- },
324
- {
325
- name: 'set amount',
326
- params: [new Param('value', new NamedType('BigInt'))],
327
- returnType: undefined,
328
- body: `
329
- this.set('amount', Value.fromBigInt(value))
330
- `,
331
- },
332
- {
333
- name: 'get account',
334
- params: [],
335
- returnType: new NamedType('string'),
336
- body: `
337
- let value = this.get('account')
338
- return value!.toString()
339
- `,
340
- },
341
- {
342
- name: 'set account',
343
- params: [new Param('value', new NamedType('string'))],
344
- returnType: undefined,
345
- body: `
346
- this.set('account', Value.fromString(value))
347
- `,
348
- },
349
- ],
350
- });
351
- });
352
- });
353
-
354
- test('Should handle references with Bytes id types', () => {
355
- const codegen = createSchemaCodeGen(`
356
- interface Employee {
357
- id: Bytes!
358
- name: String!
359
- }
360
-
361
- type Worker implements Employee @entity {
362
- id: Bytes!
363
- name: String!
364
- }
365
-
366
- type Task @entity {
367
- id: Bytes!
368
- employee: Employee!
369
- worker: Worker!
370
- }
371
- `);
372
-
373
- const generatedTypes = codegen.generateTypes();
374
- testEntity(generatedTypes, {
375
- name: 'Task',
376
- members: [],
377
- methods: [
378
- {
379
- name: 'constructor',
380
- params: [new Param('id', new NamedType('Bytes'))],
381
- returnType: undefined,
382
- body: "\n super()\n this.set('id', Value.fromBytes(id))\n ",
383
- },
384
- {
385
- name: 'save',
386
- params: [],
387
- returnType: new NamedType('void'),
388
- body:
389
- '\n' +
390
- " let id = this.get('id')\n" +
391
- ' assert(id != null,\n' +
392
- " 'Cannot save Task entity without an ID')\n" +
393
- ' if (id) {\n' +
394
- ' assert(id.kind == ValueKind.BYTES,\n' +
395
- " `Entities of type Task must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`)\n" +
396
- " store.set('Task', id.toBytes().toHexString(), this)\n" +
397
- ' }',
398
- },
399
- {
400
- name: 'load',
401
- static: true,
402
- params: [new Param('id', new NamedType('Bytes'))],
403
- returnType: new NullableType(new NamedType('Task')),
404
- body:
405
- '\n' +
406
- " return changetype<Task | null>(store.get('Task', id.toHexString()))\n" +
407
- ' ',
408
- },
409
- {
410
- name: 'get id',
411
- params: [],
412
- returnType: new NamedType('Bytes'),
413
- body:
414
- '\n' +
415
- " let value = this.get('id')\n" +
416
- ' return value!.toBytes()\n' +
417
- ' ',
418
- },
419
- {
420
- name: 'set id',
421
- params: [new Param('value', new NamedType('Bytes'))],
422
- returnType: undefined,
423
- body: "\n this.set('id', Value.fromBytes(value))\n ",
424
- },
425
- {
426
- name: 'get employee',
427
- params: [],
428
- returnType: new NamedType('Bytes'),
429
- body:
430
- '\n' +
431
- " let value = this.get('employee')\n" +
432
- ' return value!.toBytes()\n' +
433
- ' ',
434
- },
435
- {
436
- name: 'set employee',
437
- params: [new Param('value', new NamedType('Bytes'))],
438
- returnType: undefined,
439
- body: "\n this.set('employee', Value.fromBytes(value))\n ",
440
- },
441
- {
442
- name: 'get worker',
443
- params: [],
444
- returnType: new NamedType('Bytes'),
445
- body:
446
- '\n' +
447
- " let value = this.get('worker')\n" +
448
- ' return value!.toBytes()\n' +
449
- ' ',
450
- },
451
- {
452
- name: 'set worker',
453
- params: [new Param('value', new NamedType('Bytes'))],
454
- returnType: undefined,
455
- body: "\n this.set('worker', Value.fromBytes(value))\n ",
456
- },
457
- ],
458
- });
459
- });
460
- });