@graphprotocol/graph-cli 0.37.2 → 0.37.3-alpha-20230110163550-d64bef6

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 (206) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/babel.config.js +3 -0
  3. package/dist/bin.js +6 -0
  4. package/dist/cli.js +32 -0
  5. package/dist/codegen/schema.js +250 -0
  6. package/dist/codegen/schema.test.js +458 -0
  7. package/dist/codegen/template.js +65 -0
  8. package/dist/codegen/types/conversions.js +359 -0
  9. package/dist/codegen/types/index.js +71 -0
  10. package/dist/codegen/types/index.test.js +563 -0
  11. package/dist/codegen/typescript.js +200 -0
  12. package/dist/codegen/util.js +46 -0
  13. package/dist/codegen/util.test.js +93 -0
  14. package/dist/command-helpers/abi.js +78 -0
  15. package/dist/command-helpers/auth.js +77 -0
  16. package/dist/command-helpers/compiler.js +66 -0
  17. package/dist/command-helpers/data-sources.js +29 -0
  18. package/dist/command-helpers/fs.js +9 -0
  19. package/dist/command-helpers/gluegun.js +49 -0
  20. package/dist/command-helpers/ipfs.js +5 -0
  21. package/dist/command-helpers/jsonrpc.js +29 -0
  22. package/dist/command-helpers/network.js +93 -0
  23. package/dist/command-helpers/network.test.js +86 -0
  24. package/dist/command-helpers/node.js +40 -0
  25. package/dist/command-helpers/scaffold.js +112 -0
  26. package/dist/command-helpers/spinner.js +84 -0
  27. package/dist/command-helpers/studio.js +13 -0
  28. package/dist/command-helpers/studio.test.js +41 -0
  29. package/dist/command-helpers/subgraph.js +24 -0
  30. package/dist/command-helpers/version.js +74 -0
  31. package/dist/command-helpers/version.test.js +179 -0
  32. package/dist/commands/add.js +190 -0
  33. package/dist/commands/auth.js +127 -0
  34. package/dist/commands/build.js +140 -0
  35. package/dist/commands/codegen.js +135 -0
  36. package/dist/commands/create.js +86 -0
  37. package/dist/commands/deploy.js +334 -0
  38. package/dist/commands/init.js +788 -0
  39. package/dist/commands/local.js +387 -0
  40. package/dist/commands/remove.js +86 -0
  41. package/dist/commands/test.js +295 -0
  42. package/dist/compiler/asc.js +83 -0
  43. package/dist/compiler/index.js +474 -0
  44. package/dist/debug.js +16 -0
  45. package/dist/migrations/mapping_api_version_0_0_1.js +78 -0
  46. package/dist/migrations/mapping_api_version_0_0_2.js +76 -0
  47. package/dist/migrations/mapping_api_version_0_0_3.js +78 -0
  48. package/dist/migrations/mapping_api_version_0_0_4.js +80 -0
  49. package/dist/migrations/mapping_api_version_0_0_5.js +80 -0
  50. package/dist/migrations/spec_version_0_0_2.js +49 -0
  51. package/dist/migrations/spec_version_0_0_3.js +54 -0
  52. package/dist/migrations/util/load-manifest.js +18 -0
  53. package/dist/migrations/util/versions.js +29 -0
  54. package/dist/migrations.js +56 -0
  55. package/dist/protocols/arweave/manifest.graphql +57 -0
  56. package/dist/protocols/arweave/scaffold/manifest.js +18 -0
  57. package/dist/protocols/arweave/scaffold/mapping.js +52 -0
  58. package/dist/protocols/arweave/subgraph.js +23 -0
  59. package/dist/protocols/cosmos/manifest.graphql +76 -0
  60. package/dist/protocols/cosmos/scaffold/manifest.js +15 -0
  61. package/dist/protocols/cosmos/scaffold/mapping.js +38 -0
  62. package/dist/protocols/cosmos/subgraph.js +25 -0
  63. package/dist/protocols/ethereum/abi.js +140 -0
  64. package/dist/protocols/ethereum/codegen/abi.js +451 -0
  65. package/dist/protocols/ethereum/codegen/abi.test.js +328 -0
  66. package/dist/protocols/ethereum/codegen/template.js +50 -0
  67. package/dist/protocols/ethereum/contract.js +20 -0
  68. package/dist/protocols/ethereum/manifest.graphql +94 -0
  69. package/dist/protocols/ethereum/scaffold/manifest.js +32 -0
  70. package/dist/protocols/ethereum/scaffold/mapping.js +65 -0
  71. package/dist/protocols/ethereum/subgraph.js +171 -0
  72. package/dist/protocols/ethereum/type-generator.js +125 -0
  73. package/dist/protocols/index.js +268 -0
  74. package/dist/protocols/ipfs/codegen/file_template.js +50 -0
  75. package/dist/protocols/near/contract.js +41 -0
  76. package/dist/protocols/near/manifest.graphql +64 -0
  77. package/dist/protocols/near/scaffold/manifest.js +16 -0
  78. package/dist/protocols/near/scaffold/mapping.js +38 -0
  79. package/dist/protocols/near/subgraph.js +20 -0
  80. package/dist/protocols/subgraph.js +2 -0
  81. package/dist/protocols/substreams/manifest.graphql +45 -0
  82. package/dist/protocols/substreams/scaffold/manifest.js +12 -0
  83. package/dist/protocols/substreams/subgraph.js +23 -0
  84. package/dist/scaffold/cosmos.test.js +83 -0
  85. package/dist/scaffold/ethereum.test.js +505 -0
  86. package/dist/scaffold/index.js +128 -0
  87. package/dist/scaffold/mapping.js +61 -0
  88. package/dist/scaffold/near.test.js +86 -0
  89. package/dist/scaffold/schema.js +83 -0
  90. package/dist/scaffold/tests.js +175 -0
  91. package/dist/schema.js +54 -0
  92. package/dist/subgraph.js +249 -0
  93. package/dist/type-generator.js +224 -0
  94. package/dist/validation/contract.js +46 -0
  95. package/dist/validation/index.js +8 -0
  96. package/dist/validation/manifest.js +271 -0
  97. package/dist/validation/schema.js +796 -0
  98. package/dist/validation/schema.test.js +35 -0
  99. package/dist/watcher.js +79 -0
  100. package/jest.config.js +1 -1
  101. package/package.json +16 -9
  102. package/{bin/graph → src/bin.ts} +2 -1
  103. package/src/cli.ts +36 -0
  104. package/src/codegen/schema.js +23 -22
  105. package/src/codegen/schema.test.js +33 -27
  106. package/src/codegen/{template.js → template.ts} +8 -6
  107. package/src/codegen/types/conversions.ts +382 -0
  108. package/src/codegen/types/index.js +4 -7
  109. package/src/codegen/types/index.test.js +10 -4
  110. package/src/codegen/{typescript.js → typescript.ts} +44 -26
  111. package/src/codegen/util.js +1 -1
  112. package/src/codegen/util.test.js +5 -2
  113. package/src/command-helpers/abi.js +46 -30
  114. package/src/command-helpers/auth.js +6 -9
  115. package/src/command-helpers/compiler.js +4 -6
  116. package/src/command-helpers/data-sources.js +8 -11
  117. package/src/command-helpers/fs.ts +5 -0
  118. package/src/command-helpers/gluegun.js +2 -4
  119. package/src/command-helpers/ipfs.ts +3 -0
  120. package/src/command-helpers/{jsonrpc.js → jsonrpc.ts} +11 -16
  121. package/src/command-helpers/network.js +58 -44
  122. package/src/command-helpers/network.test.js +23 -19
  123. package/src/command-helpers/node.js +3 -7
  124. package/src/command-helpers/scaffold.js +34 -25
  125. package/src/command-helpers/{spinner.js → spinner.ts} +10 -10
  126. package/src/command-helpers/studio.test.js +61 -30
  127. package/src/command-helpers/studio.ts +20 -0
  128. package/src/command-helpers/{subgraph.js → subgraph.ts} +6 -6
  129. package/src/command-helpers/version.js +11 -16
  130. package/src/command-helpers/version.test.js +111 -82
  131. package/src/commands/add.js +49 -35
  132. package/src/commands/auth.js +13 -25
  133. package/src/commands/build.js +9 -9
  134. package/src/commands/codegen.js +12 -12
  135. package/src/commands/create.js +22 -22
  136. package/src/commands/deploy.js +39 -34
  137. package/src/commands/init.js +21 -24
  138. package/src/commands/local.js +15 -14
  139. package/src/commands/remove.js +22 -22
  140. package/src/commands/test.js +86 -70
  141. package/src/compiler/{asc.js → asc.ts} +29 -16
  142. package/src/compiler/index.js +18 -18
  143. package/src/{debug.js → debug.ts} +2 -2
  144. package/src/migrations/mapping_api_version_0_0_1.js +7 -7
  145. package/src/migrations/mapping_api_version_0_0_2.js +5 -5
  146. package/src/migrations/mapping_api_version_0_0_3.js +7 -7
  147. package/src/migrations/mapping_api_version_0_0_4.js +7 -7
  148. package/src/migrations/mapping_api_version_0_0_5.js +7 -7
  149. package/src/migrations/spec_version_0_0_2.js +5 -5
  150. package/src/migrations/spec_version_0_0_3.js +5 -5
  151. package/src/migrations/util/load-manifest.js +6 -9
  152. package/src/migrations/util/versions.js +5 -10
  153. package/src/{migrations.js → migrations.ts} +14 -15
  154. package/src/protocols/arweave/scaffold/manifest.js +1 -4
  155. package/src/protocols/arweave/scaffold/mapping.js +1 -3
  156. package/src/protocols/arweave/subgraph.ts +22 -0
  157. package/src/protocols/cosmos/scaffold/manifest.js +1 -4
  158. package/src/protocols/cosmos/scaffold/mapping.js +1 -3
  159. package/src/protocols/cosmos/subgraph.js +2 -2
  160. package/src/protocols/ethereum/abi.js +7 -13
  161. package/src/protocols/ethereum/codegen/abi.js +219 -222
  162. package/src/protocols/ethereum/codegen/abi.test.js +6 -6
  163. package/src/protocols/ethereum/codegen/template.js +3 -5
  164. package/src/protocols/ethereum/contract.js +3 -2
  165. package/src/protocols/ethereum/scaffold/manifest.js +4 -7
  166. package/src/protocols/ethereum/scaffold/mapping.js +4 -11
  167. package/src/protocols/ethereum/subgraph.js +21 -20
  168. package/src/protocols/ethereum/type-generator.js +24 -30
  169. package/src/protocols/{index.js → index.ts} +65 -46
  170. package/src/protocols/ipfs/codegen/file_template.js +2 -2
  171. package/src/protocols/near/{contract.js → contract.ts} +16 -12
  172. package/src/protocols/near/scaffold/manifest.js +2 -5
  173. package/src/protocols/near/scaffold/mapping.js +1 -3
  174. package/src/protocols/near/subgraph.js +3 -6
  175. package/src/protocols/subgraph.ts +12 -0
  176. package/src/protocols/substreams/scaffold/{manifest.js → manifest.ts} +2 -7
  177. package/src/protocols/substreams/subgraph.ts +22 -0
  178. package/src/scaffold/cosmos.test.js +3 -3
  179. package/src/scaffold/ethereum.test.js +4 -4
  180. package/src/scaffold/index.js +7 -7
  181. package/src/scaffold/mapping.js +3 -3
  182. package/src/scaffold/near.test.js +3 -3
  183. package/src/scaffold/schema.js +4 -4
  184. package/src/scaffold/tests.js +72 -58
  185. package/src/schema.ts +26 -0
  186. package/src/{subgraph.js → subgraph.ts} +80 -60
  187. package/src/type-generator.js +20 -20
  188. package/src/validation/contract.js +2 -6
  189. package/src/validation/index.js +1 -1
  190. package/src/validation/manifest.js +24 -22
  191. package/src/validation/schema.test.js +1 -1
  192. package/src/validation/{schema.js → schema.ts} +268 -221
  193. package/src/{watcher.js → watcher.ts} +23 -12
  194. package/tests/cli/globalSetup.js +2 -2
  195. package/tests/cli/globalTeardown.js +2 -2
  196. package/tests/cli/init.test.js +2 -2
  197. package/tests/cli/util.js +7 -13
  198. package/tsconfig.json +18 -0
  199. package/src/cli.js +0 -38
  200. package/src/codegen/types/conversions.js +0 -329
  201. package/src/command-helpers/fs.js +0 -8
  202. package/src/command-helpers/ipfs.js +0 -6
  203. package/src/command-helpers/studio.js +0 -15
  204. package/src/protocols/arweave/subgraph.js +0 -20
  205. package/src/protocols/substreams/subgraph.js +0 -17
  206. package/src/schema.js +0 -23
