API ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨
à¦à¦à¦¾à¦°à¦à¦¿à¦â
à¦à¦ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨à§à¦° API সà¦à¦à§à¦à¦¾à¦à§à¦²à§ Tampermonkey ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨-à¦à¦° à¦à¦ªà¦° à¦à¦¿à¦¤à§à¦¤à¦¿ à¦à¦°à§ তà§à¦°à¦¿à¥¤ সময় ঠপরিশà§à¦°à¦®à§à¦° সà§à¦®à¦¾à¦¬à¦¦à§à¦§à¦¤à¦¾à¦° à¦à¦¾à¦°à¦£à§, à¦à¦à¦¨ পরà§à¦¯à¦¨à§à¦¤ API-à¦à¦° শà§à¦§à§à¦®à¦¾à¦¤à§à¦° à¦à¦à¦à¦¿ à¦
à¦à¦¶ বাসà§à¦¤à¦¬à¦¾à¦¯à¦¼à¦¿à¦¤ হয়à§à¦à§, à¦à¦¬à¦ à¦à¦à¦¿ à¦à§à¦°à¦®à¦¾à¦à¦¤ বিà¦à¦¶à¦¿à¦¤ হতৠথাà¦à¦¬à§à¥¤ à¦à¦ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨ যৠà¦à§à¦¨à§ API বাড়িয়à§à¦à§ বা মà§à¦² GM API থà§à¦à§ à¦à¦¿à¦¨à§à¦¨, তা ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨à§ বিশà§à¦·à¦à¦¾à¦¬à§ à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ (à¦à¦à¦à¦¿ * বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§)। à¦à¦¿à¦à§ API GM.* নিয়ম à¦
নà§à¦¸à¦°à¦£ à¦à¦°à§ à¦à¦à¦à¦¿ সিà¦à§à¦à§à¦°à§à¦¨à¦¾à¦¸-সà§à¦à¦¾à¦à¦² পà§à¦°à¦¤à¦¿à¦°à§à¦ªà¦ পà§à¦°à¦¦à¦¾à¦¨ à¦à¦°à§ â বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ à¦à¦¾à¦¨à¦¤à§ ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨à§à¦° বিষয়বসà§à¦¤à§ দà§à¦à§à¦¨à¥¤
বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ API সà¦à¦à§à¦à¦¾à¦° à¦à¦¨à§à¦¯ scriptcat.d.ts বা বিলà§à¦-à¦à¦¨ à¦à¦¡à¦¿à¦à¦° হিনà§à¦ দà§à¦à§à¦¨, à¦à¦¾à¦°à¦£ ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨ সবসময় হালনাà¦à¦¾à¦¦ নাঠথাà¦à¦¤à§ পারà§à¥¤ à¦à¦ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨à§à¦° à¦à¦¨à§à¦¯ নিরà§à¦¦à¦¿à¦·à§à¦ API-à¦à§à¦²à§à¦° à¦à¦¨à§à¦¯, CatApi ডà¦à§à¦®à§à¦¨à§à¦à§à¦¶à¦¨ দà§à¦à§à¦¨à¥¤
à¦à¦ªà¦¨à¦¿ à¦à¦¦à¦¾à¦¹à¦°à¦£ ডিরà§à¦à§à¦à¦°à¦¿à¦¤à§ সমà§à¦ªà¦°à§à¦à¦¿à¦¤ à¦à¦¦à¦¾à¦¹à¦°à¦£à¦ à¦à§à¦à¦à§ পà§à¦¤à§ পারà§à¦¨à¥¤
সà¦à¦à§à¦à¦¾â
GM_infoâ
সà§à¦à§à¦°à¦¿à¦ªà§à¦ সমà§à¦ªà¦°à§à¦à§ তথà§à¦¯ পায়, মà§à¦à¦¾à¦¡à§à¦à¦¾ à¦à¦¬à¦ রানà¦à¦¾à¦à¦® পরিবà§à¦¶à§à¦° পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦°à¦¸à¦¹à¥¤ সাধারণত বà§à¦¯à¦¬à¦¹à§à¦¤ ফিলà§à¦¡à¦à§à¦²à§à¦° মধà§à¦¯à§ রয়à§à¦à§ scriptHandler, version, scriptMetaStr, scriptUpdateURL, downloadMode à¦à¦¬à¦ à¦à¦°à¦ à¦
নà§à¦ à¦à¦¿à¦à§à¥¤ বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ (যদিঠসমà§à¦ªà§à¦°à§à¦£ নয়) সà¦à¦à§à¦à¦¾à¦° à¦à¦¨à§à¦¯ scriptcat.d.ts দà§à¦à§à¦¨à¥¤
console.log(GM_info.scriptHandler);
console.log(GM_info.version);
console.log(GM_info.scriptMetaStr);
sandboxModeবরà§à¦¤à¦®à¦¾à¦¨à§ শà§à¦§à§à¦®à¦¾à¦¤à§à¦°rawমান à¦à¦à§à¥¤runAtসমরà§à¦¥à¦¿à¦¤ নয়।userAgentDataসমরà§à¦¥à¦¿à¦¤, তবৠTampermonkey-à¦à¦° সাথৠহà§à¦¬à¦¹à§ মিল নাঠহতৠপারà§à¥¤
GM_log *â
লà¦à¦¿à¦ ফাà¦à¦¶à¦¨à¥¤ à¦à¦à¦à¦¿ বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡ সà§à¦à§à¦°à¦¿à¦ªà§à¦à§à¦° লঠডà§à¦¯à¦¾à¦¶à¦¬à§à¦°à§à¦¡à§à¦° রান লà¦à§ দà§à¦à¦¾ যায় (রান সà§à¦à§à¦¯à¦¾à¦à¦¾à¦¸ à¦à¦²à¦¾à¦®à§ à¦à§à¦²à¦¿à¦ à¦à¦°à§à¦¨)। Tampermonkey-à¦à¦° তà§à¦²à¦¨à¦¾à¦¯à¦¼, à¦à¦à¦à¦¿ লঠlevel যà§à¦ à¦à¦°à¦¾ হয়à§à¦à§à¥¤
declare function GM_log(message: string, level?: GMTypes.LoggerLevel): void;
declare namespace GMTypes {
type LoggerLevel = "debug" | "info" | "warn" | "error";
}
GM_log("debug info", "debug");
GM_get/set/deleteValueâ
সà§à¦à§à¦°à§à¦à§ à¦à¦à¦à¦¿ মান পায় বা সà§à¦ à¦à¦°à§à¥¤ à¦à¦à¦ storageName à¦à¦° ঠধà§à¦¨à§ থাà¦à¦¾ ডà§à¦à¦¾ শà§à¦¯à¦¼à¦¾à¦° à¦à¦¬à¦ রিয়à§à¦² à¦à¦¾à¦à¦®à§ সিà¦à§à¦ à¦à¦°à¦¾ যায়।
// ডà§à¦à¦¾ যà§à¦ à¦à¦°à§à¦¨ â মনৠরাà¦à¦¬à§à¦¨ ডà§à¦à¦¾ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° bool/string/number/object-à¦à¦° à¦à¦à¦à¦¿ হতৠপারà§; à¦à¦ªà¦¨à¦¿ à¦à¦à¦à¦¿ à¦à§à¦²à¦¾à¦¸ à¦à¦¨à¦¸à§à¦à§à¦¯à¦¾à¦¨à§à¦¸ সà¦à¦°à¦à§à¦·à¦£ à¦à¦°à¦¤à§ পারবà§à¦¨ না
declare function GM_setValue(name: string, value: any): void;
// ডà§à¦à¦¾ পান
declare function GM_getValue(name: string, defaultValue?: any): any | undefined;
// ডà§à¦à¦¾ মà§à¦à§à¦¨; à¦à¦¬à¦¾à¦° পà§à¦¤à§ à¦à¦¾à¦à¦²à§ undefined বা defaultValue ফà§à¦°à¦¤ à¦à¦¸à§
declare function GM_deleteValue(name: string): void;
GM_setValue("foo", 42);
const v = GM_getValue("foo", 0);
GM_deleteValue("foo");
নà§à¦: GM_setValue যà¦à¦¨ undefined দিয়ৠà¦à¦² à¦à¦°à¦¾ হয়, ScriptCat সà§à¦ à¦à§ মà§à¦à§ দà§à¦¯à¦¼ â Tampermonkey/GreaseMonkey-à¦à¦° বিপরà§à¦¤à§, যারা undefined à¦à§ মান হিসà§à¦¬à§ সà¦à¦°à¦à§à¦·à¦£ à¦à¦°à§à¥¤â
নà§à¦: ডà§à¦à¦¾ à¦
পারà§à¦¶à¦¨à¦à§à¦²à§ à¦
à§à¦¯à¦¾à¦¸à¦¿à¦à§à¦à§à¦°à§à¦¨à¦¾à¦¸ হà¦à¦¯à¦¼à¦¾à¦¯à¦¼, GM_setValue বা GM_deleteValue-à¦à¦° ঠিঠপরà§à¦ window.close() à¦à¦² à¦à¦°à¦²à§ ডà§à¦à¦¾ সঠিà¦à¦à¦¾à¦¬à§ à¦à¦ªà¦¡à§à¦ নাঠহতৠপারà§à¥¤ ডà§à¦à¦¾ à¦
পারà§à¦¶à¦¨ সমà§à¦ªà¦¨à§à¦¨ হয়à§à¦à§ তা নিশà§à¦à¦¿à¦¤ à¦à¦°à¦¤à§ await GM.setValue বা await GM.deleteValue বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾à¦° পরামরà§à¦¶ দà§à¦à¦¯à¦¼à¦¾ হয়।â
GM_listValuesâ
সব à¦à§ তালিà¦à¦¾ à¦à¦°à§à¥¤
declare function GM_listValues(): string[];
console.log(GM_listValues());
GM_setValues / GM_getValues / GM_deleteValues *â
বà§à¦¯à¦¾à¦ get/set API (à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨)।
// à¦à¦à¦¾à¦§à¦¿à¦ মান সà§à¦ à¦à¦°à§; values à¦à¦à¦à¦¿ à¦
বà¦à§à¦à§à¦ যার à¦à§à¦à§à¦²à§ মানà§à¦° নাম à¦à¦¬à¦ যার মানà¦à§à¦²à§ মানà§à¦° বিষয়বসà§à¦¤à§
declare function GM_setValues(values: { [key: string]: any }): void;
// à¦à¦à¦¾à¦§à¦¿à¦ মান পায়; keysOrDefaults à¦à¦à¦à¦¿ à¦
বà¦à§à¦à§à¦ হলà§, à¦à¦° মানà¦à§à¦²à§ ডিফলà§à¦ হিসà§à¦¬à§ বà§à¦¯à¦¬à¦¹à§à¦¤ হয়
declare function GM_getValues(keysOrDefaults: { [key: string]: any } | string[] | null | undefined): { [key: string]: any };
// à¦à¦à¦¾à¦§à¦¿à¦ মান মà§à¦à§ দà§à¦¯à¦¼; names সà§à¦à§à¦°à¦¿à¦à¦¯à¦¼à§à¦° à¦à¦à¦à¦¿ à¦
à§à¦¯à¦¾à¦°à§
declare function GM_deleteValues(names: string[]): void;
// বà§à¦¯à¦¾à¦ সà§à¦
GM_setValues({ a: 1, b: 2 });
// বà§à¦¯à¦¾à¦ à¦à§à¦ (না থাà¦à¦²à§ ডিফলà§à¦ ফà§à¦°à¦¤ à¦à¦¸à§)
const { a, b, c = 3 } = GM_getValues({ a: 0, b: 0, c: 3 });
// বà§à¦¯à¦¾à¦ ডিলিà¦
GM_deleteValues(["a", "b"]);
নà§à¦: ডà§à¦à¦¾ à¦
পারà§à¦¶à¦¨à¦à§à¦²à§ à¦
à§à¦¯à¦¾à¦¸à¦¿à¦à§à¦à§à¦°à§à¦¨à¦¾à¦¸ হà¦à¦¯à¦¼à¦¾à¦¯à¦¼, GM_setValues বা GM_deleteValues-à¦à¦° ঠিঠপরà§à¦ window.close() à¦à¦² à¦à¦°à¦²à§ ডà§à¦à¦¾ সঠিà¦à¦à¦¾à¦¬à§ à¦à¦ªà¦¡à§à¦ নাঠহতৠপারà§à¥¤ ডà§à¦à¦¾ à¦
পারà§à¦¶à¦¨ সমà§à¦ªà¦¨à§à¦¨ হয়à§à¦à§ তা নিশà§à¦à¦¿à¦¤ à¦à¦°à¦¤à§ await GM.setValues বা await GM.deleteValues বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾à¦° পরামরà§à¦¶ দà§à¦à¦¯à¦¼à¦¾ হয়।â
GM_add/removeValueChangeListenerâ
0.17.0-alpha-à¦à¦° পরà§
tabidসরানৠহয়à§à¦à§ â বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ à¦à¦¾à¦¨à¦¤à§ GM_cookie দà§à¦à§à¦¨à¥¤
à¦à¦à¦à¦¿ মানà§à¦° পরিবরà§à¦¤à¦¨ শà§à¦¨à§à¥¤ add à¦à¦à¦à¦¿ লিসà§à¦¨à¦¾à¦° id ফà§à¦°à¦¤ দà§à¦¯à¦¼, à¦à¦¬à¦ remove দিয়ৠলিসà§à¦¨à¦¾à¦° বাতিল à¦à¦°à¦¾ যায়। à¦à¦ পদà§à¦§à¦¤à¦¿à¦à¦¿ সাধারণ যà§à¦à¦¾à¦¯à§à¦ বাসà§à¦¤à¦¬à¦¾à¦¯à¦¼à¦¨à§ বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ যà§à¦¤à§ পারà§; storageName বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦²à§ à¦à§à¦°à¦¸-সà§à¦à§à¦°à¦¿à¦ªà§à¦ যà§à¦à¦¾à¦¯à§à¦ সমà§à¦à¦¬à¥¤
// tabid শà§à¦§à§à¦®à¦¾à¦¤à§à¦° তà¦à¦¨à¦ থাà¦à§ যà¦à¦¨ বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡ সà§à¦à§à¦°à¦¿à¦ªà§à¦ থà§à¦à§ শà§à¦¨à¦¾ হয়
type ValueChangeListener = (
name: string,
oldValue: any,
newValue: any,
remote: boolean,
tabid?: number
) => any;
declare function GM_addValueChangeListener(
name: string,
listener: GMTypes.ValueChangeListener
): number;
declare function GM_removeValueChangeListener(listenerId: number): void;
const id = GM_addValueChangeListener("foo", (k, oldV, newV, remote) => {
console.log(k, oldV, newV, remote);
});
GM_removeValueChangeListener(id);
GM_getResourceText/GM_getResourceURLâ
@resource দিয়ৠà¦à§à¦·à¦¿à¦¤ রিসà§à¦°à§à¦¸ তথà§à¦¯ পায়।
// GM_getResourceText রিসà§à¦°à§à¦¸à§à¦° à¦à§à¦à§à¦¸à¦ ডà§à¦à¦¾ পায়; à¦à¦¬à¦¿à¦° মতৠবাà¦à¦-à¦à¦¾à¦à¦ª ডà§à¦à¦¾ à¦à¦à¦à¦¿ à¦à¦¾à¦²à¦¿ সà§à¦à§à¦°à¦¿à¦ ফà§à¦°à¦¤ দà§à¦¯à¦¼ â সà§à¦à§à¦²à§à¦° à¦à¦¨à§à¦¯ পরিবরà§à¦¤à§ GM_getResourceURL বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§à¦¨
declare function GM_getResourceText(name: string): string | undefined;
// GM_getResourceURL base64-à¦à¦¨à¦à§à¦¡à§à¦¡ ডà§à¦à¦¾ পায়; দà§à¦¬à¦¿à¦¤à§à¦¯à¦¼ পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦°à§à¦° মাধà§à¦¯à¦®à§ à¦à¦à¦à¦¿ বà§à¦²à¦¬ URL-ঠপাà¦à¦¯à¦¼à¦¾ যায়
declare function GM_getResourceURL(name: string, isBlobUrl?: boolean): string | undefined;
const css = GM_getResourceText("mystyle");
const imgUrl = GM_getResourceURL("logo");
GM_addElementâ
পà§à¦à§ à¦à¦à¦à¦¿ à¦à¦²à¦¿à¦®à§à¦¨à§à¦ সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à§à¥¤ CSP সà§à¦®à¦¾à¦¬à¦¦à§à¦§à¦¤à¦¾ à¦à¦¡à¦¼à¦¿à¦¯à¦¼à§ যà§à¦¤à§ পারà§à¥¤
declare function GM_addElement(tag: string, attributes: any): HTMLElement;
declare function GM_addElement(parentNode: Element, tag: string, attrs: any): HTMLElement;
// à¦à¦à¦à¦¿ সà§à¦à§à¦°à¦¿à¦ªà§à¦ সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à§à¦¨
GM_addElement("script", { src: "https://example.com/app.js" });
// à¦à¦à¦à¦¿ সà§à¦à¦¾à¦à¦² সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à§à¦¨
GM_addElement(document.head, "style", { textContent: ".foo{color:blue}" });
GM_addStyleâ
পà§à¦à§ à¦à¦à¦à¦¿ সà§à¦à¦¾à¦à¦² যà§à¦ à¦à¦°à§ à¦à¦¬à¦ সà§à¦à¦¾à¦à¦² DOM নà§à¦¡ ফà§à¦°à¦¤ দà§à¦¯à¦¼à¥¤ CSP সà§à¦®à¦¾à¦¬à¦¦à§à¦§à¦¤à¦¾ à¦à¦¡à¦¼à¦¿à¦¯à¦¼à§ যà§à¦¤à§ পারà§à¥¤
declare function GM_addStyle(css: string): HTMLElement;
GM_addStyle(`
body { background: #f0f0f0; }
.btn { color: red; }
`);
GM_openInTab *â
à¦à¦à¦à¦¿ নতà§à¦¨ à¦à¦à¦¨à§à¦¡à§ à¦à§à¦²à§à¥¤
declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): GMTypes.Tab;
declare function GM_openInTab(url: string, loadInBackground: boolean): GMTypes.Tab;
declare function GM_openInTab(url: string): GMTypes.Tab;
declare namespace GMTypes {
interface OpenTabOptions {
/**
* নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ à¦à§à¦²à¦¾à¦° সময় ফà§à¦à¦¾à¦¸ পাবৠà¦à¦¿à¦¨à¦¾ তা নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¥¤
*
* - `true` â নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ à¦
বিলমà§à¦¬à§ ফà§à¦°à¦à§à¦°à¦¾à¦à¦¨à§à¦¡à§ à¦à¦²à§ যায়।
* - `false` â নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡à§ à¦à§à¦²à§, বরà§à¦¤à¦®à¦¾à¦¨ পà§à¦ থà§à¦à§ ফà§à¦à¦¾à¦¸ à¦à§à¦°à¦¿ à¦à¦°à§ না।
*
* ডিফলà§à¦: true
*/
active?: boolean;
/**
* নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ à¦à§à¦¥à¦¾à¦¯à¦¼ সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à¦¾ হবৠতা নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¥¤
*
* - যদি à¦à¦à¦à¦¿ `boolean` হয়:
* - `true` â বরà§à¦¤à¦®à¦¾à¦¨ à¦à§à¦¯à¦¾à¦¬à§à¦° ঠিঠপরৠসনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à¦¾ হয়।
* - `false` â à¦à¦à¦¨à§à¦¡à§à¦° শà§à¦·à§ সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à¦¾ হয়।
* - যদি à¦à¦à¦à¦¿ `number` হয়:
* - `0` â বরà§à¦¤à¦®à¦¾à¦¨ à¦à§à¦¯à¦¾à¦¬à§à¦° à¦à¦ à¦
বসà§à¦¥à¦¾à¦¨ à¦à¦à§ সনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à¦¾ হয়।
* - `1` â বরà§à¦¤à¦®à¦¾à¦¨ à¦à§à¦¯à¦¾à¦¬à§à¦° à¦à¦ à¦
বসà§à¦¥à¦¾à¦¨ পরৠসনà§à¦¨à¦¿à¦¬à§à¦¶ à¦à¦°à¦¾ হয়।
*
* ডিফলà§à¦: true
*/
insert?: boolean | number;
/**
* পà§à¦¯à¦¾à¦°à§à¦¨à§à¦ à¦à§à¦¯à¦¾à¦¬ (à¦
রà§à¦¥à¦¾à§ `openerTabId`) সà§à¦ à¦à¦°à¦¾ হবৠà¦à¦¿à¦¨à¦¾ তা নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¥¤
*
* - `true` â বà§à¦°à¦¾à¦à¦à¦¾à¦° à¦à§à¦°à§à¦¯à¦¾à¦ à¦à¦°à¦¤à§ পারৠà¦à§à¦¨ à¦à§à¦¯à¦¾à¦¬ শিশৠà¦à§à¦¯à¦¾à¦¬à¦à¦¿ à¦à§à¦²à§à¦à§,
* যা à¦à¦¿à¦à§ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨à¦à§ (যà§à¦®à¦¨ à¦à§à¦¯à¦¾à¦¬-à¦à§à¦°à¦¿ মà§à¦¯à¦¾à¦¨à§à¦à¦¾à¦°) পà§à¦¯à¦¾à¦°à§à¦¨à§à¦/শিশৠসমà§à¦ªà¦°à§à¦ সনাà¦à§à¦¤ à¦à¦°à¦¤à§ সাহাযà§à¦¯ à¦à¦°à§à¥¤
*
* ডিফলà§à¦: true
*/
setParent?: boolean;
/**
* à¦à§à¦¯à¦¾à¦¬à¦à¦¿ à¦à¦à¦à¦¿ পà§à¦°à¦¾à¦à¦à§à¦ (à¦à¦¨à¦à¦à¦¨à¦¿à¦à§) à¦à¦à¦¨à§à¦¡à§à¦¤à§ à¦à§à¦²à¦¾ হবৠà¦à¦¿à¦¨à¦¾à¥¤
*
* নà§à¦: ScriptCat-à¦à¦° manifest.json-ঠ`"incognito": "split"` সà§à¦ à¦à¦°à¦¾ à¦à¦à§,
* তাঠসাধারণ à¦à¦à¦¨à§à¦¡à§à¦¤à§ à¦à¦²à¦¾à¦° সময় tabId/windowId à¦à¦ªà¦²à¦¬à§à¦§ হবৠনা,
* à¦à¦¬à¦ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° "নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬ à¦à§à¦²à¦¾" à¦à¦¾à¦à¦à¦¿ à¦à¦°à¦¾ যাবà§à¥¤
*
* ডিফলà§à¦: false
*/
incognito?: boolean;
/**
* লিà¦à§à¦¯à¦¾à¦¸à¦¿ সামà¦à§à¦à¦¸à§à¦¯ ফিলà§à¦¡, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° Tampermonkey দà§à¦¬à¦¾à¦°à¦¾ সমরà§à¦¥à¦¿à¦¤à¥¤
* à¦à¦° à¦
রà§à¦¥ `active`-à¦à¦° **বিপরà§à¦¤**:
*
* - `true` â `active = false`-à¦à¦° সমতà§à¦²à§à¦¯ (বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡à§ লà§à¦¡ হয়)।
* - `false` â `active = true`-à¦à¦° সমতà§à¦²à§à¦¯ (ফà§à¦°à¦à§à¦°à¦¾à¦à¦¨à§à¦¡à§ লà§à¦¡ হয়)।
*
* â ï¸ à¦¸à§à¦ªà¦¾à¦°à¦¿à¦¶ à¦à¦°à¦¾ হয় না: `active`-à¦à¦° সাথৠà¦à¦à¦¾à¦°à¦²à§à¦¯à¦¾à¦ª à¦à¦°à§ à¦à¦¬à¦ বিà¦à§à¦°à¦¾à¦¨à§à¦¤ à¦à¦°à¦¾ সহà¦à¥¤
*
* ডিফলà§à¦: false
* @deprecated পরিবরà§à¦¤à§ `active` বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§à¦¨
*/
loadInBackground?: boolean;
/**
* নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ বà§à¦°à¦¾à¦à¦à¦¾à¦°à§à¦° à¦à§à¦¯à¦¾à¦¬ বারà§à¦° বাম পাশৠপিন à¦à¦°à¦¾ হবৠà¦à¦¿à¦¨à¦¾à¥¤
*
* - `true` â নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬à¦à¦¿ পিন à¦à¦°à¦¾ হয়।
* - `false` â à¦à¦à¦à¦¿ সাধারণ à¦à§à¦¯à¦¾à¦¬à¥¤
*
* ডিফলà§à¦: false
*/
pinned?: boolean;
/**
* `chrome.tabs.create`-à¦à¦° পরিবরà§à¦¤à§ নতà§à¦¨ à¦à§à¦¯à¦¾à¦¬ à¦à§à¦²à¦¤à§ `window.open` বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§à¥¤
* নিরà§à¦¦à¦¿à¦·à§à¦ বিশà§à¦· পà§à¦°à§à¦à§à¦à¦²à¦¸à¦¹ লিà¦à¦ à¦à§à¦²à¦¾à¦° সময় à¦à¦¾à¦°à§à¦¯à¦à¦°, যà§à¦®à¦¨ `vscode://`, `m3u8dl://`।
* à¦à¦ à¦à§à¦²à¦¾à¦° পদà§à¦§à¦¤à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦²à§ à¦
নà§à¦¯à¦¾à¦¨à§à¦¯ পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦°à§à¦° à¦à§à¦¨à§ পà§à¦°à¦à¦¾à¦¬ থাà¦à§ না।
*
* সমà§à¦ªà¦°à§à¦à¦¿à¦¤: Issue #178 #1043
* ডিফলà§à¦: false
*/
useOpen?: boolean;
}
interface Tab {
close(): void;
onclose?: () => void;
closed?: boolean;
name?: string;
}
}
const tab = GM_openInTab("https://example.com", { active: false });
tab.onclose = () => console.log("closed");
tab.close();
GM_closeInTabâ
GM_openInTab দিয়ৠà¦à§à¦²à¦¾ à¦à¦à¦à¦¿ à¦à§à¦¯à¦¾à¦¬ বনà§à¦§ à¦à¦°à§à¥¤
declare function GM_closeInTab(tabId: string): void;
GM_get/saveTab/GM_getTabsâ
GM_setValue-à¦à¦° মতৠডà§à¦à¦¾ সà¦à¦°à¦à§à¦·à¦£à§à¦° à¦à¦à¦à¦¿ পদà§à¦§à¦¤à¦¿, তবৠà¦à¦ পদà§à¦§à¦¤à¦¿à¦° লাà¦à¦«à¦à¦¾à¦à¦® à¦à¦à¦à¦¿ à¦à¦à¦ বà§à¦°à¦¾à¦à¦à¦¾à¦° à¦à§à¦¯à¦¾à¦¬à§à¦° à¦à§à¦²à¦¾âবনà§à¦§ à¦à¦à§à¦°à§à¦° সাথৠà¦à¦¬à¦¦à§à¦§, à¦à¦¬à¦ à¦à¦à¦¿ বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡ সà§à¦à§à¦°à¦¿à¦ªà§à¦ থà§à¦à§ বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ যায় না।
// à¦à§à¦¯à¦¾à¦¬ ডà§à¦à¦¾ পান
declare function GM_getTab(callback: (obj: object) => void): void;
// à¦à§à¦¯à¦¾à¦¬ ডà§à¦à¦¾ সà¦à¦°à¦à§à¦·à¦£ à¦à¦°à§à¦¨
declare function GM_saveTab(obj: object): void;
// সব à¦à§à¦¯à¦¾à¦¬à§à¦° ডà§à¦à¦¾ পান
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => void): void;
GM_saveTab({ foo: 1 }, () => console.log("saved"));
GM_getTab(tab => console.log(tab));
GM_getTabs(tabs => console.log(tabs));
GM_registerMenuCommand *â
- পপà¦à¦ª পà§à¦ à¦à¦¬à¦ রাà¦à¦-à¦à§à¦²à¦¿à¦ মà§à¦¨à§à¦¤à§ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤ à¦à¦à¦à¦¿ মà§à¦¨à§ à¦à¦à¦à§à¦® নিবনà§à¦§à¦¨ à¦à¦°à§; à¦à¦à¦¿à¦¤à§ à¦à§à¦²à¦¿à¦ à¦à¦°à¦²à§
listenerফাà¦à¦¶à¦¨ à¦à¦² হয়। - ডিফলà§à¦à¦à¦¾à¦¬à§, Tampermonkey-à¦à¦° সাথৠসামà¦à§à¦à¦¸à§à¦¯ রà§à¦à§, à¦à¦à¦ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤ à¦à§à¦à§à¦¸à¦à¦¸à¦¹ মà§à¦¨à§ à¦à¦à¦à§à¦®à¦à§à¦²à§ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° à¦à¦à¦¬à¦¾à¦° দà§à¦à¦¾à¦¯à¦¼à¥¤
- à¦à¦à¦à¦¿
idনিরà§à¦¦à¦¿à¦·à§à¦ à¦à¦°à¦²à§ মà§à¦¨à§ à¦à¦à¦à§à¦®à¦à¦¿ à¦à¦ªà¦¡à§à¦ à¦à¦°à¦¾ যায়। nameযদি à¦à¦à¦à¦¿ à¦à¦¾à¦²à¦¿ সà§à¦à§à¦°à¦¿à¦ হয় à¦à¦¬à¦ à¦à§à¦¨à§listenerনা থাà¦à§, তাহলৠরাà¦à¦-à¦à§à¦²à¦¿à¦ মà§à¦¨à§à¦¤à§ à¦à¦à¦à¦¿ বিà¦à¦¾à¦à¦ রà§à¦à¦¾ যà§à¦ হয়।
function GM_registerMenuCommand(
name: string,
listener?: (inputValue?: any) => void,
options_or_accessKey?:
| {
id?: number | string;
accessKey?: string;
autoClose?: boolean; // ScriptCat-নিরà§à¦¦à¦¿à¦·à§à¦ বিà¦à¦²à§à¦ª; ডিফলà§à¦ true, à¦à¦¬à¦ false à¦à§à¦²à¦¿à¦ à¦à¦°à¦¾à¦° পর পপà¦à¦ª মà§à¦¨à§ পà§à¦à¦à¦¿ à¦à§à¦²à¦¾ রাà¦à§
nested?: boolean; // ScriptCat-নিরà§à¦¦à¦¿à¦·à§à¦ বিà¦à¦²à§à¦ª; ডিফলà§à¦ true, à¦à¦¬à¦ false বà§à¦°à¦¾à¦à¦à¦¾à¦°à§à¦° রাà¦à¦-à¦à§à¦²à¦¿à¦ মà§à¦¨à§ à¦à¦à¦à§à¦®à¦à¦¿à¦à§ তà§à¦¤à§à¦¯à¦¼-সà§à¦¤à¦°à§à¦° থà§à¦à§ দà§à¦¬à¦¿à¦¤à§à¦¯à¦¼-সà§à¦¤à¦°à§à¦° মà§à¦¨à§à¦¤à§ à¦à¦¨à§à¦¨à§à¦¤ à¦à¦°à§
individual?: boolean; // ScriptCat-নিরà§à¦¦à¦¿à¦·à§à¦ বিà¦à¦²à§à¦ª; ডিফলà§à¦ false, à¦à¦¬à¦ true মানৠà¦
à¦à¦¿à¦¨à§à¦¨ মà§à¦¨à§ à¦à¦à¦à§à¦®à¦à§à¦²à§ à¦à¦à¦¤à§à¦°à¦¿à¦¤ à¦à¦°à¦¾ হয় না
}
| string
): number;
const cmdId = GM_registerMenuCommand("Test Command 01", () => alert("Called 01"));
GM_registerMenuCommand("Test Command 02", () => alert("Called 02"), {id: "custom-id"});
GM_unregisterMenuCommandâ
à¦à¦à¦à¦¿ নিবনà§à¦§à¦¿à¦¤ মà§à¦¨à§ à¦à¦à¦à§à¦® তার id দিয়ৠসরিয়ৠদà§à¦¯à¦¼à¥¤
declare function GM_unregisterMenuCommand(id: number): void;
GM_unregisterMenuCommand(cmdId);
GM_unregisterMenuCommand("custom-id");
GM_notification *â
à¦à¦à¦à¦¿ নà§à¦à¦¿à¦«à¦¿à¦à§à¦¶à¦¨ বারà§à¦¤à¦¾ পাঠায়, progress à¦à¦¬à¦ buttons à¦à§à¦·à¦®à¦¤à¦¾ পà§à¦°à¦¦à¦¾à¦¨ à¦à¦°à§ (Firefox-ঠসমরà§à¦¥à¦¿à¦¤ নয়), তাঠà¦à¦à¦à¦¿ নà§à¦à¦¿à¦«à¦¿à¦à§à¦¶à¦¨ পà§à¦°à¦à§à¦°à§à¦¸ বার বা বাà¦à¦¨ দà§à¦à¦¾à¦¤à§ পারà§à¥¤ à¦à¦°à¦ দà§à¦à¦¿ à¦
তিরিà¦à§à¦¤ পদà§à¦§à¦¤à¦¿ পà§à¦°à¦¦à¦¾à¦¨ à¦à¦°à§, GM_closeNotification à¦à¦¬à¦ GM_updateNotification (Firefox-ঠসমরà§à¦¥à¦¿à¦¤ নয়)।
declare function GM_notification(
details: GMTypes.NotificationDetails,
ondone?: GMTypes.NotificationOnDone
): void;
declare function GM_notification(
text: string,
title: string,
image: string,
onclick: GMTypes.NotificationOnClick
): void;
declare function GM_closeNotification(id: string): void;
declare function GM_updateNotification(id: string, details: GMTypes.NotificationDetails): void;
declare namespace GMTypes {
interface NotificationDetails {
text?: string;
title?: string;
tag?: string;
image?: string;
highlight?: boolean;
silent?: boolean;
timeout?: number;
url?: string;
onclick?: NotificationOnClick;
ondone?: NotificationOnDone;
progress?: number;
oncreate?: NotificationOnClick;
// সরà§à¦¬à§à¦à§à¦ ২à¦à¦¿ থাà¦à¦¤à§ পারà§
buttons?: NotificationButton[];
}
interface NotificationThis extends NotificationDetails {
id: string;
}
type NotificationOnClickEvent = {
event: "click" | "buttonClick";
id: string;
isButtonClick: boolean;
buttonClickIndex: number | undefined;
byUser: boolean | undefined;
preventDefault: () => void;
highlight: NotificationDetails["highlight"];
image: NotificationDetails["image"];
silent: NotificationDetails["silent"];
tag: NotificationDetails["tag"];
text: NotificationDetails["tag"];
timeout: NotificationDetails["timeout"];
title: NotificationDetails["title"];
url: NotificationDetails["url"];
};
type NotificationOnClick = (this: NotificationThis, event: NotificationOnClickEvent) => unknown;
type NotificationOnDone = (this: NotificationThis, user?: boolean) => unknown;
interface NotificationButton {
title: string;
iconUrl?: string;
}
}
GM_notification({ title: "Progress", text: "Loading", progress: 50 });
নà§à¦: GM_closeNotification à¦à¦¬à¦ GM_updateNotification ScriptCat-নিরà§à¦¦à¦¿à¦·à§à¦à¥¤ à¦à¦à¦à¦¿ নà§à¦à¦¿à¦«à¦¿à¦à§à¦¶à¦¨ à¦à¦ªà¦¡à§à¦ à¦à¦°à¦¤à§, tag বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§à¦¨à¥¤â
GM_notification({ title: "Progress", text: "Loading", progress: 50, tag: "notification01"});
GM_notification({ title: "Progress", text: "Done", progress: 100, tag: "notification01"}); // updates the progress
GM_notification({ title: "Progress", text: "Done", progress: 100, tag: "notification01", timeout: 1}); // closes after 1ms
GM_setClipboard *â
à¦à§à¦²à¦¿à¦ªà¦¬à§à¦°à§à¦¡ সà§à¦ à¦à¦°à§à¥¤ Tampermonkey-à¦à¦° বিপরà§à¦¤à§, à¦à¦à¦à¦¿ à¦à¦²à¦¬à§à¦¯à¦¾à¦ à¦à¦à¦¨à¦ সমরà§à¦¥à¦¿à¦¤ নয়।
declare function GM_setClipboard(
data: string,
info?: string | { type?: string; mimetype?: string }
): void;
GM_setClipboard("Hello World", "text");
GM_xmlhttpRequest *â
-
à¦à¦à¦à¦¿ à¦à§à¦°à¦¸-ঠরিà¦à¦¿à¦¨ HTTP রিà¦à§à¦¯à¦¼à§à¦¸à§à¦ যা CSP à¦à¦¡à¦¼à¦¿à¦¯à¦¼à§ যà§à¦¤à§ পারà§,
@connectদিয়ৠà¦à§à¦·à¦¿à¦¤ ডà§à¦®à§à¦à¦¨ সমরà§à¦¥à¦¨ à¦à¦°à§à¥¤ à¦à¦¿à¦à§ à¦à¦¾à¦°à§à¦¯à¦à¦¾à¦°à¦¿à¦¤à¦¾ ঠনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤; à¦à§à¦à¦¿ ফিà¦à¦¾à¦°à¦à¦¿ বরà§à¦¤à¦®à¦¾à¦¨à§ Firefox-ঠসমরà§à¦¥à¦¿à¦¤ নয়। সাধারণ ঠà§à¦¯à¦¾à¦à§à¦¸à§à¦¸à§à¦° à¦à¦¨à§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° ঠনà§à¦®à§à¦¦à¦¨ পà§à¦°à¦¯à¦¼à§à¦à¦¨;@connectদিয়ৠবরà§à¦£à¦¿à¦¤ à¦à¦à¦à¦¿ হà§à¦¸à§à¦ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° ঠনà§à¦®à§à¦¦à¦¨ à¦à¦¡à¦¼à¦¿à¦¯à¦¼à§ যà§à¦¤à§ পারà§à¥¤ -
anonymousà¦à¦¬à¦cookieTampermonkey-à¦à¦° থà§à¦à§ à¦à¦¿à¦¨à§à¦¨à¦à¦¾à¦¬à§ পরিà¦à¦¾à¦²à¦¿à¦¤ হয়:anonymoustrue à¦à¦¬à¦cookieà¦à¦ªà¦¸à§à¦¥à¦¿à¦¤ থাà¦à¦²à§, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¦à¦¿à¦·à§à¦ à¦à§à¦à¦¿à¦à¦¿ পাঠানৠহয়, ঠনà§à¦¯ à¦à§à¦¨à§ à¦à§à¦à¦¿ সà¦à¦¯à§à¦à§à¦¤ হয় না। -
বিশà§à¦· হà§à¦¡à¦¾à¦°à¦à§à¦²à§à¦ সমরà§à¦¥à¦¿à¦¤:
- user-agent
- origin
- referer
- cookie
- host
- ...
declare function GM_xmlhttpRequest(details: GMTypes.XHRDetails): GMTypes.AbortHandle<void>;
declare namespace GMTypes {
interface XHRResponse {
finalUrl?: string;
readyState?: 0 | 1 | 2 | 3 | 4;
responseHeaders?: string;
status?: number;
statusText?: string;
response?: any;
responseText?: string;
responseXML?: Document | null;
}
interface XHRProgress extends XHRResponse {
done: number;
lengthComputable: boolean;
loaded: number;
position: number;
total: number;
totalSize: number;
}
type Listener<OBJ> = (event: OBJ) => any;
interface XHRDetails {
method?: "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
url: string;
headers?: { [key: string]: string };
data?: string | FormData;
cookie?: string;
binary?: boolean;
timeout?: number;
responseType?: "text" | "arraybuffer" | "blob" | "json" | "document" | "stream"; // stream is a fairly basic implementation in the current version
overrideMimeType?: string;
anonymous?: boolean;
fetch?: boolean;
user?: string;
password?: string;
nocache?: boolean;
redirect?: "follow" | "error" | "manual"; // to stay consistent with Tampermonkey, maxRedirects was deprecated after v0.17.0 in favor of redirect, which forces fetch mode
onload?: Listener<XHRResponse>;
onloadstart?: Listener<XHRResponse>;
onloadend?: Listener<XHRResponse>;
onprogress?: Listener<XHRProgress>;
onreadystatechange?: Listener<XHRResponse>;
ontimeout?: () => void;
onabort?: () => void;
onerror?: (err: string) => void;
}
}
GM_xmlhttpRequest({
method: "GET",
url: "https://api.example.com/data",
onload: res => console.log(res.responseText)
});
GM_downloadâ
- à¦à¦à¦à¦¿ ফাà¦à¦² ডাà¦à¦¨à¦²à§à¦¡ à¦à¦°à§, হà§à¦¡à¦¾à¦° à¦à¦¬à¦ à¦
নà§à¦¯à¦¾à¦¨à§à¦¯ বিà¦à¦²à§à¦ª à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à¦¯à§à¦à§à¦¯; Tampermonkey-à¦à¦° তà§à¦²à¦¨à¦¾à¦¯à¦¼ à¦à¦à¦¿ cookie à¦à¦¬à¦ anonymous বিà¦à¦²à§à¦ªà¦ সমরà§à¦¥à¦¨ à¦à¦°à§à¥¤ à¦à¦à¦à¦¿ বà§à¦²à¦¬ URL দà§à¦à¦¯à¦¼à¦¾ হলà§, à¦à¦à¦¿ সরাসরি ডাà¦à¦¨à¦²à§à¦¡ à¦à§à¦²à§ à¦à¦¬à¦ শà§à¦§à§à¦®à¦¾à¦¤à§à¦°
onloadà¦à¦à§à¦¨à§à¦ ফায়ার à¦à¦°à§ â à¦à¦à¦¿ Tampermonkey থà§à¦à§ à¦à¦¿à¦¨à§à¦¨ à¦à¦¬à¦ বà§à¦¯à¦¾à¦à¦à§à¦°à¦¾à¦à¦¨à§à¦¡ সà§à¦à§à¦°à¦¿à¦ªà§à¦à¦à§à¦²à§à¦à§ সমরà§à¦¥à¦¨ à¦à¦°à¦¾à¦° à¦à¦¨à§à¦¯ বিদà§à¦¯à¦®à¦¾à¦¨, যারা ঠনà§à¦¯à¦¥à¦¾à¦¯à¦¼ ডাà¦à¦¨à¦²à§à¦¡ তà§à¦°à¦¿ à¦à¦°à¦¤à§ পারৠনা (রিপà§à¦°à§à¦ তà§à¦°à¦¿ à¦à¦°à¦¾à¦° মতৠপরিসà§à¦¥à¦¿à¦¤à¦¿à¦° à¦à¦¨à§à¦¯ à¦à¦¾à¦°à§à¦¯à¦à¦°)। - à¦à¦à¦à¦¿ Promise à¦
বà¦à§à¦à§à¦ ফà§à¦°à¦¤ দà§à¦¯à¦¼ à¦à¦¬à¦ à¦à¦à¦à¦¿
abort()পদà§à¦§à¦¤à¦¿ পà§à¦°à¦¦à¦¾à¦¨ à¦à¦°à§à¥¤ - Tampermonkey-à¦à¦° বিপরà§à¦¤à§, ScriptCat-à¦à¦°
nativeডাà¦à¦¨à¦²à§à¦¡ মà§à¦¡ (ডিফলà§à¦)@connectসমà§à¦®à¦¾à¦¨ à¦à¦°à§: ডাà¦à¦¨à¦²à§à¦¡ URL-à¦à¦° হà§à¦¸à§à¦ যà¦à¦¨ সà§à¦à§à¦°à¦¿à¦ªà§à¦à§à¦°@connectà¦à§à¦·à¦£à¦¾ দà§à¦¬à¦¾à¦°à¦¾ à¦à¦à§à¦à¦¾à¦¦à¦¿à¦¤ না হয়, তà¦à¦¨ ScriptCat ডাà¦à¦¨à¦²à§à¦¡ à¦à¦°à¦¾à¦° à¦à¦à§ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦à¦¾à¦ থà§à¦à§ নিশà§à¦à¦¿à¦¤à¦à¦°à¦£ à¦à¦¾à¦¯à¦¼;@connectদà§à¦¬à¦¾à¦°à¦¾ à¦à¦à§à¦à¦¾à¦¦à¦¿à¦¤ হà§à¦¸à§à¦à¦à§à¦²à§ নà§à¦°à¦¬à§ ডাà¦à¦¨à¦²à§à¦¡ হয়, à¦à¦¬à¦ বà§à¦²à§à¦¯à¦¾à¦à¦²à¦¿à¦¸à§à¦à§à¦¡ হà§à¦¸à§à¦à¦à§à¦²à§ সরà§à¦¬à¦¦à¦¾ পà§à¦°à¦¤à§à¦¯à¦¾à¦à§à¦¯à¦¾à¦¤ হয়।browserডাà¦à¦¨à¦²à§à¦¡ মà§à¦¡ à¦à¦ à¦à§à¦à§à¦° ঠধà§à¦¨ নয়। (Tampermonkey-à¦,@connectশà§à¦§à§à¦®à¦¾à¦¤à§à¦°GM_xmlhttpRequest-ঠপà§à¦°à¦¯à§à¦à§à¦¯,GM_download-ঠনয়।)
declare function GM_download(details: GMTypes.DownloadDetails): GMTypes.AbortHandle<boolean>;
declare function GM_download(url: string, filename: string): GMTypes.AbortHandle<boolean>;
declare namespace GMTypes {
interface DownloadError {
error:
| "not_enabled"
| "not_whitelisted"
| "not_permitted"
| "not_supported"
| "not_succeeded"
| "unknown";
details?: string;
}
interface DownloadDetails {
method?: "GET" | "POST";
downloadMode?: "native" | "browser";
url: string;
name: string;
headers?: { [key: string]: string };
saveAs?: boolean;
timeout?: number;
cookie?: string;
anonymous?: boolean;
onerror?: Listener<DownloadError>;
ontimeout?: () => void;
onload?: Listener<object>;
onprogress?: Listener<XHRProgress>;
}
}
// Callback form
const dl = GM_download({ url: "https://example.com/file.zip", name: "file.zip", onload: () => alert("Done") });
dl.abort();
GM_cookie *â
পà§à¦ à¦à§à¦à¦¿à¦à§à¦²à§à¦¤à§ ঠà§à¦¯à¦¾à¦¸à¦¿à¦à§à¦à§à¦°à§à¦¨à¦¾à¦¸à¦à¦¾à¦¬à§ à¦à¦¾à¦ à¦à¦°à§, à¦à§à¦°à¦¸-ঠরিà¦à¦¿à¦¨, HttpOnly à¦à¦¬à¦ পারà§à¦à¦¿à¦¶à¦¨à¦¡ à¦à§à¦à¦¿ সমরà§à¦¥à¦¨ à¦à¦°à§à¥¤
v0.17.0-alpha-à¦à¦° পরà§,
storeà¦à¦¬à¦tabidসমà§à¦ªà¦°à§à¦à¦¿à¦¤ পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦°à¦à§à¦²à§ সরানৠহয়à§à¦à§; ScriptCat à¦à¦à¦¨ à¦à¦à¦¿ বরà§à¦¤à¦®à¦¾à¦¨à§ যৠà¦à¦à¦¨à§à¦¡à§à¦¤à§ à¦à¦à§ তার à¦à¦ªà¦° à¦à¦¿à¦¤à§à¦¤à¦¿ à¦à¦°à§ à¦à¦¨à¦à¦à¦¨à¦¿à¦à§ বা সাধারণ à¦à¦à¦¨à§à¦¡à§ থà§à¦à§ à¦à§à¦à¦¿ পাবৠà¦à¦¿à¦¨à¦¾ তা সিদà§à¦§à¦¾à¦¨à§à¦¤ নà§à¦¯à¦¼à¥¤
à¦à¦ªà¦¨à¦¾à¦à§ à¦
বশà§à¦¯à¦ পরিà¦à¦¾à¦²à¦¿à¦¤ হà§à¦¸à§à¦ @connect দিয়ৠà¦à§à¦·à¦£à¦¾ à¦à¦°à¦¤à§ হবà§, à¦à¦¬à¦ à¦à¦à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à§à¦° à¦à¦¨à§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦
নà§à¦®à§à¦¦à¦¨ পà§à¦°à¦¯à¦¼à§à¦à¦¨à¥¤ Tampermonkey-à¦à¦° GM_cookie.list à¦
পারà§à¦¶à¦¨à§à¦° সাথৠসামà¦à§à¦à¦¸à§à¦¯à¦ªà§à¦°à§à¦£ হলà§à¦, ধারাবাহিà¦à¦¤à¦¾à¦° সà§à¦¬à¦¾à¦°à§à¦¥à§ à¦à¦à¦¿ সà§à¦ªà¦¾à¦°à¦¿à¦¶ à¦à¦°à¦¾ হয় না।
sameSiteসমরà§à¦¥à¦¿à¦¤ নয়।
// name à¦à¦¬à¦ domain দà§à¦à§à¦ à¦à¦¾à¦²à¦¿ হতৠপারৠনা
declare function GM_cookie(
action: GMTypes.CookieAction,
details: GMTypes.CookieDetails,
ondone: (cookie: GMTypes.Cookie[], error: unknown | undefined) => void
): void;
declare namespace GMTypes {
type CookieAction = "list" | "delete" | "set";
interface CookieDetails {
url?: string;
name?: string;
value?: string;
domain?: string;
path?: string;
secure?: boolean;
session?: boolean;
httpOnly?: boolean;
expirationDate?: number;
partitionKey?: CookieDetailsPartitionKeyType;
}
interface Cookie {
domain: string;
name: string;
value: string;
session: boolean;
hostOnly: boolean;
expirationDate?: number;
path: string;
httpOnly: boolean;
secure: boolean;
}
}
// Callback form
GM_cookie("list", { url: "https://example.com" }, (cookies) => {
console.log(cookies);
GM_cookie("set", {
name: "foo",
value: "bar",
domain: "example.com"
}, (result) => {
console.log(result);
GM_cookie("delete", { name: "foo", domain: "example.com" }, (result) => {
console.log(result);
});
});
});
// Promise form
const cookies = await GM.cookie.list({ url: "https://example.com" });
await GM.cookie.set({ name: "foo", value: "bar", domain: "example.com" });
await GM.cookie.delete("foo", { domain: "example.com" });
নà§à¦: à¦à¦ªà¦¨à¦¾à¦à§ à¦
বশà§à¦¯à¦ মà§à¦à¦¾à¦¡à§à¦à¦¾à¦¯à¦¼ @connect example.com বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§ à¦
নà§à¦®à§à¦¦à¦¿à¦¤ ডà§à¦®à§à¦à¦¨ à¦à§à¦·à¦£à¦¾ à¦à¦°à¦¤à§ হবà§à¥¤