@graphprotocol/graph-cli 0.37.3 → 0.37.4

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 (267) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +5 -1
  3. package/babel.config.js +0 -3
  4. package/jest.config.js +0 -175
  5. package/src/bin.ts +0 -6
  6. package/src/cli.ts +0 -30
  7. package/src/codegen/schema.test.ts +0 -460
  8. package/src/codegen/schema.ts +0 -299
  9. package/src/codegen/template.ts +0 -45
  10. package/src/codegen/types/conversions.ts +0 -358
  11. package/src/codegen/types/index.test.ts +0 -715
  12. package/src/codegen/types/index.ts +0 -111
  13. package/src/codegen/typescript.ts +0 -224
  14. package/src/codegen/util.test.ts +0 -112
  15. package/src/codegen/util.ts +0 -54
  16. package/src/command-helpers/abi.ts +0 -99
  17. package/src/command-helpers/auth.ts +0 -46
  18. package/src/command-helpers/compiler.ts +0 -60
  19. package/src/command-helpers/data-sources.ts +0 -36
  20. package/src/command-helpers/fs.ts +0 -5
  21. package/src/command-helpers/gluegun.ts +0 -52
  22. package/src/command-helpers/ipfs-http-client.d.ts +0 -1
  23. package/src/command-helpers/ipfs.ts +0 -3
  24. package/src/command-helpers/jsonrpc.ts +0 -22
  25. package/src/command-helpers/network.test.ts +0 -85
  26. package/src/command-helpers/network.ts +0 -133
  27. package/src/command-helpers/node.ts +0 -46
  28. package/src/command-helpers/scaffold.ts +0 -174
  29. package/src/command-helpers/spinner.ts +0 -60
  30. package/src/command-helpers/studio.test.ts +0 -84
  31. package/src/command-helpers/studio.ts +0 -25
  32. package/src/command-helpers/subgraph.ts +0 -21
  33. package/src/command-helpers/version.test.ts +0 -241
  34. package/src/command-helpers/version.ts +0 -53
  35. package/src/commands/add.ts +0 -220
  36. package/src/commands/auth.ts +0 -138
  37. package/src/commands/binary-install-raw.d.ts +0 -1
  38. package/src/commands/build.ts +0 -147
  39. package/src/commands/codegen.ts +0 -123
  40. package/src/commands/create.ts +0 -109
  41. package/src/commands/deploy.ts +0 -388
  42. package/src/commands/init.ts +0 -1060
  43. package/src/commands/local.ts +0 -539
  44. package/src/commands/remove.ts +0 -110
  45. package/src/commands/test.ts +0 -369
  46. package/src/compiler/asc.ts +0 -77
  47. package/src/compiler/index.ts +0 -677
  48. package/src/debug.ts +0 -15
  49. package/src/migrations/mapping_api_version_0_0_1.ts +0 -75
  50. package/src/migrations/mapping_api_version_0_0_2.ts +0 -75
  51. package/src/migrations/mapping_api_version_0_0_3.ts +0 -75
  52. package/src/migrations/mapping_api_version_0_0_4.ts +0 -77
  53. package/src/migrations/mapping_api_version_0_0_5.ts +0 -77
  54. package/src/migrations/spec_version_0_0_2.ts +0 -24
  55. package/src/migrations/spec_version_0_0_3.ts +0 -29
  56. package/src/migrations/util/load-manifest.ts +0 -10
  57. package/src/migrations/util/versions.ts +0 -27
  58. package/src/migrations.ts +0 -33
  59. package/src/protocols/arweave/manifest.graphql +0 -57
  60. package/src/protocols/arweave/scaffold/manifest.ts +0 -14
  61. package/src/protocols/arweave/scaffold/mapping.ts +0 -49
  62. package/src/protocols/arweave/subgraph.ts +0 -22
  63. package/src/protocols/contract.ts +0 -9
  64. package/src/protocols/cosmos/manifest.graphql +0 -76
  65. package/src/protocols/cosmos/scaffold/manifest.ts +0 -11
  66. package/src/protocols/cosmos/scaffold/mapping.ts +0 -35
  67. package/src/protocols/cosmos/subgraph.ts +0 -27
  68. package/src/protocols/ethereum/abi.ts +0 -153
  69. package/src/protocols/ethereum/codegen/abi.test.ts +0 -330
  70. package/src/protocols/ethereum/codegen/abi.ts +0 -719
  71. package/src/protocols/ethereum/codegen/template.ts +0 -41
  72. package/src/protocols/ethereum/contract.ts +0 -24
  73. package/src/protocols/ethereum/manifest.graphql +0 -94
  74. package/src/protocols/ethereum/scaffold/manifest.ts +0 -28
  75. package/src/protocols/ethereum/scaffold/mapping.ts +0 -76
  76. package/src/protocols/ethereum/subgraph.ts +0 -189
  77. package/src/protocols/ethereum/type-generator.ts +0 -191
  78. package/src/protocols/index.ts +0 -287
  79. package/src/protocols/ipfs/codegen/file_template.ts +0 -43
  80. package/src/protocols/near/contract.ts +0 -47
  81. package/src/protocols/near/manifest.graphql +0 -64
  82. package/src/protocols/near/scaffold/manifest.ts +0 -13
  83. package/src/protocols/near/scaffold/mapping.ts +0 -35
  84. package/src/protocols/near/subgraph.ts +0 -22
  85. package/src/protocols/subgraph.ts +0 -12
  86. package/src/protocols/substreams/manifest.graphql +0 -45
  87. package/src/protocols/substreams/scaffold/manifest.ts +0 -8
  88. package/src/protocols/substreams/subgraph.ts +0 -22
  89. package/src/scaffold/cosmos.test.ts +0 -83
  90. package/src/scaffold/ethereum.test.ts +0 -512
  91. package/src/scaffold/index.ts +0 -172
  92. package/src/scaffold/mapping.ts +0 -44
  93. package/src/scaffold/near.test.ts +0 -86
  94. package/src/scaffold/schema.ts +0 -89
  95. package/src/scaffold/tests.ts +0 -217
  96. package/src/schema.ts +0 -26
  97. package/src/subgraph.ts +0 -302
  98. package/src/type-generator.ts +0 -266
  99. package/src/validation/contract.ts +0 -51
  100. package/src/validation/index.ts +0 -5
  101. package/src/validation/manifest.ts +0 -360
  102. package/src/validation/schema.test.ts +0 -38
  103. package/src/validation/schema.ts +0 -957
  104. package/src/watcher.ts +0 -96
  105. package/tests/cli/globalSetup.ts +0 -8
  106. package/tests/cli/globalTeardown.ts +0 -8
  107. package/tests/cli/init/ethereum/abis/Marketplace.json +0 -408
  108. package/tests/cli/init/ethereum/abis/OverloadedElements.json +0 -91
  109. package/tests/cli/init/ethereum/abis/SoloMargin.json +0 -2729
  110. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stderr +0 -14
  111. package/tests/cli/init/ethereum/from-contract-with-abi-and-structs.stdout +0 -12
  112. package/tests/cli/init/ethereum/from-contract-with-abi.stderr +0 -14
  113. package/tests/cli/init/ethereum/from-contract-with-abi.stdout +0 -12
  114. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stderr +0 -14
  115. package/tests/cli/init/ethereum/from-contract-with-overloaded-elements.stdout +0 -12
  116. package/tests/cli/init/ethereum/from-contract.stderr +0 -16
  117. package/tests/cli/init/ethereum/from-contract.stdout +0 -12
  118. package/tests/cli/init/ethereum/from-example.stderr +0 -12
  119. package/tests/cli/init/ethereum/from-example.stdout +0 -12
  120. package/tests/cli/init/near/from-contract.stderr +0 -14
  121. package/tests/cli/init/near/from-contract.stdout +0 -12
  122. package/tests/cli/init.test.ts +0 -157
  123. package/tests/cli/spawn-command.d.ts +0 -7
  124. package/tests/cli/util.ts +0 -132
  125. package/tests/cli/validation/abi-not-found/Abi.json +0 -7
  126. package/tests/cli/validation/abi-not-found/mapping.ts +0 -0
  127. package/tests/cli/validation/abi-not-found/schema.graphql +0 -3
  128. package/tests/cli/validation/abi-not-found/subgraph.yaml +0 -42
  129. package/tests/cli/validation/abi-not-found copy.stderr +0 -13
  130. package/tests/cli/validation/big-decimal-is-valid/Abi.json +0 -7
  131. package/tests/cli/validation/big-decimal-is-valid/mapping.ts +0 -0
  132. package/tests/cli/validation/big-decimal-is-valid/schema.graphql +0 -4
  133. package/tests/cli/validation/big-decimal-is-valid/subgraph.yaml +0 -23
  134. package/tests/cli/validation/call-function-not-found/Abi.json +0 -57
  135. package/tests/cli/validation/call-function-not-found/mapping.ts +0 -0
  136. package/tests/cli/validation/call-function-not-found/schema.graphql +0 -3
  137. package/tests/cli/validation/call-function-not-found/subgraph.yaml +0 -22
  138. package/tests/cli/validation/call-function-not-found.stderr +0 -10
  139. package/tests/cli/validation/call-handler-with-tuple/Abi.json +0 -24
  140. package/tests/cli/validation/call-handler-with-tuple/generated/schema.ts +0 -44
  141. package/tests/cli/validation/call-handler-with-tuple/mapping.ts +0 -0
  142. package/tests/cli/validation/call-handler-with-tuple/schema.graphql +0 -3
  143. package/tests/cli/validation/call-handler-with-tuple/subgraph.yaml +0 -22
  144. package/tests/cli/validation/call-handler-with-tuple.stderr +0 -24
  145. package/tests/cli/validation/conflicting-network-names/Abi.json +0 -7
  146. package/tests/cli/validation/conflicting-network-names/mapping.ts +0 -0
  147. package/tests/cli/validation/conflicting-network-names/schema.graphql +0 -3
  148. package/tests/cli/validation/conflicting-network-names/subgraph.yaml +0 -41
  149. package/tests/cli/validation/conflicting-network-names.stderr +0 -10
  150. package/tests/cli/validation/conflicting-protocol-names/Abi.json +0 -7
  151. package/tests/cli/validation/conflicting-protocol-names/mapping.ts +0 -0
  152. package/tests/cli/validation/conflicting-protocol-names/schema.graphql +0 -3
  153. package/tests/cli/validation/conflicting-protocol-names/subgraph.yaml +0 -41
  154. package/tests/cli/validation/conflicting-protocol-names.stderr +0 -10
  155. package/tests/cli/validation/derived-from-target-type-missing/Abi.json +0 -6
  156. package/tests/cli/validation/derived-from-target-type-missing/mapping.ts +0 -0
  157. package/tests/cli/validation/derived-from-target-type-missing/schema.graphql +0 -4
  158. package/tests/cli/validation/derived-from-target-type-missing/subgraph.yaml +0 -22
  159. package/tests/cli/validation/derived-from-target-type-missing.stderr +0 -5
  160. package/tests/cli/validation/derived-from-with-interface/Gravity.json +0 -1
  161. package/tests/cli/validation/derived-from-with-interface/mapping.ts +0 -22
  162. package/tests/cli/validation/derived-from-with-interface/schema.graphql +0 -19
  163. package/tests/cli/validation/derived-from-with-interface/subgraph.yaml +0 -25
  164. package/tests/cli/validation/duplicate-data-source-name/Abi.json +0 -7
  165. package/tests/cli/validation/duplicate-data-source-name/mapping.ts +0 -0
  166. package/tests/cli/validation/duplicate-data-source-name/schema.graphql +0 -4
  167. package/tests/cli/validation/duplicate-data-source-name/subgraph.yaml +0 -40
  168. package/tests/cli/validation/duplicate-data-source-name.stderr +0 -5
  169. package/tests/cli/validation/duplicate-template-name/Abi.json +0 -7
  170. package/tests/cli/validation/duplicate-template-name/mapping.ts +0 -0
  171. package/tests/cli/validation/duplicate-template-name/schema.graphql +0 -4
  172. package/tests/cli/validation/duplicate-template-name/subgraph.yaml +0 -59
  173. package/tests/cli/validation/duplicate-template-name.stderr +0 -5
  174. package/tests/cli/validation/entity-field-args/Abi.json +0 -7
  175. package/tests/cli/validation/entity-field-args/mapping.ts +0 -0
  176. package/tests/cli/validation/entity-field-args/schema.graphql +0 -4
  177. package/tests/cli/validation/entity-field-args/subgraph.yaml +0 -22
  178. package/tests/cli/validation/entity-field-args.stderr +0 -5
  179. package/tests/cli/validation/ethereum-contract-without-handlers/Abi.json +0 -7
  180. package/tests/cli/validation/ethereum-contract-without-handlers/mapping.ts +0 -0
  181. package/tests/cli/validation/ethereum-contract-without-handlers/schema.graphql +0 -3
  182. package/tests/cli/validation/ethereum-contract-without-handlers/subgraph.yaml +0 -19
  183. package/tests/cli/validation/ethereum-contract-without-handlers.stderr +0 -6
  184. package/tests/cli/validation/event-not-found/Abi.json +0 -7
  185. package/tests/cli/validation/event-not-found/mapping.ts +0 -0
  186. package/tests/cli/validation/event-not-found/schema.graphql +0 -3
  187. package/tests/cli/validation/event-not-found/subgraph.yaml +0 -40
  188. package/tests/cli/validation/event-not-found.stderr +0 -12
  189. package/tests/cli/validation/example-values-found/Abi.json +0 -7
  190. package/tests/cli/validation/example-values-found/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  191. package/tests/cli/validation/example-values-found/generated/schema.ts +0 -44
  192. package/tests/cli/validation/example-values-found/mapping.ts +0 -0
  193. package/tests/cli/validation/example-values-found/schema.graphql +0 -3
  194. package/tests/cli/validation/example-values-found/subgraph.yaml +0 -24
  195. package/tests/cli/validation/example-values-found.stderr +0 -34
  196. package/tests/cli/validation/invalid-abis/InvalidAbi.json +0 -1
  197. package/tests/cli/validation/invalid-abis/mapping.ts +0 -0
  198. package/tests/cli/validation/invalid-abis/schema.graphql +0 -3
  199. package/tests/cli/validation/invalid-abis/subgraph.yaml +0 -22
  200. package/tests/cli/validation/invalid-abis.stderr +0 -5
  201. package/tests/cli/validation/invalid-contract-addresses/Abi.json +0 -7
  202. package/tests/cli/validation/invalid-contract-addresses/mapping.ts +0 -0
  203. package/tests/cli/validation/invalid-contract-addresses/schema.graphql +0 -3
  204. package/tests/cli/validation/invalid-contract-addresses/subgraph.yaml +0 -58
  205. package/tests/cli/validation/invalid-contract-addresses.stderr +0 -14
  206. package/tests/cli/validation/invalid-data-source-template/mapping.ts +0 -0
  207. package/tests/cli/validation/invalid-data-source-template/schema.graphql +0 -3
  208. package/tests/cli/validation/invalid-data-source-template/subgraph.yaml +0 -32
  209. package/tests/cli/validation/invalid-data-source-template.stderr +0 -30
  210. package/tests/cli/validation/invalid-entity-field-types/Abi.json +0 -7
  211. package/tests/cli/validation/invalid-entity-field-types/mapping.ts +0 -0
  212. package/tests/cli/validation/invalid-entity-field-types/schema.graphql +0 -157
  213. package/tests/cli/validation/invalid-entity-field-types/subgraph.yaml +0 -22
  214. package/tests/cli/validation/invalid-entity-field-types.stderr +0 -148
  215. package/tests/cli/validation/invalid-fulltext-directive/Abi.json +0 -7
  216. package/tests/cli/validation/invalid-fulltext-directive/mapping.ts +0 -0
  217. package/tests/cli/validation/invalid-fulltext-directive/schema.graphql +0 -140
  218. package/tests/cli/validation/invalid-fulltext-directive/subgraph.yaml +0 -22
  219. package/tests/cli/validation/invalid-fulltext-directive.stderr +0 -32
  220. package/tests/cli/validation/invalid-graphql-schema/Abi.json +0 -7
  221. package/tests/cli/validation/invalid-graphql-schema/mapping.ts +0 -0
  222. package/tests/cli/validation/invalid-graphql-schema/schema.graphql +0 -8
  223. package/tests/cli/validation/invalid-graphql-schema/subgraph.yaml +0 -22
  224. package/tests/cli/validation/invalid-graphql-schema.stderr +0 -25
  225. package/tests/cli/validation/invalid-manifest/subgraph.yaml +0 -13
  226. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol/subgraph.yaml +0 -12
  227. package/tests/cli/validation/invalid-manifest-cannot-infer-protocol.stderr +0 -5
  228. package/tests/cli/validation/invalid-manifest.stderr +0 -28
  229. package/tests/cli/validation/missing-entity-id/Abi.json +0 -7
  230. package/tests/cli/validation/missing-entity-id/mapping.ts +0 -0
  231. package/tests/cli/validation/missing-entity-id/schema.graphql +0 -3
  232. package/tests/cli/validation/missing-entity-id/subgraph.yaml +0 -22
  233. package/tests/cli/validation/missing-entity-id/types/ExampleSubgraph/ExampleContract.ts +0 -35
  234. package/tests/cli/validation/missing-entity-id/types/schema.ts +0 -27
  235. package/tests/cli/validation/missing-entity-id.stderr +0 -5
  236. package/tests/cli/validation/missing-or-invalid-derived-from-fields/Abi.json +0 -7
  237. package/tests/cli/validation/missing-or-invalid-derived-from-fields/mapping.ts +0 -0
  238. package/tests/cli/validation/missing-or-invalid-derived-from-fields/schema.graphql +0 -40
  239. package/tests/cli/validation/missing-or-invalid-derived-from-fields/subgraph.yaml +0 -22
  240. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stderr +0 -10
  241. package/tests/cli/validation/missing-or-invalid-derived-from-fields.stdout +0 -0
  242. package/tests/cli/validation/near-is-valid/mapping.ts +0 -0
  243. package/tests/cli/validation/near-is-valid/schema.graphql +0 -8
  244. package/tests/cli/validation/near-is-valid/subgraph.yaml +0 -30
  245. package/tests/cli/validation/nested-template-nice-error/Abi.json +0 -7
  246. package/tests/cli/validation/nested-template-nice-error/mapping.ts +0 -0
  247. package/tests/cli/validation/nested-template-nice-error/schema.graphql +0 -3
  248. package/tests/cli/validation/nested-template-nice-error/subgraph.yaml +0 -35
  249. package/tests/cli/validation/nested-template-nice-error.stderr +0 -5
  250. package/tests/cli/validation/no-network-names/Abi.json +0 -7
  251. package/tests/cli/validation/no-network-names/mapping.ts +0 -0
  252. package/tests/cli/validation/no-network-names/schema.graphql +0 -3
  253. package/tests/cli/validation/no-network-names/subgraph.yaml +0 -40
  254. package/tests/cli/validation/no-network-names.stderr +0 -34
  255. package/tests/cli/validation/source-without-address-is-valid/Abi.json +0 -7
  256. package/tests/cli/validation/source-without-address-is-valid/generated/ExampleSubgraph/ExampleContract.ts +0 -35
  257. package/tests/cli/validation/source-without-address-is-valid/mapping.ts +0 -0
  258. package/tests/cli/validation/source-without-address-is-valid/schema.graphql +0 -3
  259. package/tests/cli/validation/source-without-address-is-valid/subgraph.yaml +0 -23
  260. package/tests/cli/validation/source-without-address-is-valid.stderr +0 -24
  261. package/tests/cli/validation/topic0-is-valid/Abi.json +0 -7
  262. package/tests/cli/validation/topic0-is-valid/mapping.ts +0 -0
  263. package/tests/cli/validation/topic0-is-valid/schema.graphql +0 -4
  264. package/tests/cli/validation/topic0-is-valid/subgraph.yaml +0 -24
  265. package/tests/cli/validation.test.ts +0 -226
  266. package/tsconfig.build.json +0 -4
  267. package/tsconfig.json +0 -19
