@muritavo/testing-toolkit 0.4.1 → 0.5.0

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 (39) hide show
  1. package/dist/client/blockchain.d.ts +2 -1
  2. package/dist/client/blockchain.js +104 -68
  3. package/dist/client/blockchain.js.map +1 -1
  4. package/dist/client/emulator.js +0 -1
  5. package/dist/client/emulator.js.map +1 -1
  6. package/dist/native/blockchain.d.ts +13 -3
  7. package/dist/native/blockchain.js +366 -52
  8. package/dist/native/blockchain.js.map +1 -1
  9. package/dist/native/emulator.d.ts +13 -0
  10. package/dist/native/emulator.js +45 -12
  11. package/dist/native/emulator.js.map +1 -1
  12. package/dist/src/client/blockchain.d.ts +13 -0
  13. package/dist/src/client/blockchain.js +149 -0
  14. package/dist/src/client/blockchain.js.map +1 -0
  15. package/dist/src/client/emulator.d.ts +65 -0
  16. package/dist/src/client/emulator.js +250 -0
  17. package/dist/src/client/emulator.js.map +1 -0
  18. package/dist/src/client/utility.d.ts +7 -0
  19. package/dist/src/client/utility.js +39 -0
  20. package/dist/src/client/utility.js.map +1 -0
  21. package/dist/src/native/blockchain.d.ts +50 -0
  22. package/dist/src/native/blockchain.js +649 -0
  23. package/dist/src/native/blockchain.js.map +1 -0
  24. package/dist/src/native/consts.d.ts +5 -0
  25. package/dist/src/native/consts.js +9 -0
  26. package/dist/src/native/consts.js.map +1 -0
  27. package/dist/src/native/emulator.d.ts +49 -0
  28. package/dist/src/native/emulator.js +274 -0
  29. package/dist/src/native/emulator.js.map +1 -0
  30. package/dist/src/types/contract.d.ts +79 -0
  31. package/dist/src/types/contract.js +31 -0
  32. package/dist/src/types/contract.js.map +1 -0
  33. package/dist/src/utility/index.d.ts +1 -0
  34. package/dist/src/utility/index.js +12 -0
  35. package/dist/src/utility/index.js.map +1 -0
  36. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.d.ts +42 -0
  37. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.js +76 -0
  38. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.js.map +1 -0
  39. package/package.json +5 -2
@@ -69,30 +69,186 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
70
  }
71
71
  };
72
+ var __rest = (this && this.__rest) || function (s, e) {
73
+ var t = {};
74
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
75
+ t[p] = s[p];
76
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
77
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
79
+ t[p[i]] = s[p[i]];
80
+ }
81
+ return t;
82
+ };
83
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
84
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
85
+ if (ar || !(i in from)) {
86
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
87
+ ar[i] = from[i];
88
+ }
89
+ }
90
+ return to.concat(ar || Array.prototype.slice.call(from));
91
+ };
72
92
  var __importDefault = (this && this.__importDefault) || function (mod) {
73
93
  return (mod && mod.__esModule) ? mod : { "default": mod };
74
94
  };
75
95
  Object.defineProperty(exports, "__esModule", { value: true });
76
- exports.deployGraph = exports.deployContract = exports.deriveWallet = exports.startBlockchain = exports.blockchainLogger = void 0;
96
+ exports.impersonateAccount = exports.stopBlockchain = exports.deployGraph = exports.deployContract = exports.deriveWallet = exports.startBlockchain = exports.bindToBlockchain = exports.blockchainLogger = void 0;
77
97
  var debug_1 = __importDefault(require("debug"));
78
98
  var blockchain_1 = require("../client/blockchain");
79
99
  var child_process_1 = require("child_process");
80
100
  var utility_1 = require("../utility");
81
101
  var fs_1 = require("fs");
82
102
  var path_1 = require("path");
103
+ var ethers_1 = require("ethers");
83
104
  exports.blockchainLogger = (0, debug_1.default)("@muritavo/testing-toolkit/blockchain");
84
105
  var instance;
