@graphprotocol/graph-cli 0.45.0-alpha-20230330113700-1b45db7 → 0.45.0-alpha-20230330173033-57c7de2
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.
- package/CHANGELOG.md +1 -8
- package/dist/command-helpers/scaffold.js +2 -2
- package/dist/commands/add.js +1 -1
- package/dist/migrations/mapping_api_version_0_0_1.js +1 -1
- package/dist/migrations/mapping_api_version_0_0_2.js +1 -1
- package/dist/migrations/mapping_api_version_0_0_3.js +1 -1
- package/dist/migrations/mapping_api_version_0_0_4.js +1 -1
- package/dist/migrations/mapping_api_version_0_0_5.js +1 -1
- package/dist/migrations/spec_version_0_0_2.js +1 -1
- package/dist/migrations/spec_version_0_0_3.js +1 -1
- package/dist/protocols/ethereum/scaffold/mapping.js +1 -1
- package/dist/protocols/ipfs/codegen/file_template.js +0 -1
- package/dist/scaffold/index.js +3 -1
- package/dist/scaffold/mapping.js +17 -5
- package/dist/scaffold/schema.js +23 -9
- package/oclif.manifest.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @graphprotocol/graph-cli
|
|
2
2
|
|
|
3
|
-
## 0.45.0-alpha-
|
|
3
|
+
## 0.45.0-alpha-20230330173033-57c7de2
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -20,13 +20,6 @@
|
|
|
20
20
|
- Removed dependency [`node-fetch@2.6.0` ↗︎](https://www.npmjs.com/package/node-fetch/v/2.6.0)
|
|
21
21
|
(from `dependencies`)
|
|
22
22
|
|
|
23
|
-
- [#1224](https://github.com/graphprotocol/graph-tooling/pull/1224)
|
|
24
|
-
[`1b45db7`](https://github.com/graphprotocol/graph-tooling/commit/1b45db73418693d463e3e4217351a76fbd9ba62e)
|
|
25
|
-
Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates:
|
|
26
|
-
|
|
27
|
-
- Updated dependency [`chokidar@3.5.3` ↗︎](https://www.npmjs.com/package/chokidar/v/3.5.3) (from
|
|
28
|
-
`3.5.1`, in `dependencies`)
|
|
29
|
-
|
|
30
23
|
- [#1207](https://github.com/graphprotocol/graph-tooling/pull/1207)
|
|
31
24
|
[`ad275b3`](https://github.com/graphprotocol/graph-tooling/commit/ad275b31e635dab03cfefda00617ef9f612b01c0)
|
|
32
25
|
Thanks [@saihaj](https://github.com/saihaj)! - bring back short hand for version and help
|
|
@@ -71,13 +71,13 @@ const writeABI = async (abi, contractName) => {
|
|
|
71
71
|
await fs_extra_1.default.writeFile(`./abis/${contractName}.json`, data, 'utf-8');
|
|
72
72
|
};
|
|
73
73
|
exports.writeABI = writeABI;
|
|
74
|
-
const writeSchema = async (abi, protocol, schemaPath, entities) => {
|
|
74
|
+
const writeSchema = async (abi, protocol, schemaPath, entities, contractName) => {
|
|
75
75
|
const events = protocol.hasEvents()
|
|
76
76
|
? (0, schema_1.abiEvents)(abi)
|
|
77
77
|
.filter(event => !entities.includes(event.get('name')))
|
|
78
78
|
.toJS()
|
|
79
79
|
: [];
|
|
80
|
-
const data = prettier_1.default.format(events.map(event => (0, schema_1.generateEventType)(event, protocol.name)).join('\n\n'), {
|
|
80
|
+
const data = prettier_1.default.format(events.map(event => (0, schema_1.generateEventType)(event, protocol.name, contractName)).join('\n\n'), {
|
|
81
81
|
parser: 'graphql',
|
|
82
82
|
});
|
|
83
83
|
await fs_extra_1.default.appendFile(schemaPath, data, { encoding: 'utf-8' });
|
package/dist/commands/add.js
CHANGED
|
@@ -72,7 +72,7 @@ class AddCommand extends core_1.Command {
|
|
|
72
72
|
const { collisionEntities, onlyCollisions, abiData } = updateEventNamesOnCollision(ethabi, entities, contractName, mergeEntities);
|
|
73
73
|
ethabi.data = abiData;
|
|
74
74
|
await (0, scaffold_1.writeABI)(ethabi, contractName);
|
|
75
|
-
await (0, scaffold_1.writeSchema)(ethabi, protocol, result.getIn(['schema', 'file']), collisionEntities);
|
|
75
|
+
await (0, scaffold_1.writeSchema)(ethabi, protocol, result.getIn(['schema', 'file']), collisionEntities, contractName);
|
|
76
76
|
await (0, scaffold_1.writeMapping)(ethabi, protocol, contractName, collisionEntities);
|
|
77
77
|
await (0, scaffold_1.writeTestsFiles)(ethabi, protocol, contractName);
|
|
78
78
|
const dataSources = result.get('dataSources');
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -27,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
27
|
};
|
|
29
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable */
|
|
30
30
|
const toolbox = __importStar(require("gluegun"));
|
|
31
31
|
const semver_1 = __importDefault(require("semver"));
|
|
32
32
|
const load_manifest_1 = require("./util/load-manifest");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -27,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
27
|
};
|
|
29
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable */
|
|
30
30
|
const toolbox = __importStar(require("gluegun"));
|
|
31
31
|
const semver_1 = __importDefault(require("semver"));
|
|
32
32
|
const load_manifest_1 = require("./util/load-manifest");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -27,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
27
|
};
|
|
29
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable */
|
|
30
30
|
const toolbox = __importStar(require("gluegun"));
|
|
31
31
|
const semver_1 = __importDefault(require("semver"));
|
|
32
32
|
const load_manifest_1 = require("./util/load-manifest");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -27,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
27
|
};
|
|
29
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable */
|
|
30
30
|
const toolbox = __importStar(require("gluegun"));
|
|
31
31
|
const semver_1 = __importDefault(require("semver"));
|
|
32
32
|
const load_manifest_1 = require("./util/load-manifest");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -27,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
27
|
};
|
|
29
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable */
|
|
30
30
|
const toolbox = __importStar(require("gluegun"));
|
|
31
31
|
const semver_1 = __importDefault(require("semver"));
|
|
32
32
|
const load_manifest_1 = require("./util/load-manifest");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -24,6 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
23
|
return result;
|
|
25
24
|
};
|
|
26
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
/* eslint-disable */
|
|
27
27
|
const toolbox = __importStar(require("gluegun"));
|
|
28
28
|
const load_manifest_1 = require("./util/load-manifest");
|
|
29
29
|
// Spec version to 0.0.2 uses top level templates. graph-cli no longer supports
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* eslint-disable */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -24,6 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
23
|
return result;
|
|
25
24
|
};
|
|
26
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
/* eslint-disable */
|
|
27
27
|
const toolbox = __importStar(require("gluegun"));
|
|
28
28
|
const load_manifest_1 = require("./util/load-manifest");
|
|
29
29
|
// Spec version 0.0.4 uses feature management, but features are
|
|
@@ -29,7 +29,7 @@ const generatePlaceholderHandlers = ({ abi, events, contractName, }) => `
|
|
|
29
29
|
entity.count = entity.count + BigInt.fromI32(1)
|
|
30
30
|
|
|
31
31
|
// Entity fields can be set based on event parameters
|
|
32
|
-
${(0, mapping_1.generateEventFieldAssignments)(event).slice(0, 2).join('\n')}
|
|
32
|
+
${(0, mapping_1.generateEventFieldAssignments)(event, contractName).slice(0, 2).join('\n')}
|
|
33
33
|
|
|
34
34
|
// Entities can be written to the store with \`.save()\`
|
|
35
35
|
entity.save()
|
package/dist/scaffold/index.js
CHANGED
|
@@ -69,7 +69,9 @@ dataSources:
|
|
|
69
69
|
const hasEvents = this.protocol.hasEvents();
|
|
70
70
|
const events = hasEvents ? (0, schema_1.abiEvents)(this.abi).toJS() : [];
|
|
71
71
|
return prettier_1.default.format(hasEvents && this.indexEvents
|
|
72
|
-
? events
|
|
72
|
+
? events
|
|
73
|
+
.map((event) => (0, schema_1.generateEventType)(event, this.protocol.name, this.contractName))
|
|
74
|
+
.join('\n\n')
|
|
73
75
|
: (0, schema_1.generateExampleEntityType)(this.protocol, events), {
|
|
74
76
|
parser: 'graphql',
|
|
75
77
|
});
|
package/dist/scaffold/mapping.js
CHANGED
|
@@ -25,15 +25,27 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.generateEventIndexingHandlers = exports.generateEventFieldAssignments = exports.generateFieldAssignments = exports.generateFieldAssignment = void 0;
|
|
27
27
|
const util = __importStar(require("../codegen/util"));
|
|
28
|
-
const generateFieldAssignment = (
|
|
28
|
+
const generateFieldAssignment = (key, value) => `entity.${key.join('_')} = event.params.${value.join('.')}`;
|
|
29
29
|
exports.generateFieldAssignment = generateFieldAssignment;
|
|
30
30
|
const generateFieldAssignments = ({ index, input }) => input.type === 'tuple'
|
|
31
31
|
? util
|
|
32
32
|
.unrollTuple({ value: input, index, path: [input.name || `param${index}`] })
|
|
33
|
-
.map(({ path }) => (0, exports.generateFieldAssignment)(path))
|
|
34
|
-
: (0, exports.generateFieldAssignment)([input.name || `param${index}`]);
|
|
33
|
+
.map(({ path }) => (0, exports.generateFieldAssignment)(path, path))
|
|
34
|
+
: (0, exports.generateFieldAssignment)([(input.mappedName ?? input.name) || `param${index}`], [input.name || `param${index}`]);
|
|
35
35
|
exports.generateFieldAssignments = generateFieldAssignments;
|
|
36
|
-
const
|
|
36
|
+
const renameInput = (name, subgraphName) => {
|
|
37
|
+
const inputMap = {
|
|
38
|
+
id: `${subgraphName}_id`,
|
|
39
|
+
};
|
|
40
|
+
return inputMap[name] ?? name;
|
|
41
|
+
};
|
|
42
|
+
const generateEventFieldAssignments = (event, contractName) => event.inputs.reduce((acc, input, index) => {
|
|
43
|
+
const inputNamesBlacklist = ['id'];
|
|
44
|
+
if (inputNamesBlacklist.includes(input.name)) {
|
|
45
|
+
input.mappedName = renameInput(input.name, contractName ?? 'contract');
|
|
46
|
+
}
|
|
47
|
+
return acc.concat((0, exports.generateFieldAssignments)({ input, index }));
|
|
48
|
+
}, []);
|
|
37
49
|
exports.generateEventFieldAssignments = generateEventFieldAssignments;
|
|
38
50
|
const generateEventIndexingHandlers = (events, contractName) => `
|
|
39
51
|
import { ${events.map(event => `${event._alias} as ${event._alias}Event`)}} from '../generated/${contractName}/${contractName}'
|
|
@@ -43,7 +55,7 @@ const generateEventIndexingHandlers = (events, contractName) => `
|
|
|
43
55
|
.map(event => `
|
|
44
56
|
export function handle${event._alias}(event: ${event._alias}Event): void {
|
|
45
57
|
let entity = new ${event._alias}(event.transaction.hash.concatI32(event.logIndex.toI32()))
|
|
46
|
-
${(0, exports.generateEventFieldAssignments)(event).join('\n')}
|
|
58
|
+
${(0, exports.generateEventFieldAssignments)(event, contractName).join('\n')}
|
|
47
59
|
|
|
48
60
|
entity.blockNumber = event.block.number
|
|
49
61
|
entity.blockTimestamp = event.block.timestamp
|
package/dist/scaffold/schema.js
CHANGED
|
@@ -62,15 +62,29 @@ const generateEventFields = ({ index, input, protocolName, }) => input.type == '
|
|
|
62
62
|
}),
|
|
63
63
|
];
|
|
64
64
|
exports.generateEventFields = generateEventFields;
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
65
|
+
const renameInput = (name, subgraphName) => {
|
|
66
|
+
const inputMap = {
|
|
67
|
+
id: `${subgraphName}_id`,
|
|
68
|
+
};
|
|
69
|
+
return inputMap[name] ?? name;
|
|
70
|
+
};
|
|
71
|
+
const generateEventType = (event, protocolName, subgraphName) => {
|
|
72
|
+
const inputNamesBlacklist = ['id'];
|
|
73
|
+
return `type ${event._alias} @entity(immutable: true) {
|
|
74
|
+
id: Bytes!
|
|
75
|
+
${event.inputs
|
|
76
|
+
.reduce((acc, input, index) => {
|
|
77
|
+
if (inputNamesBlacklist.includes(input.name)) {
|
|
78
|
+
input.name = renameInput(input.name, subgraphName ?? 'contract');
|
|
79
|
+
}
|
|
80
|
+
return acc.concat((0, exports.generateEventFields)({ input, index, protocolName }));
|
|
81
|
+
}, [])
|
|
82
|
+
.join('\n')}
|
|
83
|
+
blockNumber: BigInt!
|
|
84
|
+
blockTimestamp: BigInt!
|
|
85
|
+
transactionHash: Bytes!
|
|
86
|
+
}`;
|
|
87
|
+
};
|
|
74
88
|
exports.generateEventType = generateEventType;
|
|
75
89
|
const generateExampleEntityType = (protocol, events) => {
|
|
76
90
|
if (protocol.hasABIs() && events.length > 0) {
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphprotocol/graph-cli",
|
|
3
|
-
"version": "0.45.0-alpha-
|
|
3
|
+
"version": "0.45.0-alpha-20230330173033-57c7de2",
|
|
4
4
|
"description": "CLI for building for and deploying to The Graph",
|
|
5
5
|
"license": "(Apache-2.0 OR MIT)",
|
|
6
6
|
"engines": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"assemblyscript": "0.19.23",
|
|
24
24
|
"binary-install-raw": "0.0.13",
|
|
25
25
|
"chalk": "3.0.0",
|
|
26
|
-
"chokidar": "3.5.
|
|
26
|
+
"chokidar": "3.5.1",
|
|
27
27
|
"debug": "4.3.1",
|
|
28
28
|
"docker-compose": "0.23.4",
|
|
29
29
|
"dockerode": "2.5.8",
|