2
0
mirror of synced 2025-02-24 12:08:10 +00:00

Updates phantomjs test cases for gulp and TypeScript dist files.

This commit is contained in:
Richard Moore 2018-06-14 02:25:56 -04:00
parent c411d9744d
commit 4df78764a2
No known key found for this signature in database
GPG Key ID: 525F70A6FCABC295
25 changed files with 8164 additions and 41836 deletions

View File

@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

7200
dist/ethers-providers.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

7456
dist/ethers-utils.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

12852
dist/ethers-wallet.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

9930
dist/ethers.js vendored

File diff suppressed because one or more lines are too long

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

File diff suppressed because one or more lines are too long

147
gulpfile.js Normal file
View 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/"));
});

5677
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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",

View File

@ -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]);

View File

@ -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;

View File

@ -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,

View File

@ -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';

View File

@ -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));

View File

@ -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 = [];

View File

@ -1,6 +1,6 @@
'use strict';
import { bigNumberify, ConstantZero, ConstantNegativeOne } from './bignumber.js';
import { bigNumberify, ConstantZero, ConstantNegativeOne } from './bignumber';
import * as errors from './errors';

View File

@ -1,6 +1,6 @@
'use strict';
import { arrayify, Arrayish } from './convert.js';
import { arrayify, Arrayish } from './convert';
export enum UnicodeNormalizationForm {
current = '',

View File

@ -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>

View File

@ -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"
]
}