aboutsummaryrefslogtreecommitdiff
path: root/src/background/usecases/filters.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2020-04-09 10:38:37 +0900
committerGitHub <noreply@github.com>2020-04-09 10:38:37 +0900
commit1656d52d2cefb3846d968c6117484e6aefe7dabe (patch)
treeab58a99b832d2571e2168f2ee0e328bc12d9580e /src/background/usecases/filters.ts
parentc6c2da8547891b50aef2f08e5f36d258183831ff (diff)
parent5176643e64d8f4a6be5fc73f0eb48dc65322e496 (diff)
Merge pull request #730 from ueokande/refactor-console-and-completion
Refactor console and completions
Diffstat (limited to 'src/background/usecases/filters.ts')
-rw-r--r--src/background/usecases/filters.ts76
1 files changed, 0 insertions, 76 deletions
diff --git a/src/background/usecases/filters.ts b/src/background/usecases/filters.ts
deleted file mode 100644
index 98957a7..0000000
--- a/src/background/usecases/filters.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-type Item = browser.history.HistoryItem;
-
-const filterHttp = (items: Item[]): Item[] => {
- const httpsHosts = items.map(x => new URL(x.url as string))
- .filter(x => x.protocol === 'https:')
- .map(x => x.host);
- const hostsSet = new Set(httpsHosts);
-
- return items.filter((item: Item) => {
- const url = new URL(item.url as string);
- return url.protocol === 'https:' || !hostsSet.has(url.host);
- });
-};
-
-const filterBlankTitle = (items: Item[]): Item[] => {
- return items.filter(item => item.title && item.title !== '');
-};
-
-const filterByTailingSlash = (items: Item[]): Item[] => {
- const urls = items.map(item => new URL(item.url as string));
- const simplePaths = urls
- .filter(url => url.hash === '' && url.search === '')
- .map(url => url.origin + url.pathname);
- const pathsSet = new Set(simplePaths);
-
- return items.filter((item) => {
- const url = new URL(item.url as string);
- if (url.hash !== '' || url.search !== '' ||
- url.pathname.slice(-1) !== '/') {
- return true;
- }
- return !pathsSet.has(url.origin + url.pathname.slice(0, -1));
- });
-};
-
-const filterByPathname = (items: Item[], min: number): Item[] => {
- const hash: {[key: string]: Item} = {};
- for (const item of items) {
- const url = new URL(item.url as string);
- const pathname = url.origin + url.pathname;
- if (!hash[pathname]) {
- hash[pathname] = item;
- } else if ((hash[pathname].url as string).length >
- (item.url as string).length) {
- hash[pathname] = item;
- }
- }
- const filtered = Object.values(hash);
- if (filtered.length < min) {
- return items;
- }
- return filtered;
-};
-
-const filterByOrigin = (items: Item[], min: number): Item[] => {
- const hash: {[key: string]: Item} = {};
- for (const item of items) {
- const origin = new URL(item.url as string).origin;
- if (!hash[origin]) {
- hash[origin] = item;
- } else if ((hash[origin].url as string).length >
- (item.url as string).length) {
- hash[origin] = item;
- }
- }
- const filtered = Object.values(hash);
- if (filtered.length < min) {
- return items;
- }
- return filtered;
-};
-
-export {
- filterHttp, filterBlankTitle, filterByTailingSlash,
- filterByPathname, filterByOrigin
-};