Skip to content

Commit c03ebaf

Browse files
committed
🎨 调整API定义
1 parent 09e2a1b commit c03ebaf

3 files changed

Lines changed: 48 additions & 30 deletions

File tree

src/app/service/content/gm_api.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,21 +191,21 @@ export default class GMApi {
191191
}
192192

193193
@GMContext.API({ depend: ["GM_setValue"] })
194-
public GM_setValues(values: object) {
194+
public GM_setValues(values: { [key: string]: any }) {
195195
if (values == null) {
196196
throw new Error("GM_ setValues: values must not be null or undefined");
197197
}
198198
if (typeof values !== "object") {
199199
throw new Error("GM_setValues: values must be an object");
200200
}
201201
Object.keys(values).forEach((key) => {
202-
let value = values[key as keyof typeof values];
202+
let value = values[key];
203203
return this.GM_setValue(key, value);
204204
});
205205
}
206206

207207
@GMContext.API({ depend: ["GM_getValue"] })
208-
public GM_getValues(keysOrDefaults: object | string[] | null | undefined) {
208+
public GM_getValues(keysOrDefaults: { [key: string]: any } | string[] | null | undefined) {
209209
if (keysOrDefaults == null) {
210210
// returns all
211211
return this.scriptRes.value;
@@ -222,7 +222,7 @@ export default class GMApi {
222222
} else {
223223
// 对象 键: 默认值
224224
Object.keys(keysOrDefaults).forEach((key) => {
225-
let defaultValue = keysOrDefaults[key as keyof typeof keysOrDefaults];
225+
let defaultValue = keysOrDefaults[key];
226226
result[key] = this.GM_getValue(key, defaultValue);
227227
});
228228
}

src/template/scriptcat.d.tpl

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,30 @@ declare const GM_info: {
7575
[key: string]: unknown;
7676
};
7777

78-
declare function GM_deleteValue(name: string): void;
78+
7979

8080
declare function GM_listValues(): string[];
8181

8282
declare function GM_addValueChangeListener(name: string, listener: GMTypes.ValueChangeListener): number;
8383

8484
declare function GM_removeValueChangeListener(listenerId: number): void;
8585

86-
// 可以使用Promise实际等待值的设置完成
87-
declare function GM_setValue(name: string, value: unknown): Promise;
86+
declare function GM_setValue(name: string, value: any): void;
87+
// 设置多个值, values是一个对象, 键为值的名称, 值为值的内容
88+
declare function GM_setValues(values: { [key: string]: any }): void;
8889

89-
declare function GM_getValue(name: string, defaultValue?: unknown): unknown;
90+
declare function GM_getValue(name: string, defaultValue?: any): any;
91+
92+
// 获取多个值, 如果keysOrDefaults是一个对象, 则使用对象的值作为默认值
93+
declare function GM_getValues(keysOrDefaults: { [key: string]: any } | string[] | null | undefined): { [key: string]: any };
94+
95+
declare function GM_deleteValue(name: string): void;
96+
97+
// 删除多个值, names是一个字符串数组
98+
declare function GM_deleteValues(names: string[]): void;
9099

91100
// 支持level和label
92-
declare function GM_log(message: string, level?: GMTypes.LoggerLevel, labels?: GMTypes.LoggerLabel): unknown;
101+
declare function GM_log(message: string, level?: GMTypes.LoggerLevel, labels?: GMTypes.LoggerLabel): void;
93102

94103
declare function GM_getResourceText(name: string): string | undefined;
95104

@@ -133,20 +142,20 @@ declare function CAT_registerMenuInput(
133142

134143
declare const CAT_unregisterMenuInput: typeof GM_unregisterMenuCommand;
135144

136-
declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): tab;
137-
declare function GM_openInTab(url: string, loadInBackground: boolean): tab;
138-
declare function GM_openInTab(url: string): tab;
145+
declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): GMTypes.Tab;
146+
declare function GM_openInTab(url: string, loadInBackground: boolean): GMTypes.Tab;
147+
declare function GM_openInTab(url: string): GMTypes.Tab;
139148

140149
declare function GM_xmlhttpRequest(details: GMTypes.XHRDetails): GMTypes.AbortHandle<void>;
141150

142151
declare function GM_download(details: GMTypes.DownloadDetails): GMTypes.AbortHandle<boolean>;
143152
declare function GM_download(url: string, filename: string): GMTypes.AbortHandle<boolean>;
144153

145-
declare function GM_getTab(callback: (obj: object) => unknown): void;
154+
declare function GM_getTab(callback: (obj: object) => void): void;
146155

147156
declare function GM_saveTab(obj: object): Promise<void>;
148157

149-
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => unknown): void;
158+
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => void): void;
150159

151160
declare function GM_notification(details: GMTypes.NotificationDetails, ondone?: GMTypes.NotificationOnDone): void;
152161
declare function GM_notification(
@@ -162,8 +171,8 @@ declare function GM_updateNotification(id: string, details: GMTypes.Notification
162171

163172
declare function GM_setClipboard(data: string, info?: string | { type?: string; minetype?: string }): void;
164173

165-
declare function GM_addElement(tag: string, attribubutes: unknown);
166-
declare function GM_addElement(parentNode: Element, tag: string, attrs: unknown);
174+
declare function GM_addElement(tag: string, attributes: any): HTMLElement;
175+
declare function GM_addElement(parentNode: Element, tag: string, attrs: any): HTMLElement;
167176

168177
declare function GM_addStyle(css: string): HTMLStyleElement;
169178

@@ -481,12 +490,12 @@ declare namespace GMTypes {
481490
ondone?: NotificationOnDone;
482491
progress?: number;
483492
oncreate?: NotificationOnClick;
493+
// 只能存在2个
484494
buttons?: NotificationButton[];
485495
}
486496

487497
interface Tab {
488498
close(): void;
489-
490499
onclose?: () => void;
491500
closed?: boolean;
492501
name?: string;

src/types/scriptcat.d.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,30 @@ declare const GM_info: {
7575
[key: string]: unknown;
7676
};
7777

78-
declare function GM_deleteValue(name: string): void;
78+
7979

8080
declare function GM_listValues(): string[];
8181

8282
declare function GM_addValueChangeListener(name: string, listener: GMTypes.ValueChangeListener): number;
8383

8484
declare function GM_removeValueChangeListener(listenerId: number): void;
8585

86-
// 可以使用Promise实际等待值的设置完成
87-
declare function GM_setValue(name: string, value: unknown): Promise;
86+
declare function GM_setValue(name: string, value: any): void;
87+
// 设置多个值, values是一个对象, 键为值的名称, 值为值的内容
88+
declare function GM_setValues(values: { [key: string]: any }): void;
8889

89-
declare function GM_getValue(name: string, defaultValue?: unknown): unknown;
90+
declare function GM_getValue(name: string, defaultValue?: any): any;
91+
92+
// 获取多个值, 如果keysOrDefaults是一个对象, 则使用对象的值作为默认值
93+
declare function GM_getValues(keysOrDefaults: { [key: string]: any } | string[] | null | undefined): { [key: string]: any };
94+
95+
declare function GM_deleteValue(name: string): void;
96+
97+
// 删除多个值, names是一个字符串数组
98+
declare function GM_deleteValues(names: string[]): void;
9099

91100
// 支持level和label
92-
declare function GM_log(message: string, level?: GMTypes.LoggerLevel, labels?: GMTypes.LoggerLabel): unknown;
101+
declare function GM_log(message: string, level?: GMTypes.LoggerLevel, labels?: GMTypes.LoggerLabel): void;
93102

94103
declare function GM_getResourceText(name: string): string | undefined;
95104

@@ -133,20 +142,20 @@ declare function CAT_registerMenuInput(
133142

134143
declare const CAT_unregisterMenuInput: typeof GM_unregisterMenuCommand;
135144

136-
declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): tab;
137-
declare function GM_openInTab(url: string, loadInBackground: boolean): tab;
138-
declare function GM_openInTab(url: string): tab;
145+
declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): GMTypes.Tab;
146+
declare function GM_openInTab(url: string, loadInBackground: boolean): GMTypes.Tab;
147+
declare function GM_openInTab(url: string): GMTypes.Tab;
139148

140149
declare function GM_xmlhttpRequest(details: GMTypes.XHRDetails): GMTypes.AbortHandle<void>;
141150

142151
declare function GM_download(details: GMTypes.DownloadDetails): GMTypes.AbortHandle<boolean>;
143152
declare function GM_download(url: string, filename: string): GMTypes.AbortHandle<boolean>;
144153

145-
declare function GM_getTab(callback: (obj: object) => unknown): void;
154+
declare function GM_getTab(callback: (obj: object) => void): void;
146155

147156
declare function GM_saveTab(obj: object): Promise<void>;
148157

149-
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => unknown): void;
158+
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => void): void;
150159

151160
declare function GM_notification(details: GMTypes.NotificationDetails, ondone?: GMTypes.NotificationOnDone): void;
152161
declare function GM_notification(
@@ -162,8 +171,8 @@ declare function GM_updateNotification(id: string, details: GMTypes.Notification
162171

163172
declare function GM_setClipboard(data: string, info?: string | { type?: string; minetype?: string }): void;
164173

165-
declare function GM_addElement(tag: string, attribubutes: unknown);
166-
declare function GM_addElement(parentNode: Element, tag: string, attrs: unknown);
174+
declare function GM_addElement(tag: string, attributes: any): HTMLElement;
175+
declare function GM_addElement(parentNode: Element, tag: string, attrs: any): HTMLElement;
167176

168177
declare function GM_addStyle(css: string): HTMLStyleElement;
169178

@@ -481,12 +490,12 @@ declare namespace GMTypes {
481490
ondone?: NotificationOnDone;
482491
progress?: number;
483492
oncreate?: NotificationOnClick;
493+
// 只能存在2个
484494
buttons?: NotificationButton[];
485495
}
486496

487497
interface Tab {
488498
close(): void;
489-
490499
onclose?: () => void;
491500
closed?: boolean;
492501
name?: string;

0 commit comments

Comments
 (0)