Testing from scratch: https://gifyu.com/image/lWfP
Testing after changing a single Solidity file: https://s4.gifyu.com/images/testing-after-sol-change.md.gif (https://gifyu.com/image/lWYd)
Testing a single file (Synthetix.js):
| 'use strict'; | |
| const version = process.argv[2]; | |
| // Simple script to exit non-zero if the given version | |
| // usage: npm view [package] versions | node vcheck [version] | |
| // eg: npm view synthetix versions | node vcheck 2.4.1 | |
| process.stdin | |
| .resume() | |
| .setEncoding('utf8') |
| const graphAPI = 'https://api.thegraph.com/subgraphs/name/synthetixio-team/synthetix'; | |
| const ts = Math.floor(Date.now()/1e3); | |
| const oneDayAgo = ts - (3600 * 24); | |
| const response = await fetch(graphAPI, { | |
| method: 'POST', | |
| body: `{"query":"{synthExchanges(orderBy:timestamp, orderDirection:desc, where:{timestamp_gt: ${oneDayAgo}}){id,from,gasPrice,fromAmount,fromCurrencyKey,toCurrencyKey,block,timestamp,toAddress}}","variables":null}` | |
| }); | |
| const json = await response.json(); |
| const { SynthetixJs } = require('synthetix-js'); | |
| const snxjs = new SynthetixJs(); | |
| (async () => { | |
| const provider = snxjs.ethers.getDefaultProvider(); | |
| const currentBlock = await provider.getBlockNumber(); | |
| const totalDebtInSystemAtBlock = await snxjs.Synthetix.contract.totalIssuedSynths( | |
| snxjs.utils.toUtf8Bytes4('sUSD'), |
| <header><img src="https://developer.synthetix.io/api/img/logo.png" /></header> | |
| <main> | |
| <p class="helper-text">Note: these results aren't strictly ordered to increase performance.</p> | |
| <button name="begin">Begin</button> | |
| <button name="stop">Stop</button> | |
| <ul> | |
| <li id="tokenHolders"><strong>Token Holders:</strong><var>?</var></li> |
| // Useful if you want to run a bunch of promises in serial (which admittedly isn't very often frankly) | |
| exports.asyncForEach = async (array, callback) => { | |
| for (let index = 0; index < array.length; index++) { | |
| await callback(array[index], index, array); | |
| } | |
| }; |
| 'use strict'; | |
| const WebSocket = require('ws'); | |
| const client = new WebSocket('wss://api.thegraph.com/subgraphs/name/synthetixio-team/synthetix-exchanges', [ | |
| 'graphql-ws', | |
| ]); | |
| client.on('open', () => { | |
| console.log('open'); |
| window.snxData=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catc |
| { | |
| /* | |
| // Place your snippets for JavaScript React here. Each snippet is defined under a snippet name and has a prefix, body and | |
| // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: | |
| // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the | |
| // same ids are connected. | |
| // Example: | |
| "Print to console": { | |
| "prefix": "log", | |
| "body": [ |
| #!/bin/sh | |
| # adapted from https://github.com/not-an-aardvark/git-delete-squashed | |
| function git-delete-squashed() { | |
| BASE_BRANCH=${1:-master} | |
| git checkout -q $BASE_BRANCH && | |
| git for-each-ref refs/heads/ "--format=%(refname:short)" | | |
| while read branch; | |
| do mergeBase=$(git merge-base $BASE_BRANCH $branch) && [[ $(git cherry $BASE_BRANCH $(git commit-tree $(git rev-parse $branch\^{tree}) -p $mergeBase -m _)) == "-"* ]] && | |
| git branch -D $branch; |
Testing from scratch: https://gifyu.com/image/lWfP
Testing after changing a single Solidity file: https://s4.gifyu.com/images/testing-after-sol-change.md.gif (https://gifyu.com/image/lWYd)
Testing a single file (Synthetix.js):