Updates phantomjs test cases for gulp and TypeScript dist files.
This commit is contained in:
parent
c411d9744d
commit
4df78764a2
@ -1,34 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs');
|
||||
|
||||
// Create a mock-fs module that can load our gzipped test cases
|
||||
var data = {};
|
||||
fs.readdirSync('tests/tests').forEach(function(filename) {
|
||||
if (!filename.match(/\.json\.gz$/)) { return; }
|
||||
filename = 'tests/tests/' + filename;
|
||||
data['/' + filename] = fs.readFileSync(filename).toString('base64');
|
||||
});
|
||||
fs.writeFileSync('./tests/dist/tests.json', JSON.stringify(data));
|
||||
|
||||
|
||||
module.exports = function(grunt) {
|
||||
grunt.initConfig({
|
||||
browserify: {
|
||||
dist: {
|
||||
files: {
|
||||
'tests/dist/tests.js': './tests/browser.js',
|
||||
},
|
||||
options: {
|
||||
browserifyOptions: {
|
||||
standalone: 'tests',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-browserify');
|
||||
|
||||
grunt.registerTask('dist', ['browserify']);
|
||||
};
|
6603
dist/ethers-contracts.js
vendored
6603
dist/ethers-contracts.js
vendored
File diff suppressed because it is too large
Load Diff
3
dist/ethers-contracts.min.js
vendored
3
dist/ethers-contracts.min.js
vendored
File diff suppressed because one or more lines are too long
7200
dist/ethers-providers.js
vendored
7200
dist/ethers-providers.js
vendored
File diff suppressed because it is too large
Load Diff
4
dist/ethers-providers.min.js
vendored
4
dist/ethers-providers.min.js
vendored
File diff suppressed because one or more lines are too long
7456
dist/ethers-utils.js
vendored
7456
dist/ethers-utils.js
vendored
File diff suppressed because it is too large
Load Diff
3
dist/ethers-utils.min.js
vendored
3
dist/ethers-utils.min.js
vendored
File diff suppressed because one or more lines are too long
12852
dist/ethers-wallet.js
vendored
12852
dist/ethers-wallet.js
vendored
File diff suppressed because one or more lines are too long
7
dist/ethers-wallet.min.js
vendored
7
dist/ethers-wallet.min.js
vendored
File diff suppressed because one or more lines are too long
8312
dist/ethers.js
vendored
8312
dist/ethers.js
vendored
File diff suppressed because one or more lines are too long
10
dist/ethers.min.js
vendored
10
dist/ethers.min.js
vendored
File diff suppressed because one or more lines are too long
1
dist/ethers.min.js.map
vendored
Normal file
1
dist/ethers.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
147
gulpfile.js
Normal file
147
gulpfile.js
Normal file
@ -0,0 +1,147 @@
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs');
|
||||
var through = require('through');
|
||||
|
||||
var gulp = require("gulp");
|
||||
var ts = require("gulp-typescript");
|
||||
var tsProject = ts.createProject("tsconfig.json");
|
||||
|
||||
var browserify = require("browserify");
|
||||
var source = require('vinyl-source-stream');
|
||||
var tsify = require("tsify");
|
||||
|
||||
var sourcemaps = require('gulp-sourcemaps');
|
||||
var uglify = require('gulp-uglify');
|
||||
var buffer = require('vinyl-buffer');
|
||||
|
||||
/////////////////////////
|
||||
// Transforms
|
||||
|
||||
|
||||
// The elliptic package.json is only used for its version
|
||||
var ellipticPackage = require('elliptic/package.json');
|
||||
ellipticPackage = JSON.stringify({ version: ellipticPackage.version });
|
||||
|
||||
var version = require('./package.json').version;
|
||||
|
||||
var undef = "module.exports = undefined;";
|
||||
var empty = "module.exports = {};";
|
||||
|
||||
// We already have a random Uint8Array browser/node safe source
|
||||
// @TODO: Use path construction instead of ../..
|
||||
var brorand = "var randomBytes = require('../../src.ts/utils').randomBytes; module.exports = function(length) { return randomBytes(length); };";
|
||||
|
||||
var transforms = {
|
||||
// 'ethers.js/package.json': JSON.stringify({ version: version }),
|
||||
|
||||
// Remove the precomputed secp256k1 points
|
||||
"elliptic/lib/elliptic/precomputed/secp256k1.js": undef,
|
||||
|
||||
// Remove curves we don't care about
|
||||
"elliptic/curve/edwards.js": empty,
|
||||
"elliptic/curve/mont.js": empty,
|
||||
"elliptic/lib/elliptic/eddsa/.*": empty,
|
||||
|
||||
// We only use the version from this JSON package
|
||||
"elliptic/package.json" : ellipticPackage,
|
||||
|
||||
// Remove RIPEMD160
|
||||
"hash.js/lib/hash/ripemd.js": "module.exports = {ripemd160: null}",
|
||||
"hash.js/lib/hash/sha/1.js": empty,
|
||||
"hash.js/lib/hash/sha/224.js": empty,
|
||||
"hash.js/lib/hash/sha/384.js": empty,
|
||||
|
||||
// Swap out borland for the random bytes we already have
|
||||
"brorand/index.js": brorand,
|
||||
|
||||
// Used by sha3 if it exists; (so make it no exist)
|
||||
// "process/.*": undef,
|
||||
};
|
||||
|
||||
function transformFile(path) {
|
||||
for (var pattern in transforms) {
|
||||
if (path.match(new RegExp('/' + pattern + '$'))) {
|
||||
return transforms[pattern];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function transform(path, options) {
|
||||
var data = '';
|
||||
|
||||
return through(function(chunk) {
|
||||
data += chunk;
|
||||
}, function () {
|
||||
var transformed = transformFile(path);
|
||||
if (transformed != null) {
|
||||
console.log('Transformed:', path);
|
||||
data = transformed;
|
||||
} else {
|
||||
var size = fs.readFileSync(path).length;
|
||||
console.log('Preserved:', path, size);
|
||||
}
|
||||
this.queue(data);
|
||||
this.queue(null);
|
||||
});
|
||||
}
|
||||
|
||||
function task(name, options) {
|
||||
|
||||
gulp.task(name, function () {
|
||||
|
||||
var result = browserify({
|
||||
basedir: '.',
|
||||
debug: options.debug,
|
||||
entries: [ 'src.ts/' ],
|
||||
cache: {},
|
||||
packageCache: {},
|
||||
standalone: "ethers",
|
||||
transform: [ [ transform, { global: true } ] ],
|
||||
})
|
||||
.plugin(tsify)
|
||||
.bundle()
|
||||
.pipe(source(options.filename))
|
||||
|
||||
if (options.minify) {
|
||||
result = result.pipe(buffer())
|
||||
.pipe(sourcemaps.init({loadMaps: true}))
|
||||
.pipe(uglify())
|
||||
.pipe(sourcemaps.write('./'))
|
||||
}
|
||||
|
||||
result = result.pipe(gulp.dest("dist"));
|
||||
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
task("default", { filename: "ethers.js", debug: false, minify: false });
|
||||
task("debug", { filename: "ethers-debug.js", debug: true, minify: false });
|
||||
task("minified", { filename: "ethers.min.js", debug: false, minify: true });
|
||||
|
||||
|
||||
gulp.task("tests", function() {
|
||||
|
||||
// Create a mock-fs module that can load our gzipped test cases
|
||||
var data = {};
|
||||
fs.readdirSync('tests/tests').forEach(function(filename) {
|
||||
if (!filename.match(/\.json\.gz$/)) { return; }
|
||||
filename = 'tests/tests/' + filename;
|
||||
data['/' + filename] = fs.readFileSync(filename).toString('base64');
|
||||
});
|
||||
fs.writeFileSync('./tests/dist/tests.json', JSON.stringify(data));
|
||||
|
||||
return browserify({
|
||||
basedir: './',
|
||||
debug: false,
|
||||
entries: [ "./tests/browser.js" ],
|
||||
cache: {},
|
||||
packageCache: {},
|
||||
standalone: "tests"
|
||||
})
|
||||
.bundle()
|
||||
.pipe(source("tests.js"))
|
||||
.pipe(gulp.dest("tests/dist/"));
|
||||
});
|
5505
package-lock.json
generated
5505
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
@ -4,12 +4,13 @@
|
||||
"description": "Ethereum wallet library.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "tsc -p ./src.ts",
|
||||
"autobuild": "npm run build -- -w",
|
||||
"build": "tsc -p ./tsconfig.json",
|
||||
"auto-build": "npm run build -- -w",
|
||||
"dist": "gulp default minified",
|
||||
"test": "if [ \"$RUN_PHANTOMJS\" = \"1\" ]; then npm run-script test-phantomjs; else npm run-script test-node; fi",
|
||||
"test-node": "./node_modules/.bin/mocha tests/test-*.js",
|
||||
"test-phantomjs": "./node_modules/.bin/grunt dist && ./node_modules/.bin/grunt --gruntfile Gruntfile-test.js dist && phantomjs --web-security=false ./node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js ./tests/test.html",
|
||||
"version": "grunt dist"
|
||||
"test-node": "mocha tests/test-*.js",
|
||||
"test-phantomjs": "gulp minified tests && phantomjs --web-security=false ./node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js ./tests/test.html",
|
||||
"version": "npm dist"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": "^10.3.2",
|
||||
@ -24,25 +25,30 @@
|
||||
"xmlhttprequest": "1.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"browserify": "^16.2.2",
|
||||
"browserify-zlib": "^0.2.0",
|
||||
"grunt": "^0.4.5",
|
||||
"grunt-browserify": "^5.0.0",
|
||||
"grunt-cli": "1.2.0",
|
||||
"grunt-contrib-uglify": "^1.0.1",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-cli": "^2.0.1",
|
||||
"gulp-sourcemaps": "^2.6.4",
|
||||
"gulp-typescript": "^5.0.0-alpha.1",
|
||||
"gulp-uglify": "^3.0.0",
|
||||
"mocha": "^3.2.0",
|
||||
"mocha-phantomjs-core": "2.1.2",
|
||||
"solc": "0.4.20",
|
||||
"tsify": "^4.0.0",
|
||||
"tslint": "^5.10.0",
|
||||
"typescript": "^2.9.1",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vinyl-source-stream": "^2.0.0",
|
||||
"web3": "0.20.2"
|
||||
},
|
||||
"browser": {
|
||||
"fs": "./tests/browser-fs.js",
|
||||
"zlib": "browserify-zlib",
|
||||
"./utils/base64.js": "./utils/browser-base64.js",
|
||||
"./utils/random-bytes.js": "./utils/browser-random-bytes.js",
|
||||
"./src.ts/utils/base64.ts": "./src.browser/browser-base64.ts",
|
||||
"./src.ts/utils/random-bytes.js": "./src.browser/browser-random-bytes.js",
|
||||
"./providers/ipc-provider.js": "./utils/empty.js",
|
||||
"xmlhttprequest": "./providers/browser-xmlhttprequest.js"
|
||||
"xmlhttprequest": "./src.browser/browser-xmlhttprequest.ts"
|
||||
},
|
||||
"keywords": [
|
||||
"ethereum",
|
||||
|
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
import convert = require('./convert');
|
||||
import { arrayify } from '../src.ts/utils/convert';
|
||||
|
||||
module.exports = {
|
||||
decode: function(textData) {
|
||||
@ -9,10 +9,10 @@ module.exports = {
|
||||
for (var i = 0; i < textData.length; i++) {
|
||||
data.push(textData.charCodeAt(i));
|
||||
}
|
||||
return convert.arrayify(data);
|
||||
return arrayify(data);
|
||||
},
|
||||
encode: function(data) {
|
||||
data = convert.arrayify(data);
|
||||
data = arrayify(data);
|
||||
var textData = '';
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
textData += String.fromCharCode(data[i]);
|
||||
|
@ -1,11 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
function throwError(message, params) {
|
||||
var error = new Error(message);
|
||||
for (var key in params) {
|
||||
error[key] = params[key];
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
|
||||
module.exports = throwError;
|
@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
import { Contract } from './contract.js';
|
||||
import { Interface } from './interface.js';
|
||||
import { Contract } from './contract';
|
||||
import { Interface } from './interface';
|
||||
|
||||
export {
|
||||
Contract,
|
||||
|
@ -3,7 +3,7 @@
|
||||
// See: https://github.com/ethereum/wiki/wiki/JSON-RPC
|
||||
|
||||
import { getNetwork, Network } from './networks';
|
||||
import { BlockTag, Provider, TransactionRequest, TransactionResponse } from './provider.js';
|
||||
import { BlockTag, Provider, TransactionRequest, TransactionResponse } from './provider';
|
||||
|
||||
import { getAddress } from '../utils/address';
|
||||
import { BigNumber } from '../utils/bignumber';
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
import sha3 = require('js-sha3');
|
||||
|
||||
import { arrayify, Arrayish } from './convert.js';
|
||||
import { arrayify, Arrayish } from './convert';
|
||||
|
||||
export function keccak256(data: Arrayish): string {
|
||||
return '0x' + sha3.keccak_256(arrayify(data));
|
||||
|
@ -1,7 +1,7 @@
|
||||
//See: https://github.com/ethereum/wiki/wiki/RLP
|
||||
|
||||
|
||||
import { arrayify, Arrayish, hexlify } from './convert.js';
|
||||
import { arrayify, Arrayish, hexlify } from './convert';
|
||||
|
||||
function arrayifyInteger(value: number): Array<number> {
|
||||
var result = [];
|
||||
|
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
import { bigNumberify, ConstantZero, ConstantNegativeOne } from './bignumber.js';
|
||||
import { bigNumberify, ConstantZero, ConstantNegativeOne } from './bignumber';
|
||||
|
||||
import * as errors from './errors';
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
import { arrayify, Arrayish } from './convert.js';
|
||||
import { arrayify, Arrayish } from './convert';
|
||||
|
||||
export enum UnicodeNormalizationForm {
|
||||
current = '',
|
||||
|
@ -31,6 +31,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (!Math.tunc) {
|
||||
Math.trunc = function(v) {
|
||||
return parseInt(v);
|
||||
}
|
||||
}
|
||||
|
||||
// nextTick
|
||||
if (!window.nextTick) {
|
||||
window.nextTick = function (callback) { setTimeout(callback, 0); }
|
||||
@ -48,7 +54,7 @@
|
||||
<script type="text/javascript">mocha.setup('bdd')</script>
|
||||
|
||||
<!-- Load the browser dist ethers package -->
|
||||
<script type="text/javascript" src="../dist/ethers.js"></script>
|
||||
<script type="text/javascript" src="../dist/ethers.min.js"></script>
|
||||
|
||||
<!-- Our test cases; compiled by browserify -->
|
||||
<script src="./dist/tests.js" type="text/javascript"></script>
|
||||
|
@ -5,7 +5,7 @@
|
||||
"esModuleInterop": true,
|
||||
"lib": [ "es2015", "es5", "dom" ],
|
||||
"module": "commonjs",
|
||||
"outDir": "../src/",
|
||||
"outDir": "./src/",
|
||||
"target": "es5",
|
||||
"moduleResolution": "node",
|
||||
"resolveJsonModule": true,
|
||||
@ -20,6 +20,10 @@
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitReturns": true,
|
||||
"noUnusedLocals": true
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src.ts/*.ts",
|
||||
"src.ts/**/*.ts"
|
||||
]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user