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