@@ -0,0 +1,78 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const semver_1 = __importDefault(require("semver"));
31
+ const toolbox = __importStar(require("gluegun/toolbox"));
32
+ const js_yaml_1 = __importDefault(require("js-yaml"));
33
+ const load_manifest_1 = require("./util/load-manifest");
34
+ const versions_1 = require("./util/versions");
35
+ // If any of the manifest apiVersions are 0.0.3, replace them with 0.0.4
36
+ exports.default = {
37
+ name: 'Bump mapping apiVersion from 0.0.3 to 0.0.4',
38
+ predicate: async ({ sourceDir, manifestFile }) => {
39
+ // Obtain the graph-ts version, if possible
40
+ let graphTsVersion;
41
+ try {
42
+ graphTsVersion = await (0, versions_1.getGraphTsVersion)(sourceDir);
43
+ }
44
+ catch (_) {
45
+ // If we cannot obtain the version, return a hint that the graph-ts
46
+ // hasn't been installed yet
47
+ return 'graph-ts dependency not installed yet';
48
+ }
49
+ let manifest = await (0, load_manifest_1.loadManifest)(manifestFile);
50
+ return (
51
+ // Only migrate if the graph-ts version is > 0.17.0...
52
+ semver_1.default.gt(graphTsVersion, '0.17.0') &&
53
+ // ...and we have a manifest with mapping > apiVersion = 0.0.3
54
+ manifest &&
55
+ typeof manifest === 'object' &&
56
+ Array.isArray(manifest.dataSources) &&
57
+ (manifest.dataSources.reduce((hasOldMappings, dataSource) => hasOldMappings ||
58
+ (typeof dataSource === 'object' &&
59
+ dataSource.mapping &&
60
+ typeof dataSource.mapping === 'object' &&
61
+ dataSource.mapping.apiVersion === '0.0.3'), false) ||
62
+ (Array.isArray(manifest.templates) &&
63
+ manifest.templates.reduce((hasOldMappings, template) => hasOldMappings ||
64
+ (typeof template === 'object' &&
65
+ template.mapping &&
66
+ typeof template.mapping === 'object' &&
67
+ template.mapping.apiVersion === '0.0.3'), false))));
68
+ },
69
+ apply: async ({ manifestFile }) => {
70
+ // Make sure we catch all variants; we could load the manifest
71
+ // and replace the values in the data structures here; unfortunately
72
+ // writing that back to the file messes with the formatting more than
73
+ // we'd like; that's why for now, we use a simple patching approach
74
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: 0.0.3', 'g'), 'apiVersion: 0.0.4');
75
+ await toolbox.patching.replace(manifestFile, new RegExp("apiVersion: '0.0.3'", 'g'), "apiVersion: '0.0.4'");
76
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: "0.0.3"', 'g'), 'apiVersion: "0.0.4"');
77
+ },
78
+ };
@@ -0,0 +1,80 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const semver_1 = __importDefault(require("semver"));
31
+ const toolbox = __importStar(require("gluegun/toolbox"));
32
+ const js_yaml_1 = __importDefault(require("js-yaml"));
33
+ const load_manifest_1 = require("./util/load-manifest");
34
+ const versions_1 = require("./util/versions");
35
+ // If any of the manifest apiVersions are 0.0.4, replace them with 0.0.5
36
+ exports.default = {
37
+ name: 'Bump mapping apiVersion from 0.0.4 to 0.0.5',
38
+ predicate: async ({ sourceDir, manifestFile }) => {
39
+ // Obtain the graph-ts version, if possible
40
+ let graphTsVersion;
41
+ try {
42
+ graphTsVersion = await (0, versions_1.getGraphTsVersion)(sourceDir);
43
+ }
44
+ catch (_) {
45
+ // If we cannot obtain the version, return a hint that the graph-ts
46
+ // hasn't been installed yet
47
+ return 'graph-ts dependency not installed yet';
48
+ }
49
+ let manifest = await (0, load_manifest_1.loadManifest)(manifestFile);
50
+ return (
51
+ // Only migrate if the graph-ts version is >= 0.22.0...
52
+ // Coerce needed because we may be dealing with an alpha version
53
+ // and in the `semver` library this would not return true on equality.
54
+ semver_1.default.gte(semver_1.default.coerce(graphTsVersion), '0.22.0') &&
55
+ // ...and we have a manifest with mapping > apiVersion = 0.0.4
56
+ manifest &&
57
+ typeof manifest === 'object' &&
58
+ Array.isArray(manifest.dataSources) &&
59
+ (manifest.dataSources.reduce((hasOldMappings, dataSource) => hasOldMappings ||
60
+ (typeof dataSource === 'object' &&
61
+ dataSource.mapping &&
62
+ typeof dataSource.mapping === 'object' &&
63
+ dataSource.mapping.apiVersion === '0.0.4'), false) ||
64
+ (Array.isArray(manifest.templates) &&
65
+ manifest.templates.reduce((hasOldMappings, template) => hasOldMappings ||
66
+ (typeof template === 'object' &&
67
+ template.mapping &&
68
+ typeof template.mapping === 'object' &&
69
+ template.mapping.apiVersion === '0.0.4'), false))));
70
+ },
71
+ apply: async ({ manifestFile }) => {
72
+ // Make sure we catch all variants; we could load the manifest
73
+ // and replace the values in the data structures here; unfortunately
74
+ // writing that back to the file messes with the formatting more than
75
+ // we'd like; that's why for now, we use a simple patching approach
76
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: 0.0.4', 'g'), 'apiVersion: 0.0.5');
77
+ await toolbox.patching.replace(manifestFile, new RegExp("apiVersion: '0.0.4'", 'g'), "apiVersion: '0.0.5'");
78
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: "0.0.4"', 'g'), 'apiVersion: "0.0.5"');
79
+ },
80
+ };
@@ -0,0 +1,80 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const semver_1 = __importDefault(require("semver"));
31
+ const toolbox = __importStar(require("gluegun/toolbox"));
32
+ const js_yaml_1 = __importDefault(require("js-yaml"));
33
+ const load_manifest_1 = require("./util/load-manifest");
34
+ const versions_1 = require("./util/versions");
35
+ // If any of the manifest apiVersions are 0.0.5, replace them with 0.0.6
36
+ exports.default = {
37
+ name: 'Bump mapping apiVersion from 0.0.5 to 0.0.6',
38
+ predicate: async ({ sourceDir, manifestFile }) => {
39
+ // Obtain the graph-ts version, if possible
40
+ let graphTsVersion;
41
+ try {
42
+ graphTsVersion = await (0, versions_1.getGraphTsVersion)(sourceDir);
43
+ }
44
+ catch (_) {
45
+ // If we cannot obtain the version, return a hint that the graph-ts
46
+ // hasn't been installed yet
47
+ return 'graph-ts dependency not installed yet';
48
+ }
49
+ let manifest = await (0, load_manifest_1.loadManifest)(manifestFile);
50
+ return (
51
+ // Only migrate if the graph-ts version is >= 0.24.0...
52
+ // Coerce needed because we may be dealing with an alpha version
53
+ // and in the `semver` library this would not return true on equality.
54
+ semver_1.default.gte(semver_1.default.coerce(graphTsVersion), '0.24.0') &&
55
+ // ...and we have a manifest with mapping > apiVersion = 0.0.5
56
+ manifest &&
57
+ typeof manifest === 'object' &&
58
+ Array.isArray(manifest.dataSources) &&
59
+ (manifest.dataSources.reduce((hasOldMappings, dataSource) => hasOldMappings ||
60
+ (typeof dataSource === 'object' &&
61
+ dataSource.mapping &&
62
+ typeof dataSource.mapping === 'object' &&
63
+ dataSource.mapping.apiVersion === '0.0.5'), false) ||
64
+ (Array.isArray(manifest.templates) &&
65
+ manifest.templates.reduce((hasOldMappings, template) => hasOldMappings ||
66
+ (typeof template === 'object' &&
67
+ template.mapping &&
68
+ typeof template.mapping === 'object' &&
69
+ template.mapping.apiVersion === '0.0.5'), false))));
70
+ },
71
+ apply: async ({ manifestFile }) => {
72
+ // Make sure we catch all variants; we could load the manifest
73
+ // and replace the values in the data structures here; unfortunately
74
+ // writing that back to the file messes with the formatting more than
75
+ // we'd like; that's why for now, we use a simple patching approach
76
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: 0.0.5', 'g'), 'apiVersion: 0.0.6');
77
+ await toolbox.patching.replace(manifestFile, new RegExp("apiVersion: '0.0.5'", 'g'), "apiVersion: '0.0.6'");
78
+ await toolbox.patching.replace(manifestFile, new RegExp('apiVersion: "0.0.5"', 'g'), 'apiVersion: "0.0.6"');
79
+ },
80
+ };
@@ -0,0 +1,49 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const toolbox = __importStar(require("gluegun/toolbox"));
31
+ const js_yaml_1 = __importDefault(require("js-yaml"));
32
+ const load_manifest_1 = require("./util/load-manifest");
33
+ // Spec version to 0.0.2 uses top level templates. graph-cli no longer supports
34
+ // 0.0.1 which used nested templates.
35
+ exports.default = {
36
+ name: 'Bump manifest specVersion from 0.0.1 to 0.0.2',
37
+ predicate: async ({ sourceDir, manifestFile }) => {
38
+ let manifest = await (0, load_manifest_1.loadManifest)(manifestFile);
39
+ return (manifest &&
40
+ typeof manifest === 'object' &&
41
+ manifest.specVersion &&
42
+ manifest.specVersion === '0.0.1');
43
+ },
44
+ apply: async ({ manifestFile }) => {
45
+ await toolbox.patching.replace(manifestFile, 'specVersion: 0.0.1', 'specVersion: 0.0.2');
46
+ await toolbox.patching.replace(manifestFile, "specVersion: '0.0.1'", "specVersion: '0.0.2'");
47
+ await toolbox.patching.replace(manifestFile, 'specVersion: "0.0.1"', 'specVersion: "0.0.2"');
48
+ },
49
+ };
@@ -0,0 +1,54 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const toolbox = __importStar(require("gluegun/toolbox"));
31
+ const js_yaml_1 = __importDefault(require("js-yaml"));
32
+ const load_manifest_1 = require("./util/load-manifest");
33
+ // Spec version 0.0.4 uses feature management, but features are
34
+ // detected and validated by the graph-node instance during subgraph
35
+ // deployment.
36
+ //
37
+ // Also, we skip spec version 0.0.3, which is considered invalid and
38
+ // non-canonical.
39
+ exports.default = {
40
+ name: 'Bump manifest specVersion from 0.0.2 to 0.0.4',
41
+ predicate: async ({ sourceDir, manifestFile }) => {
42
+ let manifest = await (0, load_manifest_1.loadManifest)(manifestFile);
43
+ return (manifest &&
44
+ typeof manifest === 'object' &&
45
+ manifest.specVersion &&
46
+ (manifest.specVersion === '0.0.2' || manifest.specVersion === '0.0.3'));
47
+ },
48
+ apply: async ({ manifestFile }) => {
49
+ await toolbox.patching.patch(manifestFile, {
50
+ insert: 'specVersion: 0.0.4',
51
+ replace: new RegExp(`specVersion: ['"]?0.0.[23]['"]?`),
52
+ });
53
+ },
54
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadManifest = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const js_yaml_1 = __importDefault(require("js-yaml"));
10
+ async function loadManifest(manifestFile) {
11
+ if (manifestFile.match(/.js$/)) {
12
+ return require(path_1.default.resolve(manifestFile));
13
+ }
14
+ else {
15
+ return js_yaml_1.default.safeLoad(await fs_extra_1.default.readFile(manifestFile, 'utf-8'));
16
+ }
17
+ }
18
+ exports.loadManifest = loadManifest;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getGraphTsVersion = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const js_yaml_1 = __importDefault(require("js-yaml"));
10
+ const getGraphTsVersion = async (sourceDir) => {
11
+ let graphTsPath;
12
+ for (let dir = path_1.default.resolve(sourceDir);
13
+ // Terminate after the root dir or when we have found node_modules
14
+ dir !== undefined;
15
+ // Continue with the parent directory, terminate after the root dir
16
+ dir = path_1.default.dirname(dir) === dir ? undefined : path_1.default.dirname(dir)) {
17
+ let graphTsNodeModulesPath = path_1.default.join(dir, 'node_modules', '@graphprotocol', 'graph-ts');
18
+ if (fs_extra_1.default.existsSync(graphTsNodeModulesPath)) {
19
+ graphTsPath = graphTsNodeModulesPath;
20
+ // Loop until we find the first occurrence of graph-ts in node_modules
21
+ break;
22
+ }
23
+ }
24
+ let pkgJsonFile = path_1.default.join(graphTsPath, 'package.json');
25
+ let data = await fs_extra_1.default.readFile(pkgJsonFile);
26
+ let jsonData = JSON.parse(data);
27
+ return jsonData.version;
28
+ };
29
+ exports.getGraphTsVersion = getGraphTsVersion;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.applyMigrations = void 0;
27
+ const spinner_1 = require("./command-helpers/spinner");
28
+ const MIGRATIONS = [
29
+ Promise.resolve().then(() => __importStar(require('./migrations/mapping_api_version_0_0_1'))),
30
+ Promise.resolve().then(() => __importStar(require('./migrations/mapping_api_version_0_0_2'))),
31
+ Promise.resolve().then(() => __importStar(require('./migrations/mapping_api_version_0_0_3'))),
32
+ Promise.resolve().then(() => __importStar(require('./migrations/mapping_api_version_0_0_4'))),
33
+ Promise.resolve().then(() => __importStar(require('./migrations/mapping_api_version_0_0_5'))),
34
+ Promise.resolve().then(() => __importStar(require('./migrations/spec_version_0_0_2'))),
35
+ Promise.resolve().then(() => __importStar(require('./migrations/spec_version_0_0_3'))),
36
+ ];
37
+ const applyMigrations = async (options) => await (0, spinner_1.withSpinner)(`Apply migrations`, `Failed to apply migrations`, `Warnings while applying migraitons`, async (spinner) => {
38
+ await MIGRATIONS.reduce(async (previousPromise, migrationImport) => {
39
+ await previousPromise;
40
+ const { default: migration } = await migrationImport;
41
+ let skipHint = await migration.predicate(options);
42
+ if (typeof skipHint !== 'string' && skipHint) {
43
+ (0, spinner_1.step)(spinner, 'Apply migration:', migration.name);
44
+ await migration.apply(options);
45
+ }
46
+ else {
47
+ if (typeof skipHint === 'string') {
48
+ (0, spinner_1.step)(spinner, 'Skip migration:', `${migration.name} (${skipHint})`);
49
+ }
50
+ else {
51
+ (0, spinner_1.step)(spinner, 'Skip migration:', `${migration.name}`);
52
+ }
53
+ }
54
+ }, Promise.resolve());
55
+ });
56
+ exports.applyMigrations = applyMigrations;
@@ -0,0 +1,57 @@
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
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapping = exports.source = void 0;
4
+ const source = ({ contract }) => `
5
+ owner: '${contract}'`;
6
+ exports.source = source;
7
+ const mapping = () => `
8
+ apiVersion: 0.0.5
9
+ language: wasm/assemblyscript
10
+ entities:
11
+ - Block
12
+ - Transaction
13
+ blockHandlers:
14
+ - handler: handleBlock
15
+ transactionHandlers:
16
+ - handler: handleTx
17
+ file: ./src/mapping.ts`;
18
+ exports.mapping = mapping;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePlaceholderHandlers = void 0;
4
+ const generatePlaceholderHandlers = () => `
5
+ import { arweave, BigInt } from '@graphprotocol/graph-ts'
6
+ import { Block, Transaction } from '../generated/schema'
7
+
8
+ export function handleBlock(block: arweave.Block): void {
9
+ // Entities can be loaded from the store using a indepHash; this indepHash
10
+ // needs to be unique across all entities of the same type
11
+ let entity = Block.load(block.indepHash.toHexString())
12
+
13
+ // Entities only exist after they have been saved to the store;
14
+ // \`null\` checks allow to create entities on demand
15
+ if (!entity) {
16
+ entity = new Block(block.indepHash.toHexString());
17
+
18
+ // Entity fields can be set using simple assignments
19
+ entity.height = BigInt.fromU64(block.height)
20
+ }
21
+
22
+ // Entities can be written to the store with \`.save()\`
23
+ entity.save()
24
+
25
+ // Note: If a handler doesn't require existing field values, it is faster
26
+ // _not_ to load the entity from the store. Instead, create it fresh with
27
+ // \`new Entity(...)\`, set the fields that should be updated and save the
28
+ // entity back to the store. Fields that were not set or unset remain
29
+ // unchanged, allowing for partial updates to be applied.
30
+ }
31
+
32
+ export function handleTx(tb: arweave.TransactionWithBlockPtr): void {
33
+ const tx = tb.tx;
34
+ const entity = new Transaction(tx.id.toHexString());
35
+
36
+ entity.block = tb.block.indepHash;
37
+ entity.tx_id = tx.id;
38
+ entity.last_tx = tx.lastTx;
39
+ entity.owner = tx.owner;
40
+ entity.tags = saveTags(tx.id.toHexString(), tx.tags);
41
+ entity.data = tx.data;
42
+ entity.data_root = tx.dataRoot;
43
+ entity.data_size = tx.dataSize;
44
+ entity.target = tx.target;
45
+ entity.quantity = tx.quantity;
46
+ entity.signature = tx.signature;
47
+ entity.reward = tx.reward;
48
+
49
+ entity.save();
50
+ }
51
+ `;
52
+ exports.generatePlaceholderHandlers = generatePlaceholderHandlers;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const immutable_1 = __importDefault(require("immutable"));
7
+ class ArweaveSubgraph {
8
+ manifest;
9
+ resolveFile;
10
+ protocol;
11
+ constructor(options = {}) {
12
+ this.manifest = options.manifest;
13
+ this.resolveFile = options.resolveFile;
14
+ this.protocol = options.protocol;
15
+ }
16
+ validateManifest() {
17
+ return immutable_1.default.List();
18
+ }
19
+ handlerTypes() {
20
+ return immutable_1.default.List(['blockHandlers', 'transactionHandlers']);
21
+ }
22
+ }
23
+ exports.default = ArweaveSubgraph;