Make `Splore work in Safari and Firefox

To make this happen I updated to Babel 6 and changed to the es2015
preset since Firefox/Safari do NOT support classes, let, generators...

Now that compiled code is not ES6 any more we can run Uglify on it
too.

'Splore is 200k minimized which isn't terrible.

Towards #603
This commit is contained in:
Erik Arvidsson
2015-11-13 18:58:02 -05:00
parent b897704fd5
commit edac078091
10 changed files with 72 additions and 36 deletions
+6 -8
View File
@@ -1,11 +1,9 @@
{
"optional": ["asyncToGenerator"],
"blacklist": [
"es6.blockScoping",
"es6.constants",
"es6.forOf",
"es6.properties.computed",
"es6.properties.shorthand",
"es6.templateLiterals"
"presets": ["react", "es2015"],
"plugins": [
"syntax-async-functions",
"syntax-flow",
"transform-class-properties",
"transform-regenerator"
]
}
+3 -1
View File
@@ -1,6 +1,8 @@
[ignore]
.*/node_modules/babel.*
.*/node_modules/babylon/.*
.*/node_modules/fbjs/.*
.*/node_modules/react/.*
.*/node_modules/fbjs/flow/.*
[include]
+8
View File
@@ -0,0 +1,8 @@
SRC="node_modules/babel-regenerator-runtime/runtime.js main.js"
OUT="out.js"
export NODE_ENV=production
node_modules/.bin/browserify \
-p bundle-collapser/plugin \
-g uglifyify $SRC \
| node_modules/.bin/uglifyjs -c -m > $OUT
+1 -1
View File
@@ -3,6 +3,6 @@
<title>'Splore</title>
<meta charset="UTF-8">
<script src="out.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
<link rel="stylesheet" href="styles.css">
</head>
<body><div id="splore"></div></body>
+26 -9
View File
@@ -6,23 +6,40 @@
"react-dom": "^0.14.1"
},
"devDependencies": {
"babel": "^5.6.23",
"babel-eslint": "^4.1.3",
"babelify": "^6.1.3",
"babel-cli": "^6.1.18",
"babel-core": "^6.1.20",
"babel-eslint": "^4.1.5",
"babel-plugin-syntax-async-functions": "^6.1.18",
"babel-plugin-syntax-flow": "^6.1.18",
"babel-plugin-transform-class-properties": "^6.2.2",
"babel-plugin-transform-regenerator": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"babel-preset-react": "^6.1.18",
"babel-regenerator-runtime": "^6.2.0",
"babelify": "^7.2.0",
"browserify": "^12.0.1",
"bundle-collapser": "^1.2.1",
"chai": "^3.2.0",
"envify": "^3.4.0",
"eslint": "^1.7.3",
"eslint-plugin-react": "^3.6.3",
"eslint": "^1.9.0",
"eslint-plugin-react": "^3.8.0",
"flow-bin": "^0.18.1",
"grunt": "^0.4.5",
"mocha": "^2.3.0",
"uglify-js": "^2.6.1",
"uglifyify": "^3.0.1",
"watchify": "^3.6"
},
"scripts": {
"start": "NOMS_SERVER=http://localhost:8000 watchify -o out.js -v -d main.js",
"build": "NOMS_SERVER=http://localhost:8000 NODE_ENV=production browserify main.js > out.js",
"prod_build": "NOMS_SERVER=http://ds.noms.io NODE_ENV=production browserify main.js > out.js",
"start": "NOMS_SERVER=http://localhost:8000 watchify -o out.js -v -d node_modules/babel-regenerator-runtime/runtime.js main.js",
"build": "NOMS_SERVER=http://localhost:8000 ./build.sh",
"prod_build": "NOMS_SERVER=http://ds.noms.io ./build.sh",
"test": "rm -f out.js && eslint *.js && flow"
},
"browserify": {
"transform": ["babelify", "envify"]
"transform": [
"babelify",
"envify"
]
}
}
+6 -8
View File
@@ -1,11 +1,9 @@
{
"optional": ["asyncToGenerator"],
"blacklist": [
"es6.blockScoping",
"es6.constants",
"es6.forOf",
"es6.properties.computed",
"es6.properties.shorthand",
"es6.templateLiterals"
"presets": ["react", "es2015"],
"plugins": [
"syntax-async-functions",
"syntax-flow",
"transform-class-properties",
"transform-regenerator"
]
}
+4
View File
@@ -1,4 +1,8 @@
[ignore]
.*/node_modules/babel.*
.*/node_modules/babylon/.*
.*/node_modules/fbjs/.*
.*/node_modules/react/.*
[include]
+13 -5
View File
@@ -6,11 +6,19 @@
"text-encoding-utf-8": "^1.0.1"
},
"devDependencies": {
"babel": "~5.6.23",
"babel-eslint": "^4.1.3",
"babel-cli": "^6.1.18",
"babel-core": "^6.1.20",
"babel-eslint": "^4.1.5",
"babel-plugin-syntax-async-functions": "^6.1.18",
"babel-plugin-syntax-flow": "^6.1.18",
"babel-plugin-transform-class-properties": "^6.2.2",
"babel-plugin-transform-regenerator": "^6.2.0",
"babel-polyfill": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"babel-preset-react": "^6.1.18",
"chai": "^3.2.0",
"eslint": "^1.7.3",
"eslint-plugin-react": "^3.6.3",
"eslint": "^1.9.0",
"eslint-plugin-react": "^3.8.0",
"flow-bin": "^0.18.1",
"mocha": "^2.3.0"
},
@@ -18,7 +26,7 @@
"start": "babel -w src/ -d dist/",
"build": "babel src/ -d dist/",
"pretest": "eslint src/ && flow src/",
"test": "mocha --ui tdd --reporter dot --compilers js:babel/register src/"
"test": "mocha --ui tdd --reporter dot --require babel-polyfill --compilers js:babel-core/register src/"
},
"browser": {
"./dist/fetch.js": "./dist/browser/fetch.js"
+2 -2
View File
@@ -25,8 +25,8 @@ export default class HttpStore {
constructor(url: string, maxReads: number = 3) {
this._rpc = {
getRefs: url + '/getRefs/',
ref: url + '/ref',
root: url + '/root'
ref: url + '/ref/',
root: url + '/root/'
};
this._readQueue = Object.create(null);
this._anyPending = false;
+3 -2
View File
@@ -8,11 +8,10 @@ import {encodeNomsValue} from './encode.js';
import {readValue} from './decode.js';
import {Type} from './type.js';
import Struct from './struct.js';
import ChunkStore from './chunk_store.js';
import type {ChunkStore} from './chunk_store.js';
export {
Chunk,
ChunkStore,
encodeNomsValue,
HttpStore,
MemoryStore,
@@ -21,3 +20,5 @@ export {
Struct,
Type
};
export type {ChunkStore};