diff --git a/client/commonFramework/end.js b/client/commonFramework/end.js index 34a0985d2a..1c4a739a5b 100644 --- a/client/commonFramework/end.js +++ b/client/commonFramework/end.js @@ -7,6 +7,7 @@ $(document).ready(function() { init($); }); + // only run if editor present if (common.editor.getValue) { const code$ = common.editorKeyUp$ .debounce(750) @@ -24,8 +25,12 @@ $(document).ready(function() { ); code$ + // only run for HTML + .filter(() => common.challengeType === challengeTypes.HTML) .flatMap(code => { - if (common.hasJs(code)) { + if ( + common.hasJs(code) + ) { return common.detectUnsafeCode$(code) .flatMap(code => common.detectLoops$(code)) .flatMap( @@ -44,6 +49,7 @@ $(document).ready(function() { }, err => console.error(err) ); + } common.resetBtn$ @@ -129,21 +135,24 @@ $(document).ready(function() { } if ( - challengeType === challengeTypes.BONFIRE && + challengeType === challengeTypes.BONFIRE || challengeType === challengeTypes.JS ) { Observable.just({}) .delay(500) .flatMap(() => common.executeChallenge$()) + .catch(err => Observable.just({ err })) .subscribe( - ({ original, tests }) => { + ({ err, original, tests }) => { + if (err) { + console.error(err); + return common.updateOutputDisplay('' + err); + } common.codeStorage.updateStorage(challengeName, original); common.displayTestResults(tests); }, - ({ err }) => { - if (err.stack) { - console.error(err); - } + (err) => { + console.error(err); common.updateOutputDisplay('' + err); } ); diff --git a/client/commonFramework/execute-challenge-stream.js b/client/commonFramework/execute-challenge-stream.js index d9a7be1c59..de7e102751 100644 --- a/client/commonFramework/execute-challenge-stream.js +++ b/client/commonFramework/execute-challenge-stream.js @@ -57,12 +57,12 @@ window.common = (function(global) { // js challenge // remove comments and add tests to string - return common.addTestsToString(Object.assign( + return Observable.just(common.addTestsToString(Object.assign( { code: common.removeComments(code), tests: common.tests.slice() } - )) + ))) .flatMap(common.detectLoops$) .flatMap(({ err, code, data, userTests }) => { if (err) {