Fix lint errors

Remove commonFramework build from gulpfile
This commit is contained in:
Berkeley Martinez
2016-05-31 15:26:24 -07:00
parent a0efb99ea8
commit 515051d817
11 changed files with 19 additions and 274 deletions

View File

@ -1,70 +0,0 @@
document.addEventListener('DOMContentLoaded', function() {
var common = parent.__common;
var Rx = parent.Rx;
common.getJsOutput = function evalJs(source = '') {
if (window.__err || !common.shouldRun()) {
return window.__err || 'source disabled';
}
let output;
try {
/* eslint-disable no-eval */
output = eval(source);
/* eslint-enable no-eval */
} catch (e) {
window.__err = e;
}
return output;
};
common.runTests$ = function runTests$({ tests = [], source }) {
const editor = { getValue() { return source; } };
if (window.__err) {
return Rx.Observable.throw(window.__err);
}
// Iterate through the test one at a time
// on new stacks
return Rx.Observable.from(tests, null, null, Rx.Scheduler.default)
// add delay here for firefox to catch up
.delay(100)
.map(({ text, testString }) => {
const newTest = { text, testString };
let test;
try {
/* eslint-disable no-eval */
test = eval(testString);
/* eslint-enable no-eval */
if (typeof test === 'function') {
// maybe sync/promise/observable
if (test.length === 0) {
test();
}
// callback test
if (test.length === 1) {
console.log('callback test');
}
}
} catch (e) {
newTest.err = e.message.split(':').shift();
}
return newTest;
})
// gather tests back into an array
.toArray();
};
// used when updating preview without running tests
common.checkPreview$ = function checkPreview$(args) {
if (window.__err) {
return Rx.Observable.throw(window.__err);
}
return Rx.Observable.just(args);
};
// now that the runPreviewTest$ is defined
// we set the subject to true
// this will let the updatePreview
// script now that we are ready.
common.testFrameReady$.onNext(true);
});

View File

@ -1,97 +0,0 @@
/* eslint-disable no-eval */
/* global importScripts, application */
// executes the given code and handles the result
function importScript(url, error) {
try {
importScripts(url);
} catch (e) {
error = e;
}
return error;
}
function run(code, cb) {
var err = null;
var result = {};
try {
var codeExec = runHidden(code);
result.type = typeof codeExec;
result.output = stringify(codeExec);
} catch (e) {
err = e.message;
}
if (err) {
cb(err, null);
} else {
cb(null, result);
}
self.close();
}
// protects even the worker scope from being accessed
function runHidden(code) {
/* eslint-disable no-unused-vars */
var indexedDB = null;
var location = null;
var navigator = null;
var onerror = null;
var onmessage = null;
var performance = null;
var self = null;
var webkitIndexedDB = null;
var postMessage = null;
var close = null;
var openDatabase = null;
var openDatabaseSync = null;
var webkitRequestFileSystem = null;
var webkitRequestFileSystemSync = null;
var webkitResolveLocalFileSystemSyncURL = null;
var webkitResolveLocalFileSystemURL = null;
var addEventListener = null;
var dispatchEvent = null;
var removeEventListener = null;
var dump = null;
var onoffline = null;
var ononline = null;
/* eslint-enable no-unused-vars */
var error = null;
error = importScript(
'https://cdnjs.cloudflare.com/ajax/libs/chai/2.2.0/chai.min.js'
);
/* eslint-disable*/
var assert = chai.assert;
/* eslint-enable */
if (error) {
return error;
}
return eval(code);
}
// converts the output into a string
function stringify(output) {
var result;
if (typeof output === 'undefined') {
result = 'undefined';
} else if (output === null) {
result = 'null';
} else {
result = JSON.stringify(output) || output.toString();
}
return result;
}
application.setInterface({ run: run });

View File

@ -4,6 +4,7 @@ import { ajax$ } from '../../common/utils/ajax-stream';
import throwers from '../rechallenge/throwers'; import throwers from '../rechallenge/throwers';
import transformers from '../rechallenge/transformers'; import transformers from '../rechallenge/transformers';
import types from '../../common/app/routes/challenges/redux/types'; import types from '../../common/app/routes/challenges/redux/types';
import { createErrorObservable } from '../../common/app/redux/actions';
import { import {
frameMain, frameMain,
frameTests, frameTests,
@ -43,7 +44,7 @@ function cacheScript({ src } = {}) {
}) })
.map(({ response }) => response) .map(({ response }) => response)
.map(script => `<script>${script}</script>`) .map(script => `<script>${script}</script>`)
.catch(e => (console.error(e), Observable.just(''))) .catch(createErrorObservable)
.shareReplay(); .shareReplay();
scriptCache.set(src, script$); scriptCache.set(src, script$);
@ -126,9 +127,6 @@ export default function executeChallengeSaga(action$, getState) {
initOutput('// running test') : initOutput('// running test') :
null null
)) ))
.catch(error => Observable.just({ .catch(createErrorObservable);
type: 'app.error',
error
}));
}); });
} }

