@muritavo/testing-toolkit 0.4.2 → 0.6.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 +12 -2
  7. package/dist/native/blockchain.js +246 -33
  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,6 +69,17 @@ 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
+ };
72
83
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
73
84
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
74
85
  if (ar || !(i in from)) {
@@ -82,7 +93,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
82
93
  return (mod && mod.__esModule) ? mod : { "default": mod };
83
94
  };
84
95
  Object.defineProperty(exports, "__esModule", { value: true });
85
- exports.stopBlockchain = 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.updateSnapshot = exports.blockchainLogger = void 0;
86
97
  var debug_1 = __importDefault(require("debug"));
87
98
  var blockchain_1 = require("../client/blockchain");
88
99
  var child_process_1 = require("child_process");
@@ -92,20 +103,167 @@ var path_1 = require("path");
92
103
  var ethers_1 = require("ethers");
93
104
  exports.blockchainLogger = (0, debug_1.default)("@muritavo/testing-toolkit/blockchain");
94
105
  var instance;
106
+ function updateSnapshot() {
107
+ return __awaiter(this, void 0, void 0, function () {
108
+ var snapshotId;
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0: return [4 /*yield*/, instance.network.provider.send("evm_snapshot")];
112
+ case 1:
113
+ snapshotId = _a.sent();
114
+ instance.snapshotId = snapshotId;
115
+ return [2 /*return*/];
116
+ }
117
+ });
118
+ });
119
+ }
120
+ exports.updateSnapshot = updateSnapshot;
121
+ function bindToBlockchain(_a) {
122
+ return __awaiter(this, arguments, void 0, function (_b) {
123
+ var _c, ethers, other, projectConfig, prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _d, _e, _f, e_1, snapshotId_1, accounts, snapshotId;
124
+ var _g;
125
+ var projectFolder = _b.projectFolder, graphqlProject = _b.graphqlProject, hardhatConfigImportPromiseFactory = _b.hardhatConfigImportPromiseFactory, port = _b.port, deployTags = _b.deployTags;
126
+ return __generator(this, function (_h) {
127
+ switch (_h.label) {
128
+ case 0: return [4 /*yield*/, initHardhat(projectFolder)];
129
+ case 1:
130
+ _c = _h.sent(), ethers = _c.ethers, other = __rest(_c, ["ethers"]);
131
+ return [4 /*yield*/, hardhatConfigImportPromiseFactory()];
132
+ case 2:
133
+ projectConfig = _h.sent();
134
+ if (!instance) return [3 /*break*/, 14];
135
+ prevFork = projectConfig.networks.hardhat.forking;
136
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
137
+ _h.label = 3;
138
+ case 3:
139
+ _h.trys.push([3, 11, , 12]);
140
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
141
+ case 4:
142
+ blockNumberBeforeReset = _h.sent();
143
+ if (!(prevFork.blockNumber === blockNumberBeforeReset)) return [3 /*break*/, 5];
144
+ (0, exports.blockchainLogger)("Skipping hardhat reset as there was no mined blocks", "Current block is ".concat(blockNumberBeforeReset));
145
+ return [3 /*break*/, 10];
146
+ case 5:
147
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
148
+ /** This will clear any logs/changes made during testing */
149
+ return [4 /*yield*/, ethers.provider.send("evm_revert", [instance.snapshotId])];
150
+ case 6:
151
+ /** This will clear any logs/changes made during testing */
152
+ _h.sent();
153
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
154
+ case 7:
155
+ blockNumberAfterReset = _h.sent();
156
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
157
+ advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
158
+ /**
159
+ * When using graph-node, it refuses to reprocess previous blocks
160
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
161
+ *
162
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
163
+ * */
164
+ return [4 /*yield*/, ethers.provider.send("hardhat_mine", [
165
+ "0x".concat(advanceBlockNumbersBy.toString(16)),
166
+ ])];
167
+ case 8:
168
+ /**
169
+ * When using graph-node, it refuses to reprocess previous blocks
170
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
171
+ *
172
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
173
+ * */
174
+ _h.sent();
175
+ _d = exports.blockchainLogger;
176
+ _f = (_e = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
177
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
178
+ case 9:
179
+ _d.apply(void 0, [_f.apply(_e, [_h.sent()])]);
180
+ _h.label = 10;
181
+ case 10:
182
+ (0, exports.blockchainLogger)("Hardhat has hardhat-deploy (".concat(String(other.deployments), ") and deploy tags ").concat(deployTags));
183
+ return [3 /*break*/, 12];
184
+ case 11:
185
+ e_1 = _h.sent();
186
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_1);
187
+ return [3 /*break*/, 12];
188
+ case 12: return [4 /*yield*/, other.network.provider.send("evm_snapshot")];
189
+ case 13:
190
+ snapshotId_1 = _h.sent();
191
+ instance.snapshotId = snapshotId_1;
192
+ return [2 /*return*/, instance.addresses];
193
+ case 14:
194
+ if (projectFolder)
195
+ (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
196
+ if (graphqlProject) {
197
+ (0, child_process_1.execSync)("docker compose up --detach", {
198
+ cwd: graphqlProject,
199
+ stdio: "ignore",
200
+ });
201
+ process.on("SIGINT", function () {
202
+ (0, child_process_1.execSync)("docker compose down", {
203
+ cwd: graphqlProject,
204
+ stdio: "ignore",
205
+ });
206
+ });
207
+ }
208
+ accounts = new Array(30).fill(undefined).reduce(function (res, _, idx) {
209
+ var _a;
210
+ var account = deriveWallet(idx, {
211
+ ethers: ethers,
212
+ config: projectConfig,
213
+ });
214
+ return __assign(__assign({}, res), (_a = {}, _a[account.address] = {
215
+ secretKey: account.key,
216
+ }, _a));
217
+ }, {});
218
+ if (!other.deployments) return [3 /*break*/, 16];
219
+ return [4 /*yield*/, other.deployments.run(deployTags)];
220
+ case 15:
221
+ _h.sent();
222
+ _h.label = 16;
223
+ case 16: return [4 /*yield*/, other.network.provider.send("evm_snapshot")];
224
+ case 17:
225
+ snapshotId = _h.sent();
226
+ _g = {
227
+ rootFolder: projectFolder,
228
+ contracts: {},
229
+ addresses: accounts,
230
+ port: port,
231
+ graphqlProject: graphqlProject
232
+ };
233
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
234
+ case 18:
235
+ // ... do stuff
236
+ instance = (_g.initialBlock = _h.sent(),
237
+ _g.network = other.network,
238
+ _g.ethers = ethers,
239
+ _g.snapshotId = snapshotId,
240
+ _g);
241
+ // setPort(port);
242
+ return [2 /*return*/, accounts];
243
+ }
244
+ });
245
+ });
246
+ }
247
+ exports.bindToBlockchain = bindToBlockchain;
95
248
  function startBlockchain(_a) {
96
249
  return __awaiter(this, arguments, void 0, function (_b) {
97
- var prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _c, _d, _e, serverInstance, hardhatServer, accounts;
250
+ var prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _c, _d, _e, e_2, serverInstance, hardhatServer, accounts;
98
251
  var _this = this;
99
252
  var projectFolder = _b.projectRootFolder, _f = _b.port, port = _f === void 0 ? 8545 : _f, graphqlProject = _b.graphqlProject;
100
253
  return __generator(this, function (_g) {
101
254
  switch (_g.label) {
102
255
  case 0:
103
- if (!instance) return [3 /*break*/, 7];
256
+ if (!instance) return [3 /*break*/, 9];
104
257
  prevFork = instance.process.config.networks.hardhat.forking;
105
- if (!prevFork) return [3 /*break*/, 6];
106
- return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
258
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
259
+ if (!prevFork) return [3 /*break*/, 8];
260
+ _g.label = 1;
107
261
  case 1:
262
+ _g.trys.push([1, 7, , 8]);
263
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
264
+ case 2:
108
265
  blockNumberBeforeReset = _g.sent();
266
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
109
267
  /** This will clear any logs/changes made during testing */
110
268
  return [4 /*yield*/, instance.process.network.provider.request({
111
269
  method: "hardhat_reset",
@@ -118,12 +276,13 @@ function startBlockchain(_a) {
118
276
  },
119
277
  ],
120
278
  })];
121
- case 2:
279
+ case 3:
122
280
  /** This will clear any logs/changes made during testing */
123
281
  _g.sent();
124
282
  return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
125
- case 3:
283
+ case 4:
126
284
  blockNumberAfterReset = _g.sent();
285
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
127
286
  advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
128
287
  /**
129
288
  * When using graph-node, it refuses to reprocess previous blocks
@@ -135,7 +294,7 @@ function startBlockchain(_a) {
135
294
  method: "hardhat_mine",
136
295
  params: ["0x".concat(advanceBlockNumbersBy.toString(16))],
137
296
  })];
138
- case 4:
297
+ case 5:
139
298
  /**
140
299
  * When using graph-node, it refuses to reprocess previous blocks
141
300
  * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
@@ -146,11 +305,15 @@ function startBlockchain(_a) {
146
305
  _c = exports.blockchainLogger;
147
306
  _e = (_d = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
148
307
  return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
149
- case 5:
308
+ case 6:
150
309
  _c.apply(void 0, [_e.apply(_d, [_g.sent()])]);
151
- _g.label = 6;
152
- case 6: return [2 /*return*/, instance.addresses];
310
+ return [3 /*break*/, 8];
153
311
  case 7:
312
+ e_2 = _g.sent();
313
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_2);
314
+ return [3 /*break*/, 8];
315
+ case 8: return [2 /*return*/, instance.addresses];
316
+ case 9:
154
317
  if (projectFolder)
155
318
  (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
156
319
  if (graphqlProject) {
@@ -166,7 +329,7 @@ function startBlockchain(_a) {
166
329
  });
167
330
  }
168
331
  return [4 /*yield*/, initHardhat(projectFolder)];
169
- case 8:
332
+ case 10:
170
333
  serverInstance = _g.sent();
171
334
  return [4 /*yield*/, new Promise(function (r, rej) {
172
335
  var timeoutId = setTimeout(function () {
@@ -185,7 +348,7 @@ function startBlockchain(_a) {
185
348
  noDeploy: true,
186
349
  });
187
350
  })];
188
- case 9:
351
+ case 11:
189
352
  _g.sent();
190
353
  accounts = new Array(serverInstance.config.networks.hardhat.accounts.count)
191
354
  .fill(undefined)
@@ -204,6 +367,8 @@ function startBlockchain(_a) {
204
367
  port: port,
205
368
  graphqlProject: graphqlProject,
206
369
  hardhatServer: hardhatServer,
370
+ network: serverInstance.network,
371
+ ethers: serverInstance.ethers,
207
372
  };
208
373
  (0, blockchain_1.setPort)(port);
209
374
  return [2 /*return*/, accounts];
@@ -213,10 +378,12 @@ function startBlockchain(_a) {
213
378
  }
214
379
  exports.startBlockchain = startBlockchain;
215
380
  function deriveWallet(index, hardhat) {
381
+ var _a;
216
382
  if (index === void 0) { index = 0; }
217
383
  var ethers = hardhat.ethers;
218
384
  var accounts = hardhat.config.networks.hardhat.accounts;
219
- var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accounts.path + "/".concat(index));
385
+ var accountPath = (_a = accounts.path) !== null && _a !== void 0 ? _a : "m/44'/60'/0'/0";
386
+ var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accountPath + "/".concat(index));
220
387
  return {
221
388
  key: wallet.privateKey,
222
389
  address: wallet.address,
@@ -225,7 +392,7 @@ function deriveWallet(index, hardhat) {
225
392
  exports.deriveWallet = deriveWallet;
226
393
  function initHardhat(dir) {
227
394
  return __awaiter(this, void 0, void 0, function () {
228
- var startingDir, hardhat, _a, e_1;
395
+ var startingDir, hardhat, _a, ret, eth, e_3;
229
396
  var _this = this;
230
397
  return __generator(this, function (_b) {
231
398
  switch (_b.label) {
@@ -240,9 +407,17 @@ function initHardhat(dir) {
240
407
  switch (_a.label) {
241
408
  case 0:
242
409
  if (!require) return [3 /*break*/, 1];
410
+ require("hardhat/register");
411
+ return [3 /*break*/, 3];
412
+ case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat/register")); })];
413
+ case 2:
414
+ (_a.sent()).default;
415
+ _a.label = 3;
416
+ case 3:
417
+ if (!require) return [3 /*break*/, 4];
243
418
  return [2 /*return*/, require("hardhat")];
244
- case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
245
- case 2: return [2 /*return*/, (_a.sent()).default];
419
+ case 4: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
420
+ case 5: return [2 /*return*/, (_a.sent()).default];
246
421
  }
247
422
  });
248
423
  }); })()];
@@ -263,11 +438,15 @@ function initHardhat(dir) {
263
438
  case 3:
264
439
  _a.taskNames = (_b.sent());
265
440
  process.chdir(startingDir);
266
- return [2 /*return*/, hardhat];
441
+ ret = hardhat;
442
+ eth = ret.ethers;
443
+ ret.ethers.provider = new eth.JsonRpcProvider("http://".concat("127.0.0.1", ":").concat(8545), undefined, { pollingInterval: 10 });
444
+ ret.network.provider = ret.ethers.provider;
445
+ return [2 /*return*/, ret];
267
446
  case 4:
268
- e_1 = _b.sent();
447
+ e_3 = _b.sent();
269
448
  process.chdir(startingDir);
270
- throw e_1;
449
+ throw e_3;
271
450
  case 5: return [2 /*return*/];
272
451
  }
273
452
  });
@@ -275,7 +454,7 @@ function initHardhat(dir) {
275
454
  }
276
455
  function deployContract(_a) {
277
456
  return __awaiter(this, arguments, void 0, function (_b) {
278
- var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_2;
457
+ var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_4;
279
458
  var _c, _d;
280
459
  var _this = this;
281
460
  var contractAbi = _b.contractAbi, contractName = _b.contractName, args = _b.args;
@@ -367,9 +546,9 @@ function deployContract(_a) {
367
546
  _d)];
368
547
  case 16: return [3 /*break*/, 18];
369
548
  case 17:
370
- e_2 = _e.sent();
371
- (0, exports.blockchainLogger)("Something has gone wrong", e_2);
372
- throw e_2;
549
+ e_4 = _e.sent();
550
+ (0, exports.blockchainLogger)("Something has gone wrong", e_4);
551
+ throw e_4;
373
552
  case 18: return [2 /*return*/];
374
553
  }
375
554
  });
@@ -389,9 +568,14 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
389
568
  subgraphYml.schema.file = relativeToAbsolutePath(subgraphYml.schema.file);
390
569
  for (var _i = 0, _a = subgraphYml.dataSources; _i < _a.length; _i++) {
391
570
  var dataSource = _a[_i];
571
+ /** If we don't have the address for said source, we remove the source from the deployed graph */
572
+ if (!contractAddresses[dataSource.source.abi]) {
573
+ (0, exports.blockchainLogger)("Address for the contract \"".concat(dataSource.source.abi, "\" wasn't provided. Removing this data source from graph."));
574
+ subgraphYml.dataSources[subgraphYml.dataSources.indexOf(dataSource)] =
575
+ undefined;
576
+ continue;
577
+ }
392
578
  dataSource.network = networkName;
393
- if (!contractAddresses[dataSource.source.abi])
394
- throw new Error("Please, provide the address for the contract \"".concat(dataSource.source.abi, "\" deployed on the local hardhat node"));
395
579
  dataSource.source.address = contractAddresses[dataSource.source.abi];
396
580
  if (instance.process.config.networks.hardhat.forking)
397
581
  dataSource.source.startBlock = currentBlock;
@@ -401,6 +585,7 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
401
585
  abi.file = relativeToAbsolutePath(abi.file);
402
586
  }
403
587
  }
588
+ subgraphYml.dataSources = subgraphYml.dataSources.filter(Boolean);
404
589
  var graphManifestPath = (0, path_1.resolve)(graphManifestCacheDir, "subgraph.yaml");
405
590
  if (!(0, fs_1.existsSync)(graphManifestCacheDir))
406
591
  (0, fs_1.mkdirSync)(graphManifestCacheDir, { recursive: true });
@@ -450,7 +635,7 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
450
635
  localhostGraphManifest = generateGraphManifest();
451
636
  (0, exports.blockchainLogger)("Trying to deploy graph");
452
637
  return [4 /*yield*/, new Promise(function (res, rej) {
453
- (0, child_process_1.exec)("graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 ".concat(graphName, " ").concat(localhostGraphManifest, " -l v0.0.1"), {
638
+ (0, child_process_1.exec)("graph deploy --node http://localhost:8020/ --ipfs http://localhost:5031 ".concat(graphName, " ").concat(localhostGraphManifest, " -l v0.0.1"), {
454
639
  cwd: graphPath,
455
640
  env: {
456
641
  PATH: "".concat(process.env.PATH),
@@ -476,25 +661,29 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
476
661
  exports.deployGraph = deployGraph;
477
662
  function stopBlockchain() {
478
663
  return __awaiter(this, void 0, void 0, function () {
479
- var e_3;
664
+ var e_5;
480
665
  return __generator(this, function (_a) {
481
666
  switch (_a.label) {
482
667
  case 0:
668
+ (0, exports.blockchainLogger)("Closing blockchain infrastructure.", "Has blockchain instance:", String(!!instance));
483
669
  if (!instance) return [3 /*break*/, 5];
484
670
  _a.label = 1;
485
671
  case 1:
486
672
  _a.trys.push([1, 3, , 4]);
487
- return [4 /*yield*/, instance.hardhatServer.close()];
488
- case 2:
489
- _a.sent();
490
- if (instance.graphqlProject)
673
+ (0, exports.blockchainLogger)("Closing hardhat server");
674
+ if (instance.graphqlProject) {
675
+ (0, exports.blockchainLogger)("Ending graphql docker container");
491
676
  (0, child_process_1.execSync)("docker compose down", {
492
677
  cwd: instance.graphqlProject,
493
678
  stdio: "ignore",
494
679
  });
680
+ }
681
+ return [4 /*yield*/, instance.hardhatServer.close()];
682
+ case 2:
683
+ _a.sent();
495
684
  return [3 /*break*/, 4];
496
685
  case 3:
497
- e_3 = _a.sent();
686
+ e_5 = _a.sent();
498
687
  return [3 /*break*/, 4];
499
688
  case 4:
500
689
  instance = null;
@@ -505,4 +694,28 @@ function stopBlockchain() {
505
694
  });
506
695
  }
507
696
  exports.stopBlockchain = stopBlockchain;
697
+ function impersonateAccount(account) {
698
+ return __awaiter(this, void 0, void 0, function () {
699
+ var signers, lastSigner;
700
+ return __generator(this, function (_a) {
701
+ switch (_a.label) {
702
+ case 0: return [4 /*yield*/, instance.network.provider.send("hardhat_impersonateAccount", [account])];
703
+ case 1:
704
+ _a.sent();
705
+ return [4 /*yield*/, instance.ethers.getSigners()];
706
+ case 2:
707
+ signers = _a.sent();
708
+ lastSigner = signers.at(-1);
709
+ return [4 /*yield*/, lastSigner.sendTransaction({
710
+ to: account,
711
+ value: "10000000000000000000",
712
+ })];
713
+ case 3:
714
+ _a.sent();
715
+ return [2 /*return*/];
716
+ }
717
+ });
718
+ });
719
+ }
720
+ exports.impersonateAccount = impersonateAccount;
508
721
  //# 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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"}
@@ -1,9 +1,18 @@
1
+ /// <reference types="node" />
2
+ import { ChildProcess } from "child_process";
1
3
  /**
2
4
  * Kills the emulator that was started by this module instance
3
5
  *
4
6
  * @returns A promise that resolves when the emulator is succesfully killed
5
7
  */
6
8
  export declare function killEmulator(): Promise<any>;
9
+ export declare function registerEmulator({ databaseToImport, projectId, suiteId, process, tenantId, }: {
10
+ suiteId: string;
11
+ projectId: string;
12
+ databaseToImport: string;
13
+ tenantId?: string;
14
+ process?: ChildProcess;
15
+ }): Promise<void>;
7
16
  /**
8
17
  * With this you can start an firebase emulator
9
18
  * @param args Check property typings for details
@@ -18,6 +27,10 @@ export declare function startEmulator(args: {
18
27
  UIPort: number;
19
28
  /** An optional flag to indicate when a new emulator instance should be created */
20
29
  suiteId?: string;
30
+ /** Tenant aware auth */
31
+ tenantId?: string;
32
+ /** The starting directory */
33
+ startAtCwd?: string;
21
34
  ports: number[];
22
35
  shouldSaveData: boolean;
23
36
  only: ("functions" | "hosting" | "firestore" | "storage" | "auth")[] | string[];
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.invokeAuthAdmin = exports.startEmulator = exports.killEmulator = void 0;
42
+ exports.invokeAuthAdmin = exports.startEmulator = exports.registerEmulator = exports.killEmulator = void 0;
43
43
  var node_fetch_1 = __importDefault(require("node-fetch"));
44
44
  var child_process_1 = require("child_process");
45
45
  var kill_port_1 = __importDefault(require("kill-port"));
@@ -85,6 +85,22 @@ function killEmulator() {
85
85
  });
86
86
  }
87
87
  exports.killEmulator = killEmulator;
88
+ function registerEmulator(_a) {
89
+ return __awaiter(this, arguments, void 0, function (_b) {
90
+ var databaseToImport = _b.databaseToImport, projectId = _b.projectId, suiteId = _b.suiteId, process = _b.process, tenantId = _b.tenantId;
91
+ return __generator(this, function (_c) {
92
+ spawnResult = {
93
+ id: suiteId,
94
+ project: projectId,
95
+ database: databaseToImport,
96
+ tenant: tenantId,
97
+ process: process,
98
+ };
99
+ return [2 /*return*/];
100
+ });
101
+ });
102
+ }
103
+ exports.registerEmulator = registerEmulator;
88
104
  /**
89
105
  * With this you can start an firebase emulator
90
106
  * @param args Check property typings for details
@@ -99,7 +115,7 @@ function startEmulator(args_1) {
99
115
  switch (_a.label) {
100
116
  case 0:
101
117
  suiteId = args.suiteId || args.databaseToImport || "default";
102
- log("Spawning emulator process");
118
+ log("Spawning emulator process with args", args);
103
119
  if (!(suiteId === (spawnResult === null || spawnResult === void 0 ? void 0 : spawnResult.id))) return [3 /*break*/, 1];
104
120
  log("Emulator with suite id ".concat(suiteId, " already running"));
105
121
  return [2 /*return*/, null];
@@ -108,16 +124,20 @@ function startEmulator(args_1) {
108
124
  _a.sent();
109
125
  _a.label = 3;
110
126
  case 3:
111
- spawnResult = {
112
- id: suiteId,
113
- project: args.projectId,
114
- database: args.databaseToImport,
127
+ /** Clears node options so ts-loader is not ovewritten by cypress */
128
+ delete process.env.NODE_OPTIONS;
129
+ log("Spawning emulator with env", process.env);
130
+ registerEmulator({
131
+ suiteId: suiteId,
132
+ projectId: args.projectId,
133
+ databaseToImport: args.databaseToImport,
134
+ tenantId: args.tenantId,
115
135
  process: (0, child_process_1.spawn)("firebase emulators:start -P ".concat(args.projectId, " ").concat(args.databaseToImport ? "--import ".concat(args.databaseToImport) : "", " ").concat(args.shouldSaveData ? "--export-on-exit" : "", " ").concat(args.only.length ? "--only=".concat(args.only.join(",")) : ""), {
116
- cwd: undefined,
136
+ cwd: args.startAtCwd,
117
137
  env: process.env,
118
138
  shell: true,
119
139
  }),
120
- };
140
+ });
121
141
  /**
122
142
  * This script exists so we can start an emulator from inside cypress
123
143
  */
@@ -207,7 +227,7 @@ function startEmulator(args_1) {
207
227
  exports.startEmulator = startEmulator;
208
228
  function invokeAuthAdmin(_a) {
209
229
  return __awaiter(this, arguments, void 0, function (_b) {
210
- var app, func;
230
+ var app, func, result, e_2;
211
231
  var projectId = _b.projectId, port = _b.port, functionName = _b.functionName, params = _b.params;
212
232
  return __generator(this, function (_c) {
213
233
  switch (_c.label) {
@@ -215,10 +235,17 @@ function invokeAuthAdmin(_a) {
215
235
  case 1:
216
236
  app = _c.sent();
217
237
  func = app[functionName];
218
- return [4 /*yield*/, func.bind(app).apply(void 0, params)];
238
+ _c.label = 2;
219
239
  case 2:
220
- _c.sent();
240
+ _c.trys.push([2, 4, , 5]);
241
+ return [4 /*yield*/, func.bind(app).apply(void 0, params)];
242
+ case 3:
243
+ result = _c.sent();
244
+ return [2 /*return*/, result || null];
245
+ case 4:
246
+ e_2 = _c.sent();
221
247
  return [2 /*return*/, null];
248
+ case 5: return [2 /*return*/];
222
249
  }
223
250
  });
224
251
  });
@@ -234,7 +261,13 @@ function _getAuthAdminInstance(projectId, authPort) {
234
261
  process.env.FIREBASE_AUTH_EMULATOR_HOST = "".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(authPort);
235
262
  adminApp[projectId] =
236
263
  adminApp[projectId] || initializeApp({ projectId: projectId }, projectId);
237
- return [2 /*return*/, getAuth(adminApp[projectId])];
264
+ if (spawnResult.tenant)
265
+ return [2 /*return*/, getAuth(adminApp[projectId])
266
+ .tenantManager()
267
+ .authForTenant(spawnResult.tenant)];
268
+ else
269
+ return [2 /*return*/, getAuth(adminApp[projectId])];
270
+ return [2 /*return*/];
238
271
  });
239
272
  });
240
273
  }