aboutsummaryrefslogtreecommitdiff
path: root/src/background/repositories
diff options
context:
space:
mode:
Diffstat (limited to 'src/background/repositories')
-rw-r--r--src/background/repositories/BookmarkRepository.ts (renamed from src/background/repositories/BookmarkRepository.js)4
-rw-r--r--src/background/repositories/BrowserSettingRepository.js8
-rw-r--r--src/background/repositories/BrowserSettingRepository.ts24
-rw-r--r--src/background/repositories/CompletionsRepository.ts (renamed from src/background/repositories/CompletionsRepository.js)14
-rw-r--r--src/background/repositories/FindRepository.ts (renamed from src/background/repositories/FindRepository.js)6
-rw-r--r--src/background/repositories/MarkRepository.ts (renamed from src/background/repositories/MarkRepository.js)8
-rw-r--r--src/background/repositories/PersistentSettingRepository.ts (renamed from src/background/repositories/PersistentSettingRepository.js)6
-rw-r--r--src/background/repositories/SettingRepository.js23
-rw-r--r--src/background/repositories/SettingRepository.ts51
-rw-r--r--src/background/repositories/VersionRepository.js10
10 files changed, 100 insertions, 54 deletions
diff --git a/src/background/repositories/BookmarkRepository.js b/src/background/repositories/BookmarkRepository.ts
index 99f7ec4..b4da509 100644
--- a/src/background/repositories/BookmarkRepository.js
+++ b/src/background/repositories/BookmarkRepository.ts
@@ -1,5 +1,7 @@
export default class BookmarkRepository {
- async create(title, url) {
+ async create(
+ title: string, url: string
+ ): Promise<browser.bookmarks.BookmarkTreeNode> {
let item = await browser.bookmarks.create({
type: 'bookmark',
title,
diff --git a/src/background/repositories/BrowserSettingRepository.js b/src/background/repositories/BrowserSettingRepository.js
deleted file mode 100644
index a9d2c06..0000000
--- a/src/background/repositories/BrowserSettingRepository.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import * as urls from '../../shared/urls';
-
-export default class BrowserSettingRepository {
- async getHomepageUrls() {
- let { value } = await browser.browserSettings.homepageOverride.get({});
- return value.split('|').map(urls.normalizeUrl);
- }
-}
diff --git a/src/background/repositories/BrowserSettingRepository.ts b/src/background/repositories/BrowserSettingRepository.ts
new file mode 100644
index 0000000..33b35dd
--- /dev/null
+++ b/src/background/repositories/BrowserSettingRepository.ts
@@ -0,0 +1,24 @@
+import * as urls from '../../shared/urls';
+
+declare namespace browser.browserSettings.homepageOverride {
+
+ type BrowserSettings = {
+ value: string;
+ levelOfControl: LevelOfControlType;
+ };
+
+ type LevelOfControlType =
+ 'not_controllable' |
+ 'controlled_by_other_extensions' |
+ 'controllable_by_this_extension' |
+ 'controlled_by_this_extension';
+
+ function get(param: object): Promise<BrowserSettings>;
+}
+
+export default class BrowserSettingRepository {
+ async getHomepageUrls(): Promise<string[]> {
+ let { value } = await browser.browserSettings.homepageOverride.get({});
+ return value.split('|').map(urls.normalizeUrl);
+ }
+}
diff --git a/src/background/repositories/CompletionsRepository.js b/src/background/repositories/CompletionsRepository.ts
index 1318d36..18af587 100644
--- a/src/background/repositories/CompletionsRepository.js
+++ b/src/background/repositories/CompletionsRepository.ts
@@ -1,7 +1,13 @@
+type Tab = browser.tabs.Tab;
+type BookmarkTreeNode = browser.bookmarks.BookmarkTreeNode;
+
export default class CompletionsRepository {
- async queryBookmarks(keywords) {
+ async queryBookmarks(keywords: string): Promise<BookmarkTreeNode[]> {
let items = await browser.bookmarks.search({ query: keywords });
return items.filter((item) => {
+ if (!item.url) {
+ return false;
+ }
let url = undefined;
try {
url = new URL(item.url);
@@ -12,17 +18,17 @@ export default class CompletionsRepository {
});
}
- queryHistories(keywords) {
+ queryHistories(keywords: string): Promise<browser.history.HistoryItem[]> {
return browser.history.search({
text: keywords,
startTime: 0,
});
}
- async queryTabs(keywords, excludePinned) {
+ async queryTabs(keywords: string, excludePinned: boolean): Promise<Tab[]> {
let tabs = await browser.tabs.query({ currentWindow: true });
return tabs.filter((t) => {
- return t.url.toLowerCase().includes(keywords.toLowerCase()) ||
+ return t.url && t.url.toLowerCase().includes(keywords.toLowerCase()) ||
t.title && t.title.toLowerCase().includes(keywords.toLowerCase());
}).filter((t) => {
return !(excludePinned && t.pinned);
diff --git a/src/background/repositories/FindRepository.js b/src/background/repositories/FindRepository.ts
index 74ec914..bf286e6 100644
--- a/src/background/repositories/FindRepository.js
+++ b/src/background/repositories/FindRepository.ts
@@ -3,15 +3,17 @@ import MemoryStorage from '../infrastructures/MemoryStorage';
const FIND_KEYWORD_KEY = 'find-keyword';
export default class FindRepository {
+ private cache: MemoryStorage;
+
constructor() {
this.cache = new MemoryStorage();
}
- getKeyword() {
+ getKeyword(): Promise<string> {
return Promise.resolve(this.cache.get(FIND_KEYWORD_KEY));
}
- setKeyword(keyword) {
+ setKeyword(keyword: string): Promise<any> {
this.cache.set(FIND_KEYWORD_KEY, keyword);
return Promise.resolve();
}
diff --git a/src/background/repositories/MarkRepository.js b/src/background/repositories/MarkRepository.ts
index 282c712..69c85f6 100644
--- a/src/background/repositories/MarkRepository.js
+++ b/src/background/repositories/MarkRepository.ts
@@ -4,21 +4,23 @@ import GlobalMark from '../domains/GlobalMark';
const MARK_KEY = 'mark';
export default class MarkRepository {
+ private cache: MemoryStorage;
+
constructor() {
this.cache = new MemoryStorage();
}
- getMark(key) {
+ getMark(key: string): Promise<GlobalMark | undefined> {
let marks = this.getOrEmptyMarks();
let data = marks[key];
if (!data) {
return Promise.resolve(undefined);
}
- let mark = new GlobalMark(data.tabId, data.url, data.x, data.y);
+ let mark = { tabId: data.tabId, url: data.url, x: data.x, y: data.y };
return Promise.resolve(mark);
}
- setMark(key, mark) {
+ setMark(key: string, mark: GlobalMark): Promise<any> {
let marks = this.getOrEmptyMarks();
marks[key] = { tabId: mark.tabId, url: mark.url, x: mark.x, y: mark.y };
this.cache.set(MARK_KEY, marks);
diff --git a/src/background/repositories/PersistentSettingRepository.js b/src/background/repositories/PersistentSettingRepository.ts
index 4cab107..ff882a5 100644
--- a/src/background/repositories/PersistentSettingRepository.js
+++ b/src/background/repositories/PersistentSettingRepository.ts
@@ -1,12 +1,12 @@
-import Setting from '../domains/Setting';
+import SettingData from '../../shared/SettingData';
export default class SettingRepository {
- async load() {
+ async load(): Promise<SettingData | null> {
let { settings } = await browser.storage.local.get('settings');
if (!settings) {
return null;
}
- return Setting.deserialize(settings);
+ return SettingData.valueOf(settings as any);
}
}
diff --git a/src/background/repositories/SettingRepository.js b/src/background/repositories/SettingRepository.js
deleted file mode 100644
index c4667a9..0000000
--- a/src/background/repositories/SettingRepository.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import MemoryStorage from '../infrastructures/MemoryStorage';
-
-const CACHED_SETTING_KEY = 'setting';
-
-export default class SettingRepository {
- constructor() {
- this.cache = new MemoryStorage();
- }
-
- get() {
- return Promise.resolve(this.cache.get(CACHED_SETTING_KEY));
- }
-
- update(value) {
- return this.cache.set(CACHED_SETTING_KEY, value);
- }
-
- async setProperty(name, value) {
- let current = await this.get();
- current.properties[name] = value;
- return this.update(current);
- }
-}
diff --git a/src/background/repositories/SettingRepository.ts b/src/background/repositories/SettingRepository.ts
new file mode 100644
index 0000000..eb83a2c
--- /dev/null
+++ b/src/background/repositories/SettingRepository.ts
@@ -0,0 +1,51 @@
+import MemoryStorage from '../infrastructures/MemoryStorage';
+import Settings from '../../shared/Settings';
+import * as PropertyDefs from '../../shared/property-defs';
+
+const CACHED_SETTING_KEY = 'setting';
+
+export default class SettingRepository {
+ private cache: MemoryStorage;
+
+ constructor() {
+ this.cache = new MemoryStorage();
+ }
+
+ get(): Promise<Settings> {
+ return Promise.resolve(this.cache.get(CACHED_SETTING_KEY));
+ }
+
+ update(value: Settings): void {
+ return this.cache.set(CACHED_SETTING_KEY, value);
+ }
+
+ async setProperty(
+ name: string, value: string | number | boolean,
+ ): Promise<void> {
+ let def = PropertyDefs.defs.find(d => name === d.name);
+ if (!def) {
+ throw new Error('unknown property: ' + name);
+ }
+ if (typeof value !== def.type) {
+ throw new TypeError(`property type of ${name} mismatch: ${typeof value}`);
+ }
+ let newValue = value;
+ if (typeof value === 'string' && value === '') {
+ newValue = def.defaultValue;
+ }
+
+ let current = await this.get();
+ switch (name) {
+ case 'hintchars':
+ current.properties.hintchars = newValue as string;
+ break;
+ case 'smoothscroll':
+ current.properties.smoothscroll = newValue as boolean;
+ break;
+ case 'complete':
+ current.properties.complete = newValue as string;
+ break;
+ }
+ return this.update(current);
+ }
+}
diff --git a/src/background/repositories/VersionRepository.js b/src/background/repositories/VersionRepository.js
deleted file mode 100644
index 4c71d05..0000000
--- a/src/background/repositories/VersionRepository.js
+++ /dev/null
@@ -1,10 +0,0 @@
-export default class VersionRepository {
- async get() {
- let { version } = await browser.storage.local.get('version');
- return version;
- }
-
- update(version) {
- return browser.storage.local.set({ version });
- }
-}