View File

@ -101,9 +101,7 @@ export default function frameSaga(actions$, getState, { window, document }) {
}); });
return Observable.merge( return Observable.merge(
proxyLogger$.map(args => { proxyLogger$.map(updateOutput),
return updateOutput(args);
}),
runTests$.flatMap(() => { runTests$.flatMap(() => {
const { frame } = getFrameDocument(document, testId); const { frame } = getFrameDocument(document, testId);
const { tests } = getState().challengesApp; const { tests } = getState().challengesApp;

View File

@ -42,7 +42,7 @@ export const updateChallengesData = createAction(types.updateChallengesData);
export const updateJobsData = createAction(types.updateJobsData); export const updateJobsData = createAction(types.updateJobsData);
export const updateHikesData = createAction(types.updateHikesData); export const updateHikesData = createAction(types.updateHikesData);
export const createErrorObserable = error => Observable.just({ export const createErrorObservable = error => Observable.just({
type: types.handleError, type: types.handleError,
error error
}); });

View File

@ -1,5 +1,5 @@
import { Observable } from 'rx'; import { setUser, fetchUser } from './types';
import { handleError, setUser, fetchUser } from './types'; import { createErrorObservable } from './actions';
export default function getUserSaga(action$, getState, { services }) { export default function getUserSaga(action$, getState, { services }) {
return action$ return action$
@ -12,9 +12,6 @@ export default function getUserSaga(action$, getState, { services }) {
payload: user payload: user
}; };
}) })
.catch(error => Observable.just({ .catch(createErrorObservable);
type: handleError,
error
}));
}); });
} }

View File

@ -4,7 +4,11 @@ import { push } from 'react-router-redux';
import types from './types'; import types from './types';
import { getMouse } from './utils'; import { getMouse } from './utils';
import { makeToast, updatePoints } from '../../../redux/actions'; import {
createErrorObservable,
makeToast,
updatePoints
} from '../../../redux/actions';
import { hikeCompleted, goToNextHike } from './actions'; import { hikeCompleted, goToNextHike } from './actions';
import { postJSON$ } from '../../../../utils/ajax-stream'; import { postJSON$ } from '../../../../utils/ajax-stream';
import { getCurrentHike } from './selectors'; import { getCurrentHike } from './selectors';
@ -91,12 +95,7 @@ function handleAnswer(action, getState) {
updatePoints(points), updatePoints(points),
); );
}) })
.catch(error => { .catch(createErrorObservable);
return Observable.just({
type: 'app.error',
error
});
});
} else { } else {
updateUser$ = Observable.empty(); updateUser$ = Observable.empty();
} }
@ -113,10 +112,7 @@ function handleAnswer(action, getState) {
return Observable.merge(challengeCompleted$, updateUser$) return Observable.merge(challengeCompleted$, updateUser$)
.delay(300) .delay(300)
.startWith(hikeCompleted(finalAnswer)) .startWith(hikeCompleted(finalAnswer))
.catch(error => Observable.just({ .catch(createErrorObservable)
type: 'error',
error
}))
// end with action so we know it is ok to transition // end with action so we know it is ok to transition
.concat(Observable.just({ type: types.transitionHike })); .concat(Observable.just({ type: types.transitionHike }));
} }

View File

@ -1,10 +1,8 @@
import { Observable } from 'rx';
import { normalize, Schema, arrayOf } from 'normalizr'; import { normalize, Schema, arrayOf } from 'normalizr';
// import debug from 'debug';
import types from './types'; import types from './types';
import { fetchHikesCompleted } from './actions'; import { fetchHikesCompleted } from './actions';
import { handleError } from '../../../redux/types'; import { createErrorObserable } from '../../../redux/actions';
import { findCurrentHike } from './utils'; import { findCurrentHike } from './utils';
@ -25,11 +23,6 @@ export default function fetchHikesSaga(action$, getState, { services }) {
const currentHike = findCurrentHike(result.hikes, dashedName); const currentHike = findCurrentHike(result.hikes, dashedName);
return fetchHikesCompleted(entities, result.hikes, currentHike); return fetchHikesCompleted(entities, result.hikes, currentHike);
}) })
.catch(error => { .catch(createErrorObserable);
return Observable.just({
type: handleError,
error
});
});
}); });
} }

View File