@@ -1,75 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import semver from 'semver';
5
- import { loadManifest } from './util/load-manifest';
6
- import { getGraphTsVersion } from './util/versions';
7
-
8
- // If any of the manifest apiVersions are 0.0.1, replace them with 0.0.2
9
- export default {
10
- name: 'Bump mapping apiVersion from 0.0.1 to 0.0.2',
11
- predicate: async ({ sourceDir, manifestFile }: { sourceDir: string; manifestFile: string }) => {
12
- // Obtain the graph-ts version, if possible
13
- let graphTsVersion;
14
- try {
15
- graphTsVersion = await getGraphTsVersion(sourceDir);
16
- } catch (_) {
17
- // If we cannot obtain the version, return a hint that the graph-ts
18
- // hasn't been installed yet
19
- return 'graph-ts dependency not installed yet';
20
- }
21
-
22
- const manifest = await loadManifest(manifestFile);
23
- return (
24
- // Only migrate if the graph-ts version is > 0.5.1...
25
- semver.gt(graphTsVersion, '0.5.1') &&
26
- // ...and we have a manifest with mapping > apiVersion = 0.0.1
27
- manifest &&
28
- typeof manifest === 'object' &&
29
- Array.isArray(manifest.dataSources) &&
30
- (manifest.dataSources.reduce(
31
- (hasOldMappings: boolean, dataSource: any) =>
32
- hasOldMappings ||
33
- (typeof dataSource === 'object' &&
34
- dataSource.mapping &&
35
- typeof dataSource.mapping === 'object' &&
36
- dataSource.mapping.apiVersion === '0.0.1'),
37
- false,
38
- ) ||
39
- (Array.isArray(manifest.templates) &&
40
- manifest.templates.reduce(
41
- (hasOldMappings: boolean, template: any) =>
42
- hasOldMappings ||
43
- (typeof template === 'object' &&
44
- template.mapping &&
45
- typeof template.mapping === 'object' &&
46
- template.mapping.apiVersion === '0.0.1'),
47
- false,
48
- )))
49
- );
50
- },
51
- apply: async ({ manifestFile }: { manifestFile: string }) => {
52
- // Make sure we catch all variants; we could load the manifest
53
- // and replace the values in the data structures here; unfortunately
54
- // writing that back to the file messes with the formatting more than
55
- // we'd like; that's why for now, we use a simple patching approach
56
- await toolbox.patching.replace(
57
- manifestFile,
58
- // @ts-expect-error toolbox patching seems to accept RegExp
59
- new RegExp('apiVersion: 0.0.1', 'g'),
60
- 'apiVersion: 0.0.2',
61
- );
62
- await toolbox.patching.replace(
63
- manifestFile,
64
- // @ts-expect-error toolbox patching seems to accept RegExp
65
- new RegExp("apiVersion: '0.0.1'", 'g'),
66
- "apiVersion: '0.0.2'",
67
- );
68
- await toolbox.patching.replace(
69
- manifestFile,
70
- // @ts-expect-error toolbox patching seems to accept RegExp
71
- new RegExp('apiVersion: "0.0.1"', 'g'),
72
- 'apiVersion: "0.0.2"',
73
- );
74
- },
75
- };
@@ -1,75 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import semver from 'semver';
5
- import { loadManifest } from './util/load-manifest';
6
- import { getGraphTsVersion } from './util/versions';
7
-
8
- // If any of the manifest apiVersions are 0.0.2, replace them with 0.0.3
9
- export default {
10
- name: 'Bump mapping apiVersion from 0.0.2 to 0.0.3',
11
- predicate: async ({ sourceDir, manifestFile }: { sourceDir: string; manifestFile: string }) => {
12
- // Obtain the graph-ts version, if possible
13
- let graphTsVersion;
14
- try {
15
- graphTsVersion = await getGraphTsVersion(sourceDir);
16
- } catch (_) {
17
- // If we cannot obtain the version, return a hint that the graph-ts
18
- // hasn't been installed yet
19
- return 'graph-ts dependency not installed yet';
20
- }
21
-
22
- const manifest = await loadManifest(manifestFile);
23
- return (
24
- // Only migrate if the graph-ts version is > 0.12.0...
25
- semver.gt(graphTsVersion, '0.12.0') &&
26
- // ...and we have a manifest with mapping > apiVersion = 0.0.2
27
- manifest &&
28
- typeof manifest === 'object' &&
29
- Array.isArray(manifest.dataSources) &&
30
- (manifest.dataSources.reduce(
31
- (hasOldMappings: boolean, dataSource: any) =>
32
- hasOldMappings ||
33
- (typeof dataSource === 'object' &&
34
- dataSource.mapping &&
35
- typeof dataSource.mapping === 'object' &&
36
- dataSource.mapping.apiVersion === '0.0.2'),
37
- false,
38
- ) ||
39
- (Array.isArray(manifest.templates) &&
40
- manifest.templates.reduce(
41
- (hasOldMappings: boolean, template: any) =>
42
- hasOldMappings ||
43
- (typeof template === 'object' &&
44
- template.mapping &&
45
- typeof template.mapping === 'object' &&
46
- template.mapping.apiVersion === '0.0.2'),
47
- false,
48
- )))
49
- );
50
- },
51
- apply: async ({ manifestFile }: { manifestFile: string }) => {
52
- // Make sure we catch all variants; we could load the manifest
53
- // and replace the values in the data structures here; unfortunately
54
- // writing that back to the file messes with the formatting more than
55
- // we'd like; that's why for now, we use a simple patching approach
56
- await toolbox.patching.replace(
57
- manifestFile,
58
- // @ts-expect-error toolbox patching seems to accept RegExp
59
- new RegExp('apiVersion: 0.0.2', 'g'),
60
- 'apiVersion: 0.0.3',
61
- );
62
- await toolbox.patching.replace(
63
- manifestFile,
64
- // @ts-expect-error toolbox patching seems to accept RegExp
65
- new RegExp("apiVersion: '0.0.2'", 'g'),
66
- "apiVersion: '0.0.3'",
67
- );
68
- await toolbox.patching.replace(
69
- manifestFile,
70
- // @ts-expect-error toolbox patching seems to accept RegExp
71
- new RegExp('apiVersion: "0.0.2"', 'g'),
72
- 'apiVersion: "0.0.3"',
73
- );
74
- },
75
- };
@@ -1,75 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import semver from 'semver';
5
- import { loadManifest } from './util/load-manifest';
6
- import { getGraphTsVersion } from './util/versions';
7
-
8
- // If any of the manifest apiVersions are 0.0.3, replace them with 0.0.4
9
- export default {
10
- name: 'Bump mapping apiVersion from 0.0.3 to 0.0.4',
11
- predicate: async ({ sourceDir, manifestFile }: { sourceDir: string; manifestFile: string }) => {
12
- // Obtain the graph-ts version, if possible
13
- let graphTsVersion;
14
- try {
15
- graphTsVersion = await getGraphTsVersion(sourceDir);
16
- } catch (_) {
17
- // If we cannot obtain the version, return a hint that the graph-ts
18
- // hasn't been installed yet
19
- return 'graph-ts dependency not installed yet';
20
- }
21
-
22
- const manifest = await loadManifest(manifestFile);
23
- return (
24
- // Only migrate if the graph-ts version is > 0.17.0...
25
- semver.gt(graphTsVersion, '0.17.0') &&
26
- // ...and we have a manifest with mapping > apiVersion = 0.0.3
27
- manifest &&
28
- typeof manifest === 'object' &&
29
- Array.isArray(manifest.dataSources) &&
30
- (manifest.dataSources.reduce(
31
- (hasOldMappings: boolean, dataSource: any) =>
32
- hasOldMappings ||
33
- (typeof dataSource === 'object' &&
34
- dataSource.mapping &&
35
- typeof dataSource.mapping === 'object' &&
36
- dataSource.mapping.apiVersion === '0.0.3'),
37
- false,
38
- ) ||
39
- (Array.isArray(manifest.templates) &&
40
- manifest.templates.reduce(
41
- (hasOldMappings: boolean, template: any) =>
42
- hasOldMappings ||
43
- (typeof template === 'object' &&
44
- template.mapping &&
45
- typeof template.mapping === 'object' &&
46
- template.mapping.apiVersion === '0.0.3'),
47
- false,
48
- )))
49
- );
50
- },
51
- apply: async ({ manifestFile }: { manifestFile: string }) => {
52
- // Make sure we catch all variants; we could load the manifest
53
- // and replace the values in the data structures here; unfortunately
54
- // writing that back to the file messes with the formatting more than
55
- // we'd like; that's why for now, we use a simple patching approach
56
- await toolbox.patching.replace(
57
- manifestFile,
58
- // @ts-expect-error toolbox patching seems to accept RegExp
59
- new RegExp('apiVersion: 0.0.3', 'g'),
60
- 'apiVersion: 0.0.4',
61
- );
62
- await toolbox.patching.replace(
63
- manifestFile,
64
- // @ts-expect-error toolbox patching seems to accept RegExp
65
- new RegExp("apiVersion: '0.0.3'", 'g'),
66
- "apiVersion: '0.0.4'",
67
- );
68
- await toolbox.patching.replace(
69
- manifestFile,
70
- // @ts-expect-error toolbox patching seems to accept RegExp
71
- new RegExp('apiVersion: "0.0.3"', 'g'),
72
- 'apiVersion: "0.0.4"',
73
- );
74
- },
75
- };
@@ -1,77 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import semver from 'semver';
5
- import { loadManifest } from './util/load-manifest';
6
- import { getGraphTsVersion } from './util/versions';
7
-
8
- // If any of the manifest apiVersions are 0.0.4, replace them with 0.0.5
9
- export default {
10
- name: 'Bump mapping apiVersion from 0.0.4 to 0.0.5',
11
- predicate: async ({ sourceDir, manifestFile }: { sourceDir: string; manifestFile: string }) => {
12
- // Obtain the graph-ts version, if possible
13
- let graphTsVersion;
14
- try {
15
- graphTsVersion = await getGraphTsVersion(sourceDir);
16
- } catch (_) {
17
- // If we cannot obtain the version, return a hint that the graph-ts
18
- // hasn't been installed yet
19
- return 'graph-ts dependency not installed yet';
20
- }
21
-
22
- const manifest = await loadManifest(manifestFile);
23
- return (
24
- // Only migrate if the graph-ts version is >= 0.22.0...
25
- // Coerce needed because we may be dealing with an alpha version
26
- // and in the `semver` library this would not return true on equality.
27
- semver.gte(semver.coerce(graphTsVersion)!, '0.22.0') &&
28
- // ...and we have a manifest with mapping > apiVersion = 0.0.4
29
- manifest &&
30
- typeof manifest === 'object' &&
31
- Array.isArray(manifest.dataSources) &&
32
- (manifest.dataSources.reduce(
33
- (hasOldMappings: boolean, dataSource: any) =>
34
- hasOldMappings ||
35
- (typeof dataSource === 'object' &&
36
- dataSource.mapping &&
37
- typeof dataSource.mapping === 'object' &&
38
- dataSource.mapping.apiVersion === '0.0.4'),
39
- false,
40
- ) ||
41
- (Array.isArray(manifest.templates) &&
42
- manifest.templates.reduce(
43
- (hasOldMappings: boolean, template: any) =>
44
- hasOldMappings ||
45
- (typeof template === 'object' &&
46
- template.mapping &&
47
- typeof template.mapping === 'object' &&
48
- template.mapping.apiVersion === '0.0.4'),
49
- false,
50
- )))
51
- );
52
- },
53
- apply: async ({ manifestFile }: { manifestFile: string }) => {
54
- // Make sure we catch all variants; we could load the manifest
55
- // and replace the values in the data structures here; unfortunately
56
- // writing that back to the file messes with the formatting more than
57
- // we'd like; that's why for now, we use a simple patching approach
58
- await toolbox.patching.replace(
59
- manifestFile,
60
- // @ts-expect-error toolbox patching seems to accept RegExp
61
- new RegExp('apiVersion: 0.0.4', 'g'),
62
- 'apiVersion: 0.0.5',
63
- );
64
- await toolbox.patching.replace(
65
- manifestFile,
66
- // @ts-expect-error toolbox patching seems to accept RegExp
67
- new RegExp("apiVersion: '0.0.4'", 'g'),
68
- "apiVersion: '0.0.5'",
69
- );
70
- await toolbox.patching.replace(
71
- manifestFile,
72
- // @ts-expect-error toolbox patching seems to accept RegExp
73
- new RegExp('apiVersion: "0.0.4"', 'g'),
74
- 'apiVersion: "0.0.5"',
75
- );
76
- },
77
- };
@@ -1,77 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import semver from 'semver';
5
- import { loadManifest } from './util/load-manifest';
6
- import { getGraphTsVersion } from './util/versions';
7
-
8
- // If any of the manifest apiVersions are 0.0.5, replace them with 0.0.6
9
- export default {
10
- name: 'Bump mapping apiVersion from 0.0.5 to 0.0.6',
11
- predicate: async ({ sourceDir, manifestFile }: { sourceDir: string; manifestFile: string }) => {
12
- // Obtain the graph-ts version, if possible
13
- let graphTsVersion;
14
- try {
15
- graphTsVersion = await getGraphTsVersion(sourceDir);
16
- } catch (_) {
17
- // If we cannot obtain the version, return a hint that the graph-ts
18
- // hasn't been installed yet
19
- return 'graph-ts dependency not installed yet';
20
- }
21
-
22
- const manifest = await loadManifest(manifestFile);
23
- return (
24
- // Only migrate if the graph-ts version is >= 0.24.0...
25
- // Coerce needed because we may be dealing with an alpha version
26
- // and in the `semver` library this would not return true on equality.
27
- semver.gte(semver.coerce(graphTsVersion)!, '0.24.0') &&
28
- // ...and we have a manifest with mapping > apiVersion = 0.0.5
29
- manifest &&
30
- typeof manifest === 'object' &&
31
- Array.isArray(manifest.dataSources) &&
32
- (manifest.dataSources.reduce(
33
- (hasOldMappings: boolean, dataSource: any) =>
34
- hasOldMappings ||
35
- (typeof dataSource === 'object' &&
36
- dataSource.mapping &&
37
- typeof dataSource.mapping === 'object' &&
38
- dataSource.mapping.apiVersion === '0.0.5'),
39
- false,
40
- ) ||
41
- (Array.isArray(manifest.templates) &&
42
- manifest.templates.reduce(
43
- (hasOldMappings: boolean, template: any) =>
44
- hasOldMappings ||
45
- (typeof template === 'object' &&
46
- template.mapping &&
47
- typeof template.mapping === 'object' &&
48
- template.mapping.apiVersion === '0.0.5'),
49
- false,
50
- )))
51
- );
52
- },
53
- apply: async ({ manifestFile }: { manifestFile: string }) => {
54
- // Make sure we catch all variants; we could load the manifest
55
- // and replace the values in the data structures here; unfortunately
56
- // writing that back to the file messes with the formatting more than
57
- // we'd like; that's why for now, we use a simple patching approach
58
- await toolbox.patching.replace(
59
- manifestFile,
60
- // @ts-expect-error toolbox patching seems to accept RegExp
61
- new RegExp('apiVersion: 0.0.5', 'g'),
62
- 'apiVersion: 0.0.6',
63
- );
64
- await toolbox.patching.replace(
65
- manifestFile,
66
- // @ts-expect-error toolbox patching seems to accept RegExp
67
- new RegExp("apiVersion: '0.0.5'", 'g'),
68
- "apiVersion: '0.0.6'",
69
- );
70
- await toolbox.patching.replace(
71
- manifestFile,
72
- // @ts-expect-error toolbox patching seems to accept RegExp
73
- new RegExp('apiVersion: "0.0.5"', 'g'),
74
- 'apiVersion: "0.0.6"',
75
- );
76
- },
77
- };
@@ -1,24 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import { loadManifest } from './util/load-manifest';
5
-
6
- // Spec version to 0.0.2 uses top level templates. graph-cli no longer supports
7
- // 0.0.1 which used nested templates.
8
- export default {
9
- name: 'Bump manifest specVersion from 0.0.1 to 0.0.2',
10
- predicate: async ({ manifestFile }: { manifestFile: string }) => {
11
- const manifest = await loadManifest(manifestFile);
12
- return (
13
- manifest &&
14
- typeof manifest === 'object' &&
15
- manifest.specVersion &&
16
- manifest.specVersion === '0.0.1'
17
- );
18
- },
19
- apply: async ({ manifestFile }: { manifestFile: string }) => {
20
- await toolbox.patching.replace(manifestFile, 'specVersion: 0.0.1', 'specVersion: 0.0.2');
21
- await toolbox.patching.replace(manifestFile, "specVersion: '0.0.1'", "specVersion: '0.0.2'");
22
- await toolbox.patching.replace(manifestFile, 'specVersion: "0.0.1"', 'specVersion: "0.0.2"');
23
- },
24
- };
@@ -1,29 +0,0 @@
1
- /* eslint-disable */
2
-
3
- import * as toolbox from 'gluegun';
4
- import { loadManifest } from './util/load-manifest';
5
-
6
- // Spec version 0.0.4 uses feature management, but features are
7
- // detected and validated by the graph-node instance during subgraph
8
- // deployment.
9
- //
10
- // Also, we skip spec version 0.0.3, which is considered invalid and
11
- // non-canonical.
12
- export default {
13
- name: 'Bump manifest specVersion from 0.0.2 to 0.0.4',
14
- predicate: async ({ manifestFile }: { manifestFile: string }) => {
15
- const manifest = await loadManifest(manifestFile);
16
- return (
17
- manifest &&
18
- typeof manifest === 'object' &&
19
- manifest.specVersion &&
20
- (manifest.specVersion === '0.0.2' || manifest.specVersion === '0.0.3')
21
- );
22
- },
23
- apply: async ({ manifestFile }: { manifestFile: string }) => {
24
- await toolbox.patching.patch(manifestFile, {
25
- insert: 'specVersion: 0.0.4',
26
- replace: new RegExp(`specVersion: ['"]?0.0.[23]['"]?`),
27
- });
28
- },
29
- };
@@ -1,10 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import yaml from 'js-yaml';
4
-
5
- export async function loadManifest(manifestFile: string) {
6
- if (manifestFile.match(/.js$/)) {
7
- return require(path.resolve(manifestFile));
8
- }
9
- return yaml.safeLoad(await fs.readFile(manifestFile, 'utf-8'));
10
- }
@@ -1,27 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
-
4
- export async function getGraphTsVersion(sourceDir: string) {
5
- let graphTsPath!: string;
6
-
7
- for (
8
- let dir: string | undefined = path.resolve(sourceDir);
9
- // Terminate after the root dir or when we have found node_modules
10
- dir !== undefined;
11
- // Continue with the parent directory, terminate after the root dir
12
- dir = path.dirname(dir) === dir ? undefined : path.dirname(dir)
13
- ) {
14
- const graphTsNodeModulesPath = path.join(dir, 'node_modules', '@graphprotocol', 'graph-ts');
15
-
16
- if (fs.existsSync(graphTsNodeModulesPath)) {
17
- graphTsPath = graphTsNodeModulesPath;
18
- // Loop until we find the first occurrence of graph-ts in node_modules
19
- break;
20
- }
21
- }
22
-
23
- const pkgJsonFile = path.join(graphTsPath, 'package.json');
24
- const data = await fs.readFile(pkgJsonFile);
25
- const jsonData = JSON.parse(data.toString());
26
- return jsonData.version;
27
- }
package/src/migrations.ts DELETED
@@ -1,33 +0,0 @@
1
- import { step, withSpinner } from './command-helpers/spinner';
2
-
3
- const MIGRATIONS = [
4
- import('./migrations/mapping_api_version_0_0_1'),
5
- import('./migrations/mapping_api_version_0_0_2'),
6
- import('./migrations/mapping_api_version_0_0_3'),
7
- import('./migrations/mapping_api_version_0_0_4'),
8
- import('./migrations/mapping_api_version_0_0_5'),
9
- import('./migrations/spec_version_0_0_2'),
10
- import('./migrations/spec_version_0_0_3'),
11
- ];
12
-
13
- export const applyMigrations = async (options: { sourceDir: string; manifestFile: string }) =>
14
- await withSpinner(
15
- `Apply migrations`,
16
- `Failed to apply migrations`,
17
- `Warnings while applying migraitons`,
18
- async spinner => {
19
- await MIGRATIONS.reduce(async (previousPromise, migrationImport) => {
20
- await previousPromise;
21
- const { default: migration } = await migrationImport;
22
- const skipHint = await migration.predicate(options);
23
- if (typeof skipHint !== 'string' && skipHint) {
24
- step(spinner, 'Apply migration:', migration.name);
25
- await migration.apply(options);
26
- } else if (typeof skipHint === 'string') {
27
- step(spinner, 'Skip migration:', `${migration.name} (${skipHint})`);
28
- } else {
29
- step(spinner, 'Skip migration:', String(migration.name));
30
- }
31
- }, Promise.resolve());
32
- },
33
- );
@@ -1,57 +0,0 @@
1
- # Each referenced type's in any of the types below must be listed
2
- # here either as `scalar` or `type` for the validation code to work
3
- # properly.
4
- #
5
- # That's why `String` is listed as a scalar even though it's built-in
6
- # GraphQL basic types.
7
- scalar String
8
- scalar File
9
- scalar BigInt
10
-
11
- type SubgraphManifest {
12
- specVersion: String!
13
- schema: Schema!
14
- description: String
15
- repository: String
16
- graft: Graft
17
- dataSources: [DataSource!]!
18
- }
19
-
20
- type Schema {
21
- file: File!
22
- }
23
-
24
- type DataSource {
25
- kind: String!
26
- name: String!
27
- network: String
28
- source: ContractSource!
29
- mapping: ContractMapping!
30
- }
31
-
32
- type ContractSource {
33
- owner: String
34
- startBlock: BigInt
35
- }
36
-
37
- type ContractMapping {
38
- apiVersion: String!
39
- language: String!
40
- file: File!
41
- entities: [String!]!
42
- blockHandlers: [BlockHandler!]
43
- transactionHandlers: [TransactionHandler!]
44
- }
45
-
46
- type BlockHandler {
47
- handler: String!
48
- }
49
-
50
- type TransactionHandler {
51
- handler: String!
52
- }
53
-
54
- type Graft {
55
- base: String!
56
- block: BigInt!
57
- }
@@ -1,14 +0,0 @@
1
- export const source = ({ contract }: { contract: string }) => `
2
- owner: '${contract}'`;
3
-
4
- export const mapping = () => `
5
- apiVersion: 0.0.5
6
- language: wasm/assemblyscript
7
- entities:
8
- - Block
9
- - Transaction
10
- blockHandlers:
11
- - handler: handleBlock
12
- transactionHandlers:
13
- - handler: handleTx
14
- file: ./src/mapping.ts`;
@@ -1,49 +0,0 @@
1
- export const generatePlaceholderHandlers = () =>
2
- `
3
- import { arweave, BigInt } from '@graphprotocol/graph-ts'
4
- import { Block, Transaction } from '../generated/schema'
5
-
6
- export function handleBlock(block: arweave.Block): void {
7
- // Entities can be loaded from the store using a indepHash; this indepHash
8
- // needs to be unique across all entities of the same type
9
- let entity = Block.load(block.indepHash.toHexString())
10
-
11
- // Entities only exist after they have been saved to the store;
12
- // \`null\` checks allow to create entities on demand
13
- if (!entity) {
14
- entity = new Block(block.indepHash.toHexString());
15
-
16
- // Entity fields can be set using simple assignments
17
- entity.height = BigInt.fromU64(block.height)
18
- }
19
-
20
- // Entities can be written to the store with \`.save()\`
21
- entity.save()
22
-
23
- // Note: If a handler doesn't require existing field values, it is faster
24
- // _not_ to load the entity from the store. Instead, create it fresh with
25
- // \`new Entity(...)\`, set the fields that should be updated and save the
26
- // entity back to the store. Fields that were not set or unset remain
27
- // unchanged, allowing for partial updates to be applied.
28
- }
29
-
30
- export function handleTx(tb: arweave.TransactionWithBlockPtr): void {
31
- const tx = tb.tx;
32
- const entity = new Transaction(tx.id.toHexString());
33
-
34
- entity.block = tb.block.indepHash;
35
- entity.tx_id = tx.id;
36
- entity.last_tx = tx.lastTx;
37
- entity.owner = tx.owner;
38
- entity.tags = saveTags(tx.id.toHexString(), tx.tags);
39
- entity.data = tx.data;
40
- entity.data_root = tx.dataRoot;
41
- entity.data_size = tx.dataSize;
42
- entity.target = tx.target;
43
- entity.quantity = tx.quantity;
44
- entity.signature = tx.signature;
45
- entity.reward = tx.reward;
46
-
47
- entity.save();
48
- }
49
- `;
@@ -1,22 +0,0 @@
1
- import immutable from 'immutable';
2
- import { Subgraph, SubgraphOptions } from '../subgraph';
3
-
4
- export default class ArweaveSubgraph implements Subgraph {
5
- manifest: SubgraphOptions['manifest'];
6
- resolveFile: SubgraphOptions['resolveFile'];
7
- protocol: SubgraphOptions['protocol'];
8
-
9
- constructor(options: SubgraphOptions) {
10
- this.manifest = options.manifest;
11
- this.resolveFile = options.resolveFile;
12
- this.protocol = options.protocol;
13
- }
14
-
15
- validateManifest() {
16
- return immutable.List();
17
- }
18
-
19
- handlerTypes() {
20
- return immutable.List(['blockHandlers', 'transactionHandlers']);
21
- }
22
- }
@@ -1,9 +0,0 @@
1
- // TODO: make sure the classes implement this type
2
- export interface ContractCtor {
3
- new (account: string): Contract;
4
- identifierName(): string;
5
- }
6
-
7
- export interface Contract {
8
- validate(): { valid: boolean; error: string | null };
9
- }