Permalink
Please sign in to comment.
Showing
with
90 additions
and 70 deletions.
- +1 −0 .gitignore
- +55 −0 client/commonFramework/detect-unsafe-code-stream.js
- +4 −2 client/commonFramework/end.js
- +23 −65 client/commonFramework/execute-challenge-stream.js
- +3 −2 client/faux.js
- +4 −1 gulpfile.js
1
.gitignore
55
client/commonFramework/detect-unsafe-code-stream.js
@@ -0,0 +1,55 @@ | |||
+window.common = (function(global) { | |||
+ const { | |||
+ Rx: { Observable }, | |||
+ common = { init: [] } | |||
+ } = global; | |||
+ | |||
+ const detectFunctionCall = /function\s*?\(|function\s+\w+\s*?\(/gi; | |||
+ const detectUnsafeJQ = /\$\s*?\(\s*?\$\s*?\)/gi; | |||
+ const detectUnsafeConsoleCall = /if\s\(null\)\sconsole\.log\(1\);/gi; | |||
+ | |||
+ common.detectUnsafeCode$ = function detectUnsafeCode$(code) { | |||
+ const openingComments = code.match(/\/\*/gi); | |||
+ const closingComments = code.match(/\*\//gi); | |||
+ | |||
+ // checks if the number of opening comments(/*) matches the number of | |||
+ // closing comments(*/) | |||
+ if ( | |||
+ openingComments && | |||
+ ( | |||
+ !closingComments || | |||
+ openingComments.length > closingComments.length | |||
+ ) | |||
+ ) { | |||
+ | |||
+ return Observable.throw( | |||
+ new Error('SyntaxError: Unfinished multi-line comment') | |||
+ ); | |||
+ } | |||
+ | |||
+ if (code.match(detectUnsafeJQ)) { | |||
+ return Observable.throw( | |||
+ new Error('Unsafe $($)') | |||
+ ); | |||
+ } | |||
+ | |||
+ if ( | |||
+ code.match(/function/g) && | |||
+ !code.match(detectFunctionCall) | |||
+ ) { | |||
+ return Observable.throw( | |||
+ new Error('SyntaxError: Unsafe or unfinished function declaration') | |||
+ ); | |||
+ } | |||
+ | |||
+ if (code.match(detectUnsafeConsoleCall)) { | |||
+ return Observable.throw( | |||
+ new Error('Invalid if (null) console.log(1); detected') | |||
+ ); | |||
+ } | |||
+ | |||
+ return Observable.just(code); | |||
+ }; | |||
+ | |||
+ return common; | |||
+}(window)); |
6
client/commonFramework/end.js
88
client/commonFramework/execute-challenge-stream.js
5
client/faux.js
5
gulpfile.js
0 comments on commit
eec7fff