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