@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,138 +0,0 @@
1
- import chalk from 'chalk';
2
- import { GluegunToolbox } from 'gluegun';
3
- import { saveDeployKey } from '../command-helpers/auth';
4
- import { fixParameters } from '../command-helpers/gluegun';
5
- import { chooseNodeUrl } from '../command-helpers/node';
6
-
7
- const HELP = `
8
- ${chalk.bold('graph auth')} [options] ${chalk.bold('<node>')} ${chalk.bold('<deploy-key>')}
9
-
10
- ${chalk.dim('Options:')}
11
-
12
- --product <subgraph-studio|hosted-service>
13
- Selects the product for which to authenticate
14
- --studio Shortcut for --product subgraph-studio
15
- -h, --help Show usage information
16
- `;
17
-
18
- export interface AuthOptions {
19
- product?: 'subgraph-studio' | 'hosted-service';
20
- studio?: boolean;
21
- help?: boolean;
22
- // not a cli arg
23
- node?: string;
24
- deployKey?: string;
25
- }
26
-
27
- const processForm = async (
28
- toolbox: GluegunToolbox,
29
- { product, studio, node, deployKey }: AuthOptions,
30
- ) => {
31
- const questions = [
32
- {
33
- type: 'select',
34
- name: 'product',
35
- message: 'Product for which to initialize',
36
- choices: ['subgraph-studio', 'hosted-service'],
37
- skip:
38
- product === 'subgraph-studio' ||
39
- product === 'hosted-service' ||
40
- studio !== undefined ||
41
- node !== undefined,
42
- },
43
- {
44
- type: 'password',
45
- name: 'deployKey',
46
- message: 'Deploy key',
47
- skip: deployKey !== undefined,
48
- },
49
- ];
50
-
51
- try {
52
- const answers = await toolbox.prompt.ask(questions);
53
- return answers;
54
- } catch (e) {
55
- return undefined;
56
- }
57
- };
58
-
59
- export default {
60
- description: 'Sets the deploy key to use when deploying to a Graph node',
61
- run: async (toolbox: GluegunToolbox) => {
62
- // Obtain tools
63
- const { print } = toolbox;
64
-
65
- // Read CLI parameters
66
- const { product, studio, h, help } = toolbox.parameters.options;
67
-
68
- // Show help text if requested
69
- if (help || h) {
70
- print.info(HELP);
71
- return;
72
- }
73
-
74
- let firstParam: string, secondParam: string;
75
- try {
76
- [firstParam, secondParam] = fixParameters(toolbox.parameters, {
77
- h,
78
- help,
79
- studio,
80
- });
81
- } catch (e) {
82
- print.error(e.message);
83
- process.exitCode = 1;
84
- return;
85
- }
86
-
87
- // if user specifies --product or --studio then deployKey is the first parameter
88
- let node: string | undefined;
89
- let deployKey;
90
- if (product || studio) {
91
- ({ node } = chooseNodeUrl({ product, studio, node }));
92
- deployKey = firstParam;
93
- } else {
94
- node = firstParam;
95
- deployKey = secondParam;
96
- }
97
-
98
- if (!node || !deployKey) {
99
- const inputs = await processForm(toolbox, {
100
- product,
101
- studio,
102
- node,
103
- deployKey,
104
- });
105
- if (inputs === undefined) {
106
- process.exit(1);
107
- }
108
- if (!node) {
109
- ({ node } = chooseNodeUrl({
110
- product: inputs.product,
111
- studio,
112
- node,
113
- }));
114
- }
115
- deployKey ||= inputs.deployKey;
116
- }
117
-
118
- if (!deployKey) {
119
- print.error(`No deploy key provided`);
120
- print.info(HELP);
121
- process.exitCode = 1;
122
- return;
123
- }
124
- if (deployKey.length > 200) {
125
- print.error(`Deploy key must not exceed 200 characters`);
126
- process.exitCode = 1;
127
- return;
128
- }
129
-
130
- try {
131
- await saveDeployKey(node!, deployKey);
132
- print.success(`Deploy key set for ${node}`);
133
- } catch (e) {
134
- print.error(e);
135
- process.exitCode = 1;
136
- }
137
- },
138
- };
@@ -1 +0,0 @@
1
- declare module 'binary-install-raw';
@@ -1,147 +0,0 @@
1
- import chalk from 'chalk';
2
- import { GluegunToolbox } from 'gluegun';
3
- import { createCompiler } from '../command-helpers/compiler';
4
- import * as DataSourcesExtractor from '../command-helpers/data-sources';
5
- import { fixParameters } from '../command-helpers/gluegun';
6
- import { updateSubgraphNetwork } from '../command-helpers/network';
7
- import debug from '../debug';
8
- import Protocol from '../protocols';
9
-
10
- const buildDebug = debug('graph-cli:build');
11
-
12
- const HELP = `
13
- ${chalk.bold('graph build')} [options] ${chalk.bold('[<subgraph-manifest>]')}
14
-
15
- Options:
16
-
17
- -h, --help Show usage information
18
- -i, --ipfs <node> Upload build results to an IPFS node
19
- -o, --output-dir <path> Output directory for build results (default: build/)
20
- -t, --output-format <format> Output format for mappings (wasm, wast) (default: wasm)
21
- --skip-migrations Skip subgraph migrations (default: false)
22
- -w, --watch Regenerate types when subgraph files change (default: false)
23
- --network <name> Network configuration to use from the networks config file
24
- --network-file <path> Networks config file path (default: "./networks.json")
25
- `;
26
-
27
- export interface BuildOptions {
28
- help?: boolean;
29
- ipfs?: string;
30
- outputDir?: string;
31
- outputFormat?: string;
32
- skipMigrations?: boolean;
33
- watch?: boolean;
34
- network?: string;
35
- networkFile?: string;
36
- }
37
-
38
- export default {
39
- description: 'Builds a subgraph and (optionally) uploads it to IPFS',
40
- run: async (toolbox: GluegunToolbox) => {
41
- // Obtain tools
42
- const { filesystem, print } = toolbox;
43
-
44
- // Parse CLI parameters
45
- let {
46
- i,
47
- h,
48
- help,
49
- ipfs,
50
- o,
51
- outputDir,
52
- outputFormat,
53
- skipMigrations,
54
- t,
55
- w,
56
- watch,
57
- network,
58
- networkFile,
59
- } = toolbox.parameters.options;
60
-
61
- // Support both short and long option variants
62
- help ||= h;
63
- ipfs ||= i;
64
- outputDir ||= o;
65
- outputFormat ||= t;
66
- watch ||= w;
67
-
68
- let manifest;
69
- try {
70
- [manifest] = fixParameters(toolbox.parameters, {
71
- h,
72
- help,
73
- w,
74
- watch,
75
- });
76
- } catch (e) {
77
- print.error(e.message);
78
- process.exitCode = 1;
79
- return;
80
- }
81
-
82
- // Fall back to default values for options / parameters
83
- outputFormat = outputFormat && ['wasm', 'wast'].includes(outputFormat) ? outputFormat : 'wasm';
84
- outputDir = outputDir && outputDir !== '' ? outputDir : filesystem.path('build');
85
- manifest =
86
- manifest !== undefined && manifest !== '' ? manifest : filesystem.resolve('subgraph.yaml');
87
- networkFile =
88
- networkFile !== undefined && networkFile !== ''
89
- ? networkFile
90
- : filesystem.resolve('networks.json');
91
-
92
- // Show help text if requested
93
- if (help) {
94
- print.info(HELP);
95
- return;
96
- }
97
-
98
- let protocol;
99
- try {
100
- const dataSourcesAndTemplates = await DataSourcesExtractor.fromFilePath(manifest);
101
-
102
- protocol = Protocol.fromDataSources(dataSourcesAndTemplates);
103
- } catch (e) {
104
- print.error(e.message);
105
- process.exitCode = 1;
106
- return;
107
- }
108
-
109
- buildDebug('Detected protocol "%s" (%o)', protocol.name, protocol);
110
-
111
- if (network && filesystem.exists(networkFile) !== 'file') {
112
- print.error(`Network file '${networkFile}' does not exists or is not a file!`);
113
- process.exitCode = 1;
114
- return;
115
- }
116
-
117
- if (network) {
118
- const identifierName = protocol.getContract()!.identifierName();
119
- await updateSubgraphNetwork(toolbox, manifest, network, networkFile, identifierName);
120
- }
121
-
122
- const compiler = createCompiler(manifest, {
123
- ipfs,
124
- outputDir,
125
- outputFormat,
126
- skipMigrations,
127
- protocol,
128
- });
129
-
130
- // Exit with an error code if the compiler couldn't be created
131
- if (!compiler) {
132
- process.exitCode = 1;
133
- return;
134
- }
135
-
136
- // Watch subgraph files for changes or additions, trigger
137
- // compile (if watch argument specified)
138
- if (watch) {
139
- await compiler.watchAndCompile();
140
- } else {
141
- const result = await compiler.compile();
142
- if (result === false) {
143
- process.exitCode = 1;
144
- }
145
- }
146
- },
147
- };
@@ -1,123 +0,0 @@
1
- import path from 'path';
2
- import chalk from 'chalk';
3
- import { GluegunToolbox } from 'gluegun';
4
- import * as DataSourcesExtractor from '../command-helpers/data-sources';
5
- import { fixParameters } from '../command-helpers/gluegun';
6
- import { assertGraphTsVersion, assertManifestApiVersion } from '../command-helpers/version';
7
- import debug from '../debug';
8
- import Protocol from '../protocols';
9
- import TypeGenerator from '../type-generator';
10
-
11
- const HELP = `
12
- ${chalk.bold('graph codegen')} [options] ${chalk.bold('[<subgraph-manifest>]')}
13
- Options:
14
- -h, --help Show usage information
15
- -o, --output-dir <path> Output directory for generated types (default: generated/)
16
- --skip-migrations Skip subgraph migrations (default: false)
17
- -w, --watch Regenerate types when subgraph files change (default: false)
18
- -u, --uncrashable Generate Float Subgraph Uncrashable helper file
19
- -uc, --uncrashable-config <path> Directory for uncrashable config (default: ./uncrashable-config.yaml)
20
- `;
21
-
22
- export interface CodeGenOptions {
23
- help?: boolean;
24
- outputDir?: string;
25
- skipMigrations?: boolean;
26
- watch?: boolean;
27
- uncrashable?: boolean;
28
- uncrashableConfig?: string;
29
- }
30
-
31
- const codegenDebug = debug('graph-cli:codegen');
32
-
33
- export default {
34
- description: 'Generates AssemblyScript types for a subgraph',
35
- run: async (toolbox: GluegunToolbox) => {
36
- // Obtain tools
37
- const { filesystem, print } = toolbox;
38
-
39
- // Read CLI parameters
40
- let { h, help, o, outputDir, skipMigrations, w, watch, u, uncrashable, uc, uncrashableConfig } =
41
- toolbox.parameters.options;
42
-
43
- // Support both long and short option variants
44
- help ||= h;
45
- outputDir ||= o;
46
- watch ||= w;
47
- uncrashable ||= u;
48
- let uncrashable_config = uncrashableConfig || uc;
49
-
50
- let manifest;
51
- try {
52
- [manifest] = fixParameters(toolbox.parameters, {
53
- h,
54
- help,
55
- skipMigrations,
56
- w,
57
- watch,
58
- u,
59
- uncrashable,
60
- });
61
- } catch (e) {
62
- print.error(e.message);
63
- process.exitCode = 1;
64
- return;
65
- }
66
-
67
- codegenDebug('Initialized codegen manifest: %o', manifest);
68
-
69
- // Fall back to default values for options / parameters
70
- outputDir =
71
- outputDir !== undefined && outputDir !== '' ? outputDir : filesystem.path('generated');
72
- manifest =
73
- manifest !== undefined && manifest !== '' ? manifest : filesystem.resolve('subgraph.yaml');
74
-
75
- uncrashable_config =
76
- uncrashable_config !== undefined && uncrashable_config !== ''
77
- ? uncrashable_config
78
- : filesystem.resolve('uncrashable-config.yaml');
79
-
80
- // Show help text if requested
81
- if (help) {
82
- print.info(HELP);
83
- return;
84
- }
85
-
86
- let protocol;
87
- try {
88
- // Checks to make sure codegen doesn't run against
89
- // older subgraphs (both apiVersion and graph-ts version).
90
- //
91
- // We don't want codegen to run without these conditions
92
- // because that would mean the CLI would generate code to
93
- // the wrong AssemblyScript version.
94
- await assertManifestApiVersion(manifest, '0.0.5');
95
- await assertGraphTsVersion(path.dirname(manifest), '0.25.0');
96
-
97
- const dataSourcesAndTemplates = await DataSourcesExtractor.fromFilePath(manifest);
98
-
99
- protocol = Protocol.fromDataSources(dataSourcesAndTemplates);
100
- } catch (e) {
101
- print.error(e.message);
102
- process.exitCode = 1;
103
- return;
104
- }
105
-
106
- const generator = new TypeGenerator({
107
- subgraphManifest: manifest,
108
- outputDir,
109
- skipMigrations,
110
- protocol,
111
- uncrashable,
112
- uncrashableConfig: uncrashable_config,
113
- });
114
-
115
- // Watch working directory for file updates or additions, trigger
116
- // type generation (if watch argument specified)
117
- if (watch) {
118
- await generator.watchAndGenerateTypes();
119
- } else if (!(await generator.generateTypes())) {
120
- process.exitCode = 1;
121
- }
122
- },
123
- };
@@ -1,109 +0,0 @@
1
- import { URL } from 'url';
2
- import chalk from 'chalk';
3
- import { GluegunToolbox } from 'gluegun';
4
- import { identifyDeployKey as identifyAccessToken } from '../command-helpers/auth';
5
- import { createJsonRpcClient } from '../command-helpers/jsonrpc';
6
- import { validateNodeUrl } from '../command-helpers/node';
7
-
8
- const HELP = `
9
- ${chalk.bold('graph create')} ${chalk.dim('[options]')} ${chalk.bold('<subgraph-name>')}
10
-
11
- ${chalk.dim('Options:')}
12
-
13
- --access-token <token> Graph access token
14
- -h, --help Show usage information
15
- -g, --node <url> Graph node to create the subgraph in
16
- `;
17
-
18
- export interface CreateOptions {
19
- accessToken?: string;
20
- help?: boolean;
21
- node?: string;
22
- }
23
-
24
- export default {
25
- description: 'Registers a subgraph name',
26
- run: async (toolbox: GluegunToolbox) => {
27
- // Obtain tools
28
- const { print } = toolbox;
29
-
30
- // Read CLI parameters
31
- let { accessToken, g, h, help, node } = toolbox.parameters.options;
32
- const subgraphName = toolbox.parameters.first;
33
-
34
- // Support both long and short option variants
35
- node ||= g;
36
- help ||= h;
37
-
38
- // Show help text if requested
39
- if (help) {
40
- print.info(HELP);
41
- return;
42
- }
43
-
44
- // Validate the subgraph name
45
- if (!subgraphName) {
46
- print.error('No subgraph name provided');
47
- print.info(HELP);
48
- process.exitCode = 1;
49
- return;
50
- }
51
-
52
- // Validate node
53
- if (!node) {
54
- print.error(`No Graph node provided`);
55
- print.info(HELP);
56
- process.exitCode = 1;
57
- return;
58
- }
59
- try {
60
- validateNodeUrl(node);
61
- } catch (e) {
62
- print.error(`Graph node "${node}" is invalid: ${e.message}`);
63
- process.exitCode = 1;
64
- return;
65
- }
66
-
67
- const requestUrl = new URL(node);
68
- const client = createJsonRpcClient(requestUrl);
69
-
70
- // Exit with an error code if the client couldn't be created
71
- if (!client) {
72
- process.exitCode = 1;
73
- return;
74
- }
75
-
76
- // Use the access token, if one is set
77
- accessToken = await identifyAccessToken(node, accessToken);
78
- if (accessToken !== undefined && accessToken !== null) {
79
- // @ts-expect-error options property seems to exist
80
- client.options.headers = { Authorization: `Bearer ${accessToken}` };
81
- }
82
-
83
- const spinner = print.spin(`Creating subgraph in Graph node: ${requestUrl}`);
84
- client.request(
85
- 'subgraph_create',
86
- { name: subgraphName },
87
- (
88
- // @ts-expect-error TODO: why are the arguments not typed?
89
- requestError,
90
- // @ts-expect-error TODO: why are the arguments not typed?
91
- jsonRpcError,
92
- // TODO: this argument is unused, but removing it fails the basic-event-handlers tests
93
- // @ts-expect-error TODO: why are the arguments not typed?
94
- _res,
95
- ) => {
96
- if (jsonRpcError) {
97
- spinner.fail(`Error creating the subgraph: ${jsonRpcError.message}`);
98
- process.exitCode = 1;
99
- } else if (requestError) {
100
- spinner.fail(`HTTP error creating the subgraph: ${requestError.code}`);
101
- process.exitCode = 1;
102
- } else {
103
- spinner.stop();
104
- print.success(`Created subgraph: ${subgraphName}`);
105
- }
106
- },
107
- );
108
- },
109
- };