Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions example/cat_net_request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// ==UserScript==
// @name CAT_netRequestRules
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description try to take over the world!
// @author You
// @match {{match}}
// @grant CAT_netRequestRules
// ==/UserScript==

/**
* @typedef {import('../src/types/scriptcat')} ScriptCat
*/

CAT_netRequestRules("list", {
ondone(data) {
console.log("list", data);
},
});
5 changes: 5 additions & 0 deletions src/app/service/service_worker/gm_api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1001,6 +1001,11 @@ export default class GMApi {
});
}

@PermissionVerify.API()
async CAT_netRequestRules(request: Request, sender: GetSender) {
chrome.declarativeNetRequest.updateSessionRules()
}

handlerNotification() {
const send = async (event: string, notificationId: string, params?: any) => {
const ret = (await Cache.getInstance().get(`GM_notification:${notificationId}`)) as NotificationData;
Expand Down
31 changes: 31 additions & 0 deletions src/template/scriptcat.d.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,39 @@ declare namespace CATType {
// 文件修改时间
updatetime: number;
}

namespace NetRequestRules {
/**
* 配置
*/
type Option<T extends OptionType> = T extends "list"
? {
ondone: (rules: chrome.declarativeNetRequest.Rule[]) => void;
}
: T extends "delete"
? {
removeRuleIds: number[];
}
: T extends "set"
? {
rules: chrome.declarativeNetRequest.Rule[];
}
: never;

// 支持的操作
type OptionType = "list" | "delete" | "set";
}
}

/**
* 脚本猫网络请求规则,详情可以参考chrome.declarativeNetRequest API
* https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest?hl=zh-cn#type-UpdateRuleOptions
* @param option 配置选项
*/
declare function CAT_netRequestRules<T extends CATType.NetRequestRules.OptionType>(
option: CATType.NetRequestRules.Option<T>
): void;

declare namespace GMTypes {
type CookieAction = "list" | "delete" | "set";

Expand Down
31 changes: 31 additions & 0 deletions src/types/scriptcat.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,39 @@ declare namespace CATType {
// 文件修改时间
updatetime: number;
}

namespace NetRequestRules {
/**
* 配置
*/
type Option<T extends OptionType> = T extends "list"
? {
ondone: (rules: chrome.declarativeNetRequest.Rule[]) => void;
}
: T extends "delete"
? {
removeRuleIds: number[];
}
: T extends "set"
? {
rules: chrome.declarativeNetRequest.Rule[];
}
: never;

// 支持的操作
type OptionType = "list" | "delete" | "set";
}
}

/**
* 脚本猫网络请求规则,详情可以参考chrome.declarativeNetRequest API
* https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest?hl=zh-cn#type-UpdateRuleOptions
* @param option 配置选项
*/
declare function CAT_netRequestRules<T extends CATType.NetRequestRules.OptionType>(
option: CATType.NetRequestRules.Option<T>
): void;

declare namespace GMTypes {
type CookieAction = "list" | "delete" | "set";

Expand Down