Fix jQuery challenges
This commit is contained in:
55
client/commonFramework/detect-unsafe-code-stream.js
Normal file
55
client/commonFramework/detect-unsafe-code-stream.js
Normal file
@@ -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));
|
Reference in New Issue
Block a user