Permalink
Fetching contributors…
Cannot retrieve contributors at this time
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)); |