@ -37,7 +37,6 @@ var Rx = require('rx'),
// rev // rev
rev = require('gulp-rev'), rev = require('gulp-rev'),
revReplace = require('gulp-rev-replace'),
revDel = require('rev-del'), revDel = require('rev-del'),
// lint // lint
@ -112,33 +111,10 @@ var paths = {
js: [ js: [
'client/main.js', 'client/main.js',
'client/iFrameScripts.js',
'client/frame-runner.js', 'client/frame-runner.js',
'client/plugin.js' 'client/plugin.js'
], ],
commonFramework: [
'init',
'bindings',
'add-test-to-string',
'code-storage',
'code-uri',
'add-loop-protect',
'get-iframe',
'update-preview',
'create-editor',
'detect-unsafe-code-stream',
'display-test-results',
'execute-challenge-stream',
'output-display',
'phone-scroll-lock',
'report-issue',
'run-tests-stream',
'show-completion',
'step-challenge',
'end'
],
less: './client/less/main.less', less: './client/less/main.less',
lessFiles: './client/less/**/*.less', lessFiles: './client/less/**/*.less',
@ -162,12 +138,6 @@ var webpackOptions = {
devtool: 'inline-source-map' devtool: 'inline-source-map'
}; };
function formatCommonFrameworkPaths() {
return this.map(function(script) {
return 'client/commonFramework/' + script + '.js';
});
}
function errorHandler() { function errorHandler() {
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
@ -431,38 +401,6 @@ gulp.task('js', function() {
.pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest)); .pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest));
}); });
// commonFramework depend on iFrameScripts
// and faux.js
gulp.task('dependents', ['js'], function() {
var manifestName = 'dependents-manifest.json';
var dest = paths.publicJs;
var manifest = gulp.src(
path.join(__dirname, paths.manifest, 'js-manifest.json')
);
return gulp.src(formatCommonFrameworkPaths.call(paths.commonFramework))
.pipe(plumber({ errorHandler: errorHandler }))
.pipe(babel())
.pipe(__DEV__ ? sourcemaps.init() : gutil.noop())
.pipe(concat('commonFramework.js'))
.pipe(
__DEV__ ?
sourcemaps.write({ sourceRoot: '/commonFramework' }) :
gutil.noop()
)
.pipe(__DEV__ ? gutil.noop() : uglify())
.pipe(__DEV__ ? gutil.noop() : revReplace({ manifest: manifest }))
.pipe(gulp.dest(dest))
.pipe(__DEV__ ? gutil.noop() : rev())
.pipe(__DEV__ ? gutil.noop() : gulp.dest(dest))
.pipe(__DEV__ ? gutil.noop() : rev.manifest(manifestName))
.pipe(__DEV__ ? gutil.noop() : delRev(
dest,
manifestName
))
.pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest));
});
function collector(file, memo) { function collector(file, memo) {
return Object.assign({}, JSON.parse(file.contents), memo); return Object.assign({}, JSON.parse(file.contents), memo);
@ -475,7 +413,6 @@ function done(manifest) {
var buildDependents = [ var buildDependents = [
'less', 'less',
'js', 'js',
'dependents',
'pack-client', 'pack-client',
'move-webpack-manifest' 'move-webpack-manifest'
]; ];
@ -489,7 +426,6 @@ gulp.task('build-manifest', buildDependents, function() {
gulp.task('build', [ gulp.task('build', [
'less', 'less',
'js', 'js',
'dependents',
'pack-client', 'pack-client',
'move-webpack-manifest', 'move-webpack-manifest',
'clean-webpack-manifest', 'clean-webpack-manifest',
@ -499,7 +435,6 @@ gulp.task('build', [
var watchDependents = [ var watchDependents = [
'less', 'less',
'js', 'js',
'dependents',
'serve', 'serve',
'sync' 'sync'
]; ];
@ -513,11 +448,7 @@ gulp.task('watch', watchDependents, function() {
gulp.watch(paths.lessFiles, ['less']); gulp.watch(paths.lessFiles, ['less']);
gulp.watch(paths.js.concat(paths.vendorChallenges), ['js']); gulp.watch(paths.js.concat(paths.vendorChallenges), ['js']);
gulp.watch(paths.challenges, ['test-challenges', 'reload']); gulp.watch(paths.challenges, ['test-challenges', 'reload']);
gulp.watch(paths.js, ['js', 'dependents']); gulp.watch(paths.js, ['js']);
gulp.watch(
formatCommonFrameworkPaths.call(paths.commonFramework),
['dependents']
);
}); });
gulp.task('default', [ gulp.task('default', [

View File

@ -138,7 +138,6 @@
"gulp-plumber": "^1.0.1", "gulp-plumber": "^1.0.1",
"gulp-reduce-file": "0.0.1", "gulp-reduce-file": "0.0.1",
"gulp-rev": "^7.0.0", "gulp-rev": "^7.0.0",
"gulp-rev-replace": "~0.4.2",
"gulp-sourcemaps": "^1.6.0", "gulp-sourcemaps": "^1.6.0",
"gulp-tape": "0.0.9", "gulp-tape": "0.0.9",
"gulp-uglify": "^1.5.1", "gulp-uglify": "^1.5.1",

View File

@ -16,7 +16,7 @@ if (!requireProto.hasOwnProperty('ensure')) {
Object.defineProperties( Object.defineProperties(
requireProto, requireProto,
{ {
'ensure': { ensure: {
value: function ensure(modules, callback) { value: function ensure(modules, callback) {
callback(this); callback(this);
}, },