mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-13 02:14:17 +01:00
Move orphanizeString() into text-utils module
Another small step toward the goal of reducing dependency on `µb`. Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1664 text-iterators module has been renamed text-utils to better reflect its content.
This commit is contained in:
parent
2eb02c5adc
commit
cb72211795
11 changed files with 37 additions and 26 deletions
|
@ -28,7 +28,7 @@ import './lib/punycode.js';
|
||||||
|
|
||||||
import globals from './js/globals.js';
|
import globals from './js/globals.js';
|
||||||
import { FilteringContext } from './js/filtering-context.js';
|
import { FilteringContext } from './js/filtering-context.js';
|
||||||
import { LineIterator } from './js/text-iterators.js';
|
import { LineIterator } from './js/text-utils.js';
|
||||||
import { StaticFilteringParser } from './js/static-filtering-parser.js';
|
import { StaticFilteringParser } from './js/static-filtering-parser.js';
|
||||||
import { staticNetFilteringEngine } from './js/static-net-filtering.js';
|
import { staticNetFilteringEngine } from './js/static-net-filtering.js';
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ import './lib/publicsuffixlist/publicsuffixlist.js';
|
||||||
import globals from './js/globals.js';
|
import globals from './js/globals.js';
|
||||||
import snfe from './js/static-net-filtering.js';
|
import snfe from './js/static-net-filtering.js';
|
||||||
import { FilteringContext } from './js/filtering-context.js';
|
import { FilteringContext } from './js/filtering-context.js';
|
||||||
import { LineIterator } from './js/text-iterators.js';
|
import { LineIterator } from './js/text-utils.js';
|
||||||
import { StaticFilteringParser } from './js/static-filtering-parser.js';
|
import { StaticFilteringParser } from './js/static-filtering-parser.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -30,8 +30,8 @@ import scriptletFilteringEngine from './scriptlet-filtering.js';
|
||||||
import staticNetFilteringEngine from './static-net-filtering.js';
|
import staticNetFilteringEngine from './static-net-filtering.js';
|
||||||
import µb from './background.js';
|
import µb from './background.js';
|
||||||
import { FilteringContext } from './filtering-context.js';
|
import { FilteringContext } from './filtering-context.js';
|
||||||
|
import { LineIterator } from './text-utils.js';
|
||||||
import { sessionFirewall } from './dynamic-net-filtering.js';
|
import { sessionFirewall } from './dynamic-net-filtering.js';
|
||||||
import { LineIterator } from './text-iterators.js';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
domainFromHostname,
|
domainFromHostname,
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
import '../lib/punycode.js';
|
import '../lib/punycode.js';
|
||||||
|
|
||||||
import globals from './globals.js';
|
import globals from './globals.js';
|
||||||
import { LineIterator } from './text-iterators.js';
|
import { LineIterator } from './text-utils.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
decomposeHostname,
|
decomposeHostname,
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
import '../lib/punycode.js';
|
import '../lib/punycode.js';
|
||||||
|
|
||||||
import globals from './globals.js';
|
import globals from './globals.js';
|
||||||
import { LineIterator } from './text-iterators.js';
|
import { LineIterator } from './text-utils.js';
|
||||||
import { decomposeHostname } from './uri-utils.js';
|
import { decomposeHostname } from './uri-utils.js';
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
|
@ -27,6 +27,7 @@ import contextMenu from './contextmenu.js';
|
||||||
import logger from './logger.js';
|
import logger from './logger.js';
|
||||||
import staticNetFilteringEngine from './static-net-filtering.js';
|
import staticNetFilteringEngine from './static-net-filtering.js';
|
||||||
import µb from './background.js';
|
import µb from './background.js';
|
||||||
|
import { orphanizeString } from './text-utils.js';
|
||||||
import { redirectEngine } from './redirect-engine.js';
|
import { redirectEngine } from './redirect-engine.js';
|
||||||
import { sessionFirewall } from './dynamic-net-filtering.js';
|
import { sessionFirewall } from './dynamic-net-filtering.js';
|
||||||
import { sessionSwitches } from './hnswitches.js';
|
import { sessionSwitches } from './hnswitches.js';
|
||||||
|
@ -468,7 +469,7 @@ const PageStore = class {
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.title = µb.orphanizeString(details.title.slice(0, 128));
|
this.title = orphanizeString(details.title.slice(0, 128));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,11 @@
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
import io from './assets.js';
|
import io from './assets.js';
|
||||||
import µb from './background.js';
|
|
||||||
import { LineIterator } from './text-iterators.js';
|
import {
|
||||||
|
LineIterator,
|
||||||
|
orphanizeString,
|
||||||
|
} from './text-utils.js';
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
@ -409,7 +412,7 @@ RedirectEngine.prototype.resourcesFromString = function(text) {
|
||||||
// No more data, add the resource.
|
// No more data, add the resource.
|
||||||
const name = this.aliases.get(fields[0]) || fields[0];
|
const name = this.aliases.get(fields[0]) || fields[0];
|
||||||
const mime = fields[1];
|
const mime = fields[1];
|
||||||
const content = µb.orphanizeString(
|
const content = orphanizeString(
|
||||||
fields.slice(2).join(encoded ? '' : '\n')
|
fields.slice(2).join(encoded ? '' : '\n')
|
||||||
);
|
);
|
||||||
this.resources.set(
|
this.resources.set(
|
||||||
|
|
|
@ -36,7 +36,6 @@ import staticFilteringReverseLookup from './reverselookup.js';
|
||||||
import staticNetFilteringEngine from './static-net-filtering.js';
|
import staticNetFilteringEngine from './static-net-filtering.js';
|
||||||
import µb from './background.js';
|
import µb from './background.js';
|
||||||
import { hostnameFromURI } from './uri-utils.js';
|
import { hostnameFromURI } from './uri-utils.js';
|
||||||
import { LineIterator } from './text-iterators.js';
|
|
||||||
import { permanentFirewall } from './dynamic-net-filtering.js';
|
import { permanentFirewall } from './dynamic-net-filtering.js';
|
||||||
import { permanentSwitches } from './hnswitches.js';
|
import { permanentSwitches } from './hnswitches.js';
|
||||||
import { permanentURLFiltering } from './url-net-filtering.js';
|
import { permanentURLFiltering } from './url-net-filtering.js';
|
||||||
|
@ -50,6 +49,11 @@ import {
|
||||||
CompiledListWriter,
|
CompiledListWriter,
|
||||||
} from './static-filtering-io.js';
|
} from './static-filtering-io.js';
|
||||||
|
|
||||||
|
import {
|
||||||
|
LineIterator,
|
||||||
|
orphanizeString,
|
||||||
|
} from './text-utils.js';
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
µb.getBytesInUse = async function() {
|
µb.getBytesInUse = async function() {
|
||||||
|
@ -898,10 +902,6 @@ self.addEventListener('hiddenSettingsChanged', ( ) => {
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/3406
|
// https://github.com/gorhill/uBlock/issues/3406
|
||||||
// Lower minimum update period to 1 day.
|
// Lower minimum update period to 1 day.
|
||||||
// https://bugs.chromium.org/p/v8/issues/detail?id=2869
|
|
||||||
// orphanizeString is to work around String.slice() potentially causing
|
|
||||||
// the whole raw filter list to be held in memory just because we cut out
|
|
||||||
// the title as a substring.
|
|
||||||
|
|
||||||
µb.extractFilterListMetadata = function(assetKey, raw) {
|
µb.extractFilterListMetadata = function(assetKey, raw) {
|
||||||
const listEntry = this.availableFilterLists[assetKey];
|
const listEntry = this.availableFilterLists[assetKey];
|
||||||
|
@ -914,13 +914,13 @@ self.addEventListener('hiddenSettingsChanged', ( ) => {
|
||||||
let matches = head.match(/(?:^|\n)(?:!|# )[\t ]*Title[\t ]*:([^\n]+)/i);
|
let matches = head.match(/(?:^|\n)(?:!|# )[\t ]*Title[\t ]*:([^\n]+)/i);
|
||||||
const title = matches && matches[1].trim() || '';
|
const title = matches && matches[1].trim() || '';
|
||||||
if ( title !== '' && title !== listEntry.title ) {
|
if ( title !== '' && title !== listEntry.title ) {
|
||||||
listEntry.title = this.orphanizeString(title);
|
listEntry.title = orphanizeString(title);
|
||||||
io.registerAssetSource(assetKey, { title });
|
io.registerAssetSource(assetKey, { title });
|
||||||
}
|
}
|
||||||
matches = head.match(/(?:^|\n)(?:!|# )[\t ]*Homepage[\t ]*:[\t ]*(https?:\/\/\S+)\s/i);
|
matches = head.match(/(?:^|\n)(?:!|# )[\t ]*Homepage[\t ]*:[\t ]*(https?:\/\/\S+)\s/i);
|
||||||
const supportURL = matches && matches[1] || '';
|
const supportURL = matches && matches[1] || '';
|
||||||
if ( supportURL !== '' && supportURL !== listEntry.supportURL ) {
|
if ( supportURL !== '' && supportURL !== listEntry.supportURL ) {
|
||||||
listEntry.supportURL = this.orphanizeString(supportURL);
|
listEntry.supportURL = orphanizeString(supportURL);
|
||||||
io.registerAssetSource(assetKey, { supportURL });
|
io.registerAssetSource(assetKey, { supportURL });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,17 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
// https://bugs.chromium.org/p/v8/issues/detail?id=2869
|
||||||
|
// orphanizeString is to work around String.slice() potentially causing
|
||||||
|
// the whole raw filter list to be held in memory just because we cut out
|
||||||
|
// the title as a substring.
|
||||||
|
|
||||||
|
function orphanizeString(s) {
|
||||||
|
return JSON.parse(JSON.stringify(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
class LineIterator {
|
class LineIterator {
|
||||||
constructor(text, offset) {
|
constructor(text, offset) {
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
@ -89,4 +100,8 @@ class FieldIterator {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
export { LineIterator, FieldIterator };
|
export {
|
||||||
|
FieldIterator,
|
||||||
|
LineIterator,
|
||||||
|
orphanizeString,
|
||||||
|
};
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
import { LineIterator } from './text-iterators.js';
|
import { LineIterator } from './text-utils.js';
|
||||||
import { decomposeHostname } from './uri-utils.js';
|
import { decomposeHostname } from './uri-utils.js';
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -141,14 +141,6 @@ import µb from './background.js';
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// TODO: evaluate using TextEncoder/TextDecoder
|
|
||||||
|
|
||||||
µb.orphanizeString = function(s) {
|
|
||||||
return JSON.parse(JSON.stringify(s));
|
|
||||||
};
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
µb.fireDOMEvent = function(name) {
|
µb.fireDOMEvent = function(name) {
|
||||||
if (
|
if (
|
||||||
window instanceof Object &&
|
window instanceof Object &&
|
||||||
|
|
Loading…
Reference in a new issue