ad-block
Version:
Ad block engine used in the Brave browser for ABP filter syntax based lists like EasyList.
59 lines (52 loc) • 1.58 kB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
const I = (x) => x
/**
* Same as filterPredicate but will log if there is a LOG_OUTPUT env variable
*/
const filterPredicateWithPossibleLogging = (rule, filterPredicate = I) => {
const result = filterPredicate(rule)
if (process.env['LOG_OUTPUT'] && !result) {
console.log('Filtering out rule: ', rule)
}
return result
}
/**
* Mapping rule which reformats rules
*/
const mapRule = (rule) => {
if (rule === '||imasdk.googleapis.com^$third-party') {
return '||imasdk.googleapis.com^$third-party,explicitcancel'
}
if (rule === '/ima3.js') {
return '/ima3.js$explicitcancel'
}
return rule
}
/**
* Given a list of inputs returns a filtered list of rules that should be used.
*
* @param input {string} - ABP filter syntax to filter
* @return A better filter list
*/
const sanitizeABPInput = (input, filterPredicate = I) =>
input.split('\n')
.filter((rule) =>
filterPredicateWithPossibleLogging(rule, filterPredicate))
.map(mapRule)
// TODO: This can be removed a few versions after 0.62.x.
// It was just added to be backwards compatible with 0.61.x.
.concat(extraConcatRules)
.join('\n')
/**
* Extra rules that should be appended when sanitizing ABP input
*/
const extraConcatRules = [
'||imasdk.googleapis.com/$third-party',
'^ima3.js'
]
module.exports = {
sanitizeABPInput,
extraConcatRules
}