106
+ function bindToBlockchain(_a) {
107
+ return __awaiter(this, arguments, void 0, function (_b) {
108
+ var _c, ethers, other, projectConfig, prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _d, _e, _f, e_1, accounts;
109
+ var _g;
110
+ var projectFolder = _b.projectFolder, graphqlProject = _b.graphqlProject, hardhatConfigImportPromiseFactory = _b.hardhatConfigImportPromiseFactory, port = _b.port, deployTags = _b.deployTags;
111
+ return __generator(this, function (_h) {
112
+ switch (_h.label) {
113
+ case 0: return [4 /*yield*/, initHardhat(projectFolder)];
114
+ case 1:
115
+ _c = _h.sent(), ethers = _c.ethers, other = __rest(_c, ["ethers"]);
116
+ return [4 /*yield*/, hardhatConfigImportPromiseFactory()];
117
+ case 2:
118
+ projectConfig = _h.sent();
119
+ if (!instance) return [3 /*break*/, 15];
120
+ prevFork = projectConfig.networks.hardhat.forking;
121
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
122
+ if (!prevFork) return [3 /*break*/, 14];
123
+ _h.label = 3;
124
+ case 3:
125
+ _h.trys.push([3, 13, , 14]);
126
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
127
+ case 4:
128
+ blockNumberBeforeReset = _h.sent();
129
+ if (!(prevFork.blockNumber === blockNumberBeforeReset)) return [3 /*break*/, 5];
130
+ (0, exports.blockchainLogger)("Skipping hardhat reset as there was no mined blocks", "Current block is ".concat(blockNumberBeforeReset));
131
+ return [3 /*break*/, 10];
132
+ case 5:
133
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
134
+ /** This will clear any logs/changes made during testing */
135
+ return [4 /*yield*/, ethers.provider.send("hardhat_reset", [
136
+ {
137
+ forking: {
138
+ jsonRpcUrl: prevFork.url,
139
+ blockNumber: prevFork.blockNumber,
140
+ },
141
+ },
142
+ ])];
143
+ case 6:
144
+ /** This will clear any logs/changes made during testing */
145
+ _h.sent();
146
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
147
+ case 7:
148
+ blockNumberAfterReset = _h.sent();
149
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
150
+ advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
151
+ /**
152
+ * When using graph-node, it refuses to reprocess previous blocks
153
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
154
+ *
155
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
156
+ * */
157
+ return [4 /*yield*/, ethers.provider.send("hardhat_mine", [
158
+ "0x".concat(advanceBlockNumbersBy.toString(16)),
159
+ ])];
160
+ case 8:
161
+ /**
162
+ * When using graph-node, it refuses to reprocess previous blocks
163
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
164
+ *
165
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
166
+ * */
167
+ _h.sent();
168
+ _d = exports.blockchainLogger;
169
+ _f = (_e = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
170
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
171
+ case 9:
172
+ _d.apply(void 0, [_f.apply(_e, [_h.sent()])]);
173
+ _h.label = 10;
174
+ case 10:
175
+ (0, exports.blockchainLogger)("Hardhat has hardhat-deploy (".concat(String(other.deployments), ") and deploy tags ").concat(deployTags));
176
+ if (!other.deployments) return [3 /*break*/, 12];
177
+ return [4 /*yield*/, other.deployments.run(deployTags)];
178
+ case 11:
179
+ _h.sent();
180
+ _h.label = 12;
181
+ case 12: return [3 /*break*/, 14];
182
+ case 13:
183
+ e_1 = _h.sent();
184
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_1);
185
+ return [3 /*break*/, 14];
186
+ case 14: return [2 /*return*/, instance.addresses];
187
+ case 15:
188
+ if (projectFolder)
189
+ (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
190
+ if (graphqlProject) {
191
+ (0, child_process_1.execSync)("docker compose up --detach", {
192
+ cwd: graphqlProject,
193
+ stdio: "ignore",
194
+ });
195
+ process.on("SIGINT", function () {
196
+ (0, child_process_1.execSync)("docker compose down", {
197
+ cwd: graphqlProject,
198
+ stdio: "ignore",
199
+ });
200
+ });
201
+ }
202
+ accounts = new Array(30).fill(undefined).reduce(function (res, _, idx) {
203
+ var _a;
204
+ var account = deriveWallet(idx, {
205
+ ethers: ethers,
206
+ config: projectConfig,
207
+ });
208
+ return __assign(__assign({}, res), (_a = {}, _a[account.address] = {
209
+ secretKey: account.key,
210
+ }, _a));
211
+ }, {});
212
+ _g = {
213
+ rootFolder: projectFolder,
214
+ contracts: {},
215
+ addresses: accounts,
216
+ port: port,
217
+ graphqlProject: graphqlProject
218
+ };
219
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
220
+ case 16:
221
+ instance = (_g.initialBlock = _h.sent(),
222
+ _g.network = other.network,
223
+ _g.ethers = ethers,
224
+ _g);
225
+ // setPort(port);
226
+ return [2 /*return*/, accounts];
227
+ }
228
+ });
229
+ });
230
+ }
231
+ exports.bindToBlockchain = bindToBlockchain;
85
232
  function startBlockchain(_a) {
86
233
  return __awaiter(this, arguments, void 0, function (_b) {
87
- var prevFork, serverInstance, accounts;
234
+ var prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _c, _d, _e, e_2, serverInstance, hardhatServer, accounts;
88
235
  var _this = this;
89
- var projectFolder = _b.projectRootFolder, _c = _b.port, port = _c === void 0 ? 8545 : _c, graphqlProject = _b.graphqlProject;
90
- return __generator(this, function (_d) {
91
- switch (_d.label) {
236
+ var projectFolder = _b.projectRootFolder, _f = _b.port, port = _f === void 0 ? 8545 : _f, graphqlProject = _b.graphqlProject;
237
+ return __generator(this, function (_g) {
238
+ switch (_g.label) {
92
239
  case 0:
93
- if (!instance) return [3 /*break*/, 3];
240
+ if (!instance) return [3 /*break*/, 9];
94
241
  prevFork = instance.process.config.networks.hardhat.forking;
95
- if (!prevFork) return [3 /*break*/, 2];
242
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
243
+ if (!prevFork) return [3 /*break*/, 8];
244
+ _g.label = 1;
245
+ case 1:
246
+ _g.trys.push([1, 7, , 8]);
247
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
248
+ case 2:
249
+ blockNumberBeforeReset = _g.sent();
250
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
251
+ /** This will clear any logs/changes made during testing */
96
252
  return [4 /*yield*/, instance.process.network.provider.request({
97
253
  method: "hardhat_reset",
98
254
  params: [
@@ -104,27 +260,68 @@ function startBlockchain(_a) {
104
260
  },
105
261
  ],
106
262
  })];
107
- case 1:
108
- _d.sent();
109
- _d.label = 2;
110
- case 2: return [2 /*return*/, instance.addresses];
111
263
  case 3:
264
+ /** This will clear any logs/changes made during testing */
265
+ _g.sent();
266
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
267
+ case 4:
268
+ blockNumberAfterReset = _g.sent();
269
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
270
+ advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
271
+ /**
272
+ * When using graph-node, it refuses to reprocess previous blocks
273
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
274
+ *
275
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
276
+ * */
277
+ return [4 /*yield*/, instance.process.network.provider.request({
278
+ method: "hardhat_mine",
279
+ params: ["0x".concat(advanceBlockNumbersBy.toString(16))],
280
+ })];
281
+ case 5:
282
+ /**
283
+ * When using graph-node, it refuses to reprocess previous blocks
284
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
285
+ *
286
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
287
+ * */
288
+ _g.sent();
289
+ _c = exports.blockchainLogger;
290
+ _e = (_d = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
291
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
292
+ case 6:
293
+ _c.apply(void 0, [_e.apply(_d, [_g.sent()])]);
294
+ return [3 /*break*/, 8];
295
+ case 7:
296
+ e_2 = _g.sent();
297
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_2);
298
+ return [3 /*break*/, 8];
299
+ case 8: return [2 /*return*/, instance.addresses];
300
+ case 9:
112
301
  if (projectFolder)
113
302
  (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
114
- if (graphqlProject)
115
- (0, child_process_1.execSync)("docker-compose up --detach", {
303
+ if (graphqlProject) {
304
+ (0, child_process_1.execSync)("docker compose up --detach", {
116
305
  cwd: graphqlProject,
117
306
  stdio: "ignore",
118
307
  });
308
+ process.on("SIGINT", function () {
309
+ (0, child_process_1.execSync)("docker compose down", {
310
+ cwd: graphqlProject,
311
+ stdio: "ignore",
312
+ });
313
+ });
314
+ }
119
315
  return [4 /*yield*/, initHardhat(projectFolder)];
120
- case 4:
121
- serverInstance = _d.sent();
316
+ case 10:
317
+ serverInstance = _g.sent();
122
318
  return [4 /*yield*/, new Promise(function (r, rej) {
123
319
  var timeoutId = setTimeout(function () {
124
320
  rej(new Error("Something went wrong while starting hardhat node"));
125
321
  }, 30000);
126
- serverInstance.tasks[serverInstance.taskNames.TASK_NODE_SERVER_READY].setAction(function () { return __awaiter(_this, void 0, void 0, function () {
322
+ serverInstance.tasks[serverInstance.taskNames.TASK_NODE_SERVER_READY].setAction(function (args) { return __awaiter(_this, void 0, void 0, function () {
127
323
  return __generator(this, function (_a) {
324
+ hardhatServer = args.server;
128
325
  clearTimeout(timeoutId);
129
326
  r();
130
327
  return [2 /*return*/];
@@ -132,10 +329,11 @@ function startBlockchain(_a) {
132
329
  }); });
133
330
  serverInstance.run("node", {
134
331
  port: port,
332
+ noDeploy: true,
135
333
  });
136
334
  })];
137
- case 5:
138
- _d.sent();
335
+ case 11:
336
+ _g.sent();
139
337
  accounts = new Array(serverInstance.config.networks.hardhat.accounts.count)
140
338
  .fill(undefined)
141
339
  .reduce(function (res, _, idx) {
@@ -151,6 +349,10 @@ function startBlockchain(_a) {
151
349
  contracts: {},
152
350
  addresses: accounts,
153
351
  port: port,
352
+ graphqlProject: graphqlProject,
353
+ hardhatServer: hardhatServer,
354
+ network: serverInstance.network,
355
+ ethers: serverInstance.ethers,
154
356
  };
155
357
  (0, blockchain_1.setPort)(port);
156
358
  return [2 /*return*/, accounts];
@@ -160,10 +362,12 @@ function startBlockchain(_a) {
160
362
  }
161
363
  exports.startBlockchain = startBlockchain;
162
364
  function deriveWallet(index, hardhat) {
365
+ var _a;
163
366
  if (index === void 0) { index = 0; }
164
367
  var ethers = hardhat.ethers;
165
368
  var accounts = hardhat.config.networks.hardhat.accounts;
166
- var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accounts.path + "/".concat(index));
369
+ var accountPath = (_a = accounts.path) !== null && _a !== void 0 ? _a : "m/44'/60'/0'/0";
370
+ var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accountPath + "/".concat(index));
167
371
  return {
168
372
  key: wallet.privateKey,
169
373
  address: wallet.address,
@@ -172,7 +376,7 @@ function deriveWallet(index, hardhat) {
172
376
  exports.deriveWallet = deriveWallet;
173
377
  function initHardhat(dir) {
174
378
  return __awaiter(this, void 0, void 0, function () {
175
- var startingDir, hardhat, _a, e_1;
379
+ var startingDir, hardhat, _a, ret, eth, e_3;
176
380
  var _this = this;
177
381
  return __generator(this, function (_b) {
178
382
  switch (_b.label) {
@@ -187,9 +391,17 @@ function initHardhat(dir) {
187
391
  switch (_a.label) {
188
392
  case 0:
189
393
  if (!require) return [3 /*break*/, 1];
394
+ require("hardhat/register");
395
+ return [3 /*break*/, 3];
396
+ case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat/register")); })];
397
+ case 2:
398
+ (_a.sent()).default;
399
+ _a.label = 3;
400
+ case 3:
401
+ if (!require) return [3 /*break*/, 4];
190
402
  return [2 /*return*/, require("hardhat")];
191
- case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
192
- case 2: return [2 /*return*/, (_a.sent()).default];
403
+ case 4: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
404
+ case 5: return [2 /*return*/, (_a.sent()).default];
193
405
  }
194
406
  });
195
407
  }); })()];
@@ -210,11 +422,15 @@ function initHardhat(dir) {
210
422
  case 3:
211
423
  _a.taskNames = (_b.sent());
212
424
  process.chdir(startingDir);
213
- return [2 /*return*/, hardhat];
425
+ ret = hardhat;
426
+ eth = ret.ethers;
427
+ ret.ethers.provider = new eth.JsonRpcProvider("http://".concat("127.0.0.1", ":").concat(8545), undefined, { pollingInterval: 10 });
428
+ ret.network.provider = ret.ethers.provider;
429
+ return [2 /*return*/, ret];
214
430
  case 4:
215
- e_1 = _b.sent();
431
+ e_3 = _b.sent();
216
432
  process.chdir(startingDir);
217
- throw e_1;
433
+ throw e_3;
218
434
  case 5: return [2 /*return*/];
219
435
  }
220
436
  });
@@ -222,7 +438,7 @@ function initHardhat(dir) {
222
438
  }
223
439
  function deployContract(_a) {
224
440
  return __awaiter(this, arguments, void 0, function (_b) {
225
- var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_2;
441
+ var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_4;
226
442
  var _c, _d;
227
443
  var _this = this;
228
444
  var contractAbi = _b.contractAbi, contractName = _b.contractName, args = _b.args;
@@ -278,8 +494,16 @@ function deployContract(_a) {
278
494
  initializationKey_1 = funcName;
279
495
  });
280
496
  if (!connection[initializationKey_1]) return [3 /*break*/, 8];
281
- return [4 /*yield*/, connection[initializationKey_1].apply(connection, args)];
497
+ /**
498
+ * The way to decide which overloaded function to call is to pass overrides at the end 🤡
499
+ * https://github.com/ethers-io/ethers.js/issues/4383
500
+ */
501
+ return [4 /*yield*/, connection[initializationKey_1].apply(connection, __spreadArray(__spreadArray([], args, false), [ethers_1.Typed.overrides({})], false))];
282
502
  case 7:
503
+ /**
504
+ * The way to decide which overloaded function to call is to pass overrides at the end 🤡
505
+ * https://github.com/ethers-io/ethers.js/issues/4383
506
+ */
283
507
  _e.sent();
284
508
  _e.label = 8;
285
509
  case 8:
@@ -306,9 +530,9 @@ function deployContract(_a) {
306
530
  _d)];
307
531
  case 16: return [3 /*break*/, 18];
308
532
  case 17:
309
- e_2 = _e.sent();
310
- (0, exports.blockchainLogger)("Something has gone wrong", e_2);
311
- throw e_2;
533
+ e_4 = _e.sent();
534
+ (0, exports.blockchainLogger)("Something has gone wrong", e_4);
535
+ throw e_4;
312
536
  case 18: return [2 /*return*/];
313
537
  }
314
538
  });
@@ -318,10 +542,9 @@ exports.deployContract = deployContract;
318
542
  /**
319
543
  * Takes a graph and deploys it into the graph-node
320
544
  */
321
- function deployGraph(graphPath, contractAddresses) {
545
+ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
322
546
  return __awaiter(this, void 0, void 0, function () {
323
547
  function generateGraphManifest() {
324
- var graphManifestCacheDir = cacheDir({ name: "graph-manifest" });
325
548
  var subgraphYml = parse((0, fs_1.readFileSync)((0, path_1.resolve)(graphPath, "subgraph.yaml")).toString());
326
549
  function relativeToAbsolutePath(relativePath) {
327
550
  return (0, path_1.resolve)(graphPath, relativePath);
@@ -329,23 +552,31 @@ function deployGraph(graphPath, contractAddresses) {
329
552
  subgraphYml.schema.file = relativeToAbsolutePath(subgraphYml.schema.file);
330
553
  for (var _i = 0, _a = subgraphYml.dataSources; _i < _a.length; _i++) {
331
554
  var dataSource = _a[_i];
332
- dataSource.network = "localhost";
333
- if (!contractAddresses[dataSource.source.abi])
334
- throw new Error("Please, provide the address for the contract \"".concat(dataSource.source.abi, "\" deployed on the local hardhat node"));
555
+ /** If we don't have the address for said source, we remove the source from the deployed graph */
556
+ if (!contractAddresses[dataSource.source.abi]) {
557
+ (0, exports.blockchainLogger)("Address for the contract \"".concat(dataSource.source.abi, "\" wasn't provided. Removing this data source from graph."));
558
+ subgraphYml.dataSources[subgraphYml.dataSources.indexOf(dataSource)] =
559
+ undefined;
560
+ continue;
561
+ }
562
+ dataSource.network = networkName;
335
563
  dataSource.source.address = contractAddresses[dataSource.source.abi];
564
+ if (instance.process.config.networks.hardhat.forking)
565
+ dataSource.source.startBlock = currentBlock;
336
566
  dataSource.mapping.file = relativeToAbsolutePath(dataSource.mapping.file);
337
567
  for (var _b = 0, _c = dataSource.mapping.abis; _b < _c.length; _b++) {
338
568
  var abi = _c[_b];
339
569
  abi.file = relativeToAbsolutePath(abi.file);
340
570
  }
341
571
  }
572
+ subgraphYml.dataSources = subgraphYml.dataSources.filter(Boolean);
342
573
  var graphManifestPath = (0, path_1.resolve)(graphManifestCacheDir, "subgraph.yaml");
343
574
  if (!(0, fs_1.existsSync)(graphManifestCacheDir))
344
575
  (0, fs_1.mkdirSync)(graphManifestCacheDir, { recursive: true });
345
576
  (0, fs_1.writeFileSync)(graphManifestPath, stringify(subgraphYml));
346
577
  return graphManifestPath;
347
578
  }
348
- var _a, parse, stringify, cacheDir, stdioMode, error_1, localhostGraphManifest;
579
+ var _a, parse, stringify, cacheDir, graphManifestCacheDir, currentBlock, stdioMode, error_1, localhostGraphManifest;
349
580
  return __generator(this, function (_b) {
350
581
  switch (_b.label) {
351
582
  case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("yaml")); })];
@@ -354,33 +585,57 @@ function deployGraph(graphPath, contractAddresses) {
354
585
  return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("find-cache-dir")); })];
355
586
  case 2:
356
587
  cacheDir = (_b.sent()).default;
357
- stdioMode = exports.blockchainLogger.enabled ? undefined : "ignore";
358
- _b.label = 3;
588
+ graphManifestCacheDir = cacheDir({
589
+ name: "graph-manifest",
590
+ cwd: graphPath,
591
+ });
592
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
359
593
  case 3:
360
- if (!true) return [3 /*break*/, 8];
594
+ currentBlock = _b.sent();
595
+ stdioMode = exports.blockchainLogger.enabled ? "inherit" : "ignore";
361
596
  _b.label = 4;
362
597
  case 4:
363
- _b.trys.push([4, 5, , 7]);
364
- (0, child_process_1.execSync)("yarn create-local", {
598
+ if (!true) return [3 /*break*/, 9];
599
+ _b.label = 5;
600
+ case 5:
601
+ _b.trys.push([5, 6, , 8]);
602
+ (0, exports.blockchainLogger)("Trying to create graph");
603
+ (0, child_process_1.execSync)("graph create --node http://localhost:8020/ ".concat(graphName), {
365
604
  cwd: graphPath,
366
605
  stdio: stdioMode,
606
+ env: {
607
+ PATH: process.env.PATH,
608
+ },
367
609
  });
368
- return [3 /*break*/, 8];
369
- case 5:
610
+ return [3 /*break*/, 9];
611
+ case 6:
370
612
  error_1 = _b.sent();
371
613
  return [4 /*yield*/, (0, utility_1.wait)(1000)];
372
- case 6:
614
+ case 7:
373
615
  _b.sent();
374
- return [3 /*break*/, 7];
375
- case 7: return [3 /*break*/, 3];
376
- case 8:
616
+ return [3 /*break*/, 8];
617
+ case 8: return [3 /*break*/, 4];
618
+ case 9:
377
619
  localhostGraphManifest = generateGraphManifest();
378
- (0, child_process_1.execSync)("yarn deploy-local ".concat(localhostGraphManifest, " -l v0.0.1"), {
379
- cwd: graphPath,
380
- stdio: stdioMode,
381
- });
620
+ (0, exports.blockchainLogger)("Trying to deploy graph");
621
+ return [4 /*yield*/, new Promise(function (res, rej) {
622
+ (0, child_process_1.exec)("graph deploy --node http://localhost:8020/ --ipfs http://localhost:5031 ".concat(graphName, " ").concat(localhostGraphManifest, " -l v0.0.1"), {
623
+ cwd: graphPath,
624
+ env: {
625
+ PATH: "".concat(process.env.PATH),
626
+ },
627
+ }, function (error, stdOut) {
628
+ console.log(stdOut);
629
+ if (error) {
630
+ rej(error);
631
+ }
632
+ res();
633
+ });
634
+ })];
635
+ case 10:
636
+ _b.sent();
382
637
  return [4 /*yield*/, (0, utility_1.wait)(1000)];
383
- case 9:
638
+ case 11:
384
639
  _b.sent();
385
640
  return [2 /*return*/];
386
641
  }
@@ -388,4 +643,63 @@ function deployGraph(graphPath, contractAddresses) {
388
643
  });
389
644
  }
390
645
  exports.deployGraph = deployGraph;
646
+ function stopBlockchain() {
647
+ return __awaiter(this, void 0, void 0, function () {
648
+ var e_5;
649
+ return __generator(this, function (_a) {
650
+ switch (_a.label) {
651
+ case 0:
652
+ (0, exports.blockchainLogger)("Closing blockchain infrastructure.", "Has blockchain instance:", String(!!instance));
653
+ if (!instance) return [3 /*break*/, 5];
654
+ _a.label = 1;
655
+ case 1:
656
+ _a.trys.push([1, 3, , 4]);
657
+ (0, exports.blockchainLogger)("Closing hardhat server");
658
+ if (instance.graphqlProject) {
659
+ (0, exports.blockchainLogger)("Ending graphql docker container");
660
+ (0, child_process_1.execSync)("docker compose down", {
661
+ cwd: instance.graphqlProject,
662
+ stdio: "ignore",
663
+ });
664
+ }
665
+ return [4 /*yield*/, instance.hardhatServer.close()];
666
+ case 2:
667
+ _a.sent();
668
+ return [3 /*break*/, 4];
669
+ case 3:
670
+ e_5 = _a.sent();
671
+ return [3 /*break*/, 4];
672
+ case 4:
673
+ instance = null;
674
+ _a.label = 5;
675
+ case 5: return [2 /*return*/];
676
+ }
677
+ });
678
+ });
679
+ }
680
+ exports.stopBlockchain = stopBlockchain;
681
+ function impersonateAccount(account) {
682
+ return __awaiter(this, void 0, void 0, function () {
683
+ var signers, lastSigner;
684
+ return __generator(this, function (_a) {
685
+ switch (_a.label) {
686
+ case 0: return [4 /*yield*/, instance.network.provider.send("hardhat_impersonateAccount", [account])];
687
+ case 1:
688
+ _a.sent();
689
+ return [4 /*yield*/, instance.ethers.getSigners()];
690
+ case 2:
691
+ signers = _a.sent();
692
+ lastSigner = signers.at(-1);
693
+ return [4 /*yield*/, lastSigner.sendTransaction({
694
+ to: account,
695
+ value: "10000000000000000000",
696
+ })];
697
+ case 3:
698
+ _a.sent();
699
+ return [2 /*return*/];
700
+ }
701
+ });
702
+ });
703
+ }
704
+ exports.impersonateAccount = impersonateAccount;
391
705
  //# sourceMappingURL=blockchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/native/blockchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/native/blockchain.ts"],"names":[],"mappings":"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"}