Skip to content

Commit 23cbb27

Browse files
feat: typescript 6
1 parent 71650a6 commit 23cbb27

7 files changed

Lines changed: 28 additions & 40 deletions

File tree

src/plugin/omnibox.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="chrome" />
12
import { Service } from 'typedi';
23
import { Logger } from 'services/logger';
34
import { openInTab } from 'providers/utils';

src/providers/user-script/storage.ts

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="tampermonkey" />
12
import type { Storage, ListenerId, SyncStorage, Listener } from '../common/storage';
23
import { get, set, del, keys, createStore } from 'idb-keyval';
34
import type { JsonValue } from 'type-fest';
@@ -74,52 +75,32 @@ class AsyncPolyfill implements Storage {
7475
}
7576
}
7677

78+
function runAsync<T>(f: () => T): Promise<T> {
79+
return new Promise((resolve, reject) => {
80+
setTimeout(() => {
81+
try {
82+
resolve(f());
83+
} catch (ex) {
84+
reject(ex instanceof Error ? ex : new Error(String(ex)));
85+
}
86+
});
87+
});
88+
}
89+
7790
class GmAsyncStorage implements Storage {
7891
get(key: string): Promise<JsonValue | undefined> {
79-
return new Promise((resolve, reject) => {
80-
setTimeout(() => {
81-
try {
82-
resolve(parse(GM_getValue(key)));
83-
} catch (ex) {
84-
reject(ex as Error);
85-
}
86-
});
87-
});
92+
return runAsync(() => parse(GM_getValue(key)));
8893
}
8994
set(key: string, value: JsonValue): Promise<void> {
90-
return new Promise((resolve, reject) => {
91-
setTimeout(() => {
92-
try {
93-
GM_setValue(key, serialize(value));
94-
resolve();
95-
} catch (ex) {
96-
reject(ex as Error);
97-
}
98-
});
99-
});
95+
return runAsync(() => GM_setValue(key, serialize(value)));
10096
}
10197
delete(key: string): Promise<void> {
102-
return new Promise((resolve, reject) => {
103-
setTimeout(() => {
104-
try {
105-
GM_deleteValue(key);
106-
resolve();
107-
} catch (ex) {
108-
reject(ex as Error);
109-
}
110-
});
111-
});
98+
return runAsync(() => GM_deleteValue(key));
11299
}
113100
keys(): Promise<string[]> {
114-
return new Promise((resolve, reject) => {
115-
setTimeout(() => {
116-
try {
117-
const ks = GM_listValues();
118-
resolve(ks.filter((k) => !k.startsWith(syncMark)));
119-
} catch (ex) {
120-
reject(ex as Error);
121-
}
122-
});
101+
return runAsync(() => {
102+
const ks = GM_listValues();
103+
return ks.filter((k) => !k.startsWith(syncMark));
123104
});
124105
}
125106
on(key: string, listener: Listener): ListenerId {

src/providers/user-script/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="tampermonkey" />
12
import type { NotificationInfo } from '../common/notification';
23
import type { Badge } from '../common/badge';
34

src/providers/web-ext/menu.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="chrome" />
12
import type { Menu } from '../common/menu';
23
import type { Menus } from 'webextension-polyfill';
34
export * from '../common/menu';

src/providers/web-ext/messaging.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="chrome" />
12
import { Messaging } from '../common/messaging';
23

34
type Res = { handlers: number; data?: unknown; error?: Error };

src/providers/web-ext/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="chrome" />
12
import type { NotificationInfo } from '../common/notification';
23
import type { Badge } from 'providers/common/badge';
34
import { packageJson } from 'info';

tsconfig.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
"compilerOptions": {
44
"target": "ES2020",
55
"module": "ESNext",
6-
"moduleResolution": "Node",
7-
"baseUrl": "src",
6+
"moduleResolution": "Bundler",
87
"resolveJsonModule": true,
8+
"paths": {
9+
"*": ["./src/*"]
10+
},
911
"outDir": "./dist/",
1012
"sourceMap": true,
1113
"esModuleInterop": true,

0 commit comments

Comments
 (0)