@vacantthinker/firefox-addon-framework-easy 2026.612.1531 → 2026.613.1110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/BaseORM.d.ts CHANGED
@@ -13,8 +13,6 @@ export declare abstract class BaseORM<T extends Record<string, any>> {
13
13
  protected constructor(prefix: string, id: string, defaultValue?: T);
14
14
  get id(): string;
15
15
  get storageKey(): string;
16
- private exists;
17
- private initDefaultObject;
18
16
  /**
19
17
  * Retrieve the value associated with the bound key.
20
18
  * @returns {Promise<T>}
@@ -37,5 +35,7 @@ export declare abstract class BaseORM<T extends Record<string, any>> {
37
35
  * @param {T[K]} value The new value to map to that key.
38
36
  */
39
37
  updateValueKeyValue<K extends keyof T>(key: K, value: T[K]): Promise<void>;
38
+ private exists;
39
+ private initDefaultObject;
40
40
  }
41
41
  //# sourceMappingURL=BaseORM.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseORM.d.ts","sourceRoot":"","sources":["../src/BaseORM.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,8BAAsB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;IAKzD;;;;OAIG;IACH,SAAS,aAAa,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,GAAE,CAAW;IAc3E,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;YAEa,MAAM;YAIN,iBAAiB;IAI/B;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAOvB;;;;OAIG;IACG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;IAM1B;;;;OAIG;IACG,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjF"}
1
+ {"version":3,"file":"BaseORM.d.ts","sourceRoot":"","sources":["../src/BaseORM.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,8BAAsB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;IAKzD;;;;OAIG;IACH,SAAS,aACP,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,CAAW;IAe3B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAOvB;;;;OAIG;IACG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;IAM1B;;;;OAIG;IACG,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,EACzC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,IAAI,CAAC;YAMF,MAAM;YAIN,iBAAiB;CAMhC"}
package/dist/BaseORM.js CHANGED
@@ -31,12 +31,6 @@ export class BaseORM {
31
31
  get storageKey() {
32
32
  return this.#fullStorageKey;
33
33
  }
34
- async exists() {
35
- return await stoOpCheck(this.#fullStorageKey);
36
- }
37
- async initDefaultObject() {
38
- await stoOpSet(this.#fullStorageKey, this.#defaultValue);
39
- }
40
34
  /**
41
35
  * Retrieve the value associated with the bound key.
42
36
  * @returns {Promise<T>}
@@ -74,4 +68,10 @@ export class BaseORM {
74
68
  data[key] = value;
75
69
  await this.set(data);
76
70
  }
71
+ async exists() {
72
+ return await stoOpCheck(this.#fullStorageKey);
73
+ }
74
+ async initDefaultObject() {
75
+ await stoOpSet(this.#fullStorageKey, this.#defaultValue);
76
+ }
77
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browserNotification.d.ts","sourceRoot":"","sources":["../src/browserNotification.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAqC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAYjB"}
1
+ {"version":3,"file":"browserNotification.d.ts","sourceRoot":"","sources":["../src/browserNotification.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAqC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -1,34 +1,18 @@
1
- /**
2
- * Interface representing the structure of a message sent to a tab.
3
- * Includes optional properties for tab creation and specific message data.
4
- */
5
- export interface TabMessage {
6
- targetTabId?: number;
7
- previousTabId?: number;
8
- url?: string;
9
- focusNewTab?: boolean;
10
- [key: string]: any;
11
- }
12
1
  /**
13
2
  * Sends a message to a specific tab.
14
3
  */
15
4
  export declare function browserTabSendMessage(tabId: number, message: any): Promise<void>;
5
+ export declare function browserTabExecuteScriptDocumentStart(tabId: number, code: string): Promise<any[]>;
6
+ export declare function browserTabExecuteScript(tabId: number, code: string, runAt?: browser.extensionTypes.RunAt): Promise<any[]>;
7
+ export declare function browserTabSetZoom(tabId: number, zoomFactor: number): Promise<void>;
8
+ export declare function browserTabGetZoom(tabId: number): Promise<number>;
9
+ export declare function browserTabInsertCSSDocumentStart(tabId: number, code: string): Promise<void>;
16
10
  /**
17
- * Waits for a tab to finish loading (status: complete) before sending a message.
18
- */
19
- export declare function browserTabWaitReloadThenSendMessageToContentJs(message: TabMessage): void;
20
- /**
21
- * Creates a tab for download, waits for load, and then removes it.
22
- */
23
- export declare function browserTabCreateToDownload(message: TabMessage): Promise<void>;
24
- /**
25
- * Safely handles incoming messages to create tabs and send messages to content scripts.
11
+ * Injects CSS code into a page.
26
12
  */
27
- export declare function browserTabCreateNearSendMessageToContentJs(message?: TabMessage): Promise<void>;
13
+ export declare function browserTabInsertCSS(tabId: number, code: string, runAt: browser.extensionTypes.RunAt): Promise<void>;
28
14
  /**
29
- * Watches a tab for reload, then removes it upon completion.
15
+ * Removes CSS code that was previously injected into a page.
30
16
  */
31
- export declare function browserTabWaitReloadThenRemoveIt({ tabId }: {
32
- tabId: number;
33
- }): void;
17
+ export declare function browserTabRemoveCSS(tabId: number, code: string): Promise<void>;
34
18
  //# sourceMappingURL=browserTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserTab.d.ts","sourceRoot":"","sources":["../src/browserTab.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED;;GAEG;AACH,wBAAgB,8CAA8C,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAkBxF;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BnF;AAED;;GAEG;AACH,wBAAsB,0CAA0C,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCxG;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,EAAC,KAAK,EAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYjF"}
1
+ {"version":3,"file":"browserTab.d.ts","sourceRoot":"","sources":["../src/browserTab.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,kBAOb;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,OAAO,CAAC,cAAc,CAAC,KAAsB,kBAMrD;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,iBAMnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,mBAGd;AAGD,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,GAClC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -1,105 +1,33 @@
1
- import { tabOpCreate, tabOpCreateNear, tabOpRemove } from './opTab';
2
1
  /**
3
2
  * Sends a message to a specific tab.
4
3
  */
5
4
  export async function browserTabSendMessage(tabId, message) {
6
5
  await browser.tabs.sendMessage(tabId, message);
7
6
  }
8
- /**
9
- * Waits for a tab to finish loading (status: complete) before sending a message.
10
- */
11
- export function browserTabWaitReloadThenSendMessageToContentJs(message) {
12
- const { targetTabId, ...rest } = message;
13
- if (targetTabId === undefined)
14
- return;
15
- const listener = async (tabId, changeInfo) => {
16
- if (tabId === targetTabId && changeInfo.status === 'complete') {
17
- browser.tabs.onUpdated.removeListener(listener);
18
- await browserTabSendMessage(tabId, rest);
19
- }
20
- };
21
- browser.tabs.onUpdated.addListener(listener, {
22
- tabId: targetTabId,
23
- properties: ['status'],
24
- });
7
+ export async function browserTabExecuteScriptDocumentStart(tabId, code) {
8
+ return await browserTabExecuteScript(tabId, code, "document_start");
25
9
  }
26
- /**
27
- * Creates a tab for download, waits for load, and then removes it.
28
- */
29
- export async function browserTabCreateToDownload(message) {
30
- if (!message.url)
31
- return;
32
- const properties = {
33
- url: message.url,
34
- };
35
- if (message.focusNewTab !== undefined) {
36
- properties.active = message.focusNewTab;
37
- }
38
- const { tabId } = await tabOpCreate(properties);
39
- const listener = async (updatedTabId, changeInfo) => {
40
- if (updatedTabId === tabId && changeInfo.status === 'complete') {
41
- browser.tabs.onUpdated.removeListener(listener);
42
- await tabOpRemove(tabId);
43
- }
44
- };
45
- browser.tabs.onUpdated.addListener(listener, {
46
- tabId,
47
- properties: ['status'],
48
- });
10
+ export async function browserTabExecuteScript(tabId, code, runAt = "document_end") {
11
+ return await browser.tabs.executeScript(tabId, { code, runAt });
12
+ }
13
+ export async function browserTabSetZoom(tabId, zoomFactor) {
14
+ return await browser.tabs.setZoom(tabId, zoomFactor);
15
+ }
16
+ export async function browserTabGetZoom(tabId) {
17
+ return await browser.tabs.getZoom(tabId);
18
+ }
19
+ export async function browserTabInsertCSSDocumentStart(tabId, code) {
20
+ await browserTabInsertCSS(tabId, code, "document_start");
49
21
  }
50
22
  /**
51
- * Safely handles incoming messages to create tabs and send messages to content scripts.
23
+ * Injects CSS code into a page.
52
24
  */
53
- export async function browserTabCreateNearSendMessageToContentJs(message = {}) {
54
- if (!message.url)
55
- return;
56
- const { previousTabId, ...rest } = message;
57
- const properties = {
58
- url: message.url,
59
- active: message.focusNewTab ?? false,
60
- };
61
- const { tabId: createdTabId } = message.previousTabId
62
- ? await tabOpCreateNear({ properties, previousTabId })
63
- : await tabOpCreate(properties);
64
- if (!createdTabId)
65
- return;
66
- const onUpdatedListener = async (tabId, changeInfo) => {
67
- if (tabId === createdTabId && changeInfo.status === 'complete') {
68
- cleanup();
69
- await browserTabSendMessage(tabId, {
70
- ...rest,
71
- tabId: tabId,
72
- });
73
- }
74
- };
75
- // Listener to cleanup if tab is closed before loading completes
76
- const onRemovedListener = (tabId) => {
77
- if (tabId === createdTabId) {
78
- cleanup();
79
- }
80
- };
81
- const cleanup = () => {
82
- browser.tabs.onUpdated.removeListener(onUpdatedListener);
83
- browser.tabs.onRemoved.removeListener(onRemovedListener);
84
- };
85
- browser.tabs.onUpdated.addListener(onUpdatedListener, {
86
- tabId: createdTabId,
87
- properties: ['status'],
88
- });
89
- browser.tabs.onRemoved.addListener(onRemovedListener);
25
+ export async function browserTabInsertCSS(tabId, code, runAt) {
26
+ await browser.tabs.insertCSS(tabId, { code, runAt });
90
27
  }
91
28
  /**
92
- * Watches a tab for reload, then removes it upon completion.
29
+ * Removes CSS code that was previously injected into a page.
93
30
  */
94
- export function browserTabWaitReloadThenRemoveIt({ tabId }) {
95
- const listener = async (updatedTabId, changeInfo) => {
96
- if (updatedTabId === tabId && changeInfo.status === 'complete') {
97
- browser.tabs.onUpdated.removeListener(listener);
98
- await tabOpRemove(tabId);
99
- }
100
- };
101
- browser.tabs.onUpdated.addListener(listener, {
102
- tabId,
103
- properties: ['status'],
104
- });
31
+ export async function browserTabRemoveCSS(tabId, code) {
32
+ await browser.tabs.removeCSS(tabId, { code });
105
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opStorage.d.ts","sourceRoot":"","sources":["../src/opStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAGtE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAGvE;AAED,wBAAsB,UAAU,kBAE/B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI3E;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
1
+ {"version":3,"file":"opStorage.d.ts","sourceRoot":"","sources":["../src/opStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAGtE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAGvE;AAED,wBAAsB,UAAU,kBAE/B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI3E;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,GACT,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7D"}
package/dist/opTab.d.ts CHANGED
@@ -12,6 +12,14 @@ export declare function tabOpEnhance(tab: browser.tabs.Tab): EnhancedTab | null;
12
12
  * Creates a standard tab.
13
13
  */
14
14
  export declare function tabOpCreate(properties: browser.tabs._CreateCreateProperties): Promise<EnhancedTab>;
15
+ /**
16
+ * Creates a tab in the background (inactive and muted).
17
+ */
18
+ export declare function tabOpCreateActiveFalse(properties: browser.tabs._CreateCreateProperties): Promise<EnhancedTab>;
19
+ /**
20
+ * Creates a tab in the background (inactive and muted).
21
+ */
22
+ export declare function tabOpCreateActiveTrue(properties: browser.tabs._CreateCreateProperties): Promise<EnhancedTab>;
15
23
  interface TabOpCreateNearOptions {
16
24
  properties: browser.tabs._CreateCreateProperties;
17
25
  previousTabId: number | undefined;
@@ -20,10 +28,6 @@ interface TabOpCreateNearOptions {
20
28
  * Creates a new tab positioned immediately after a specified existing tab.
21
29
  */
22
30
  export declare function tabOpCreateNear(options: TabOpCreateNearOptions): Promise<EnhancedTab>;
23
- /**
24
- * Creates a tab in the background (inactive and muted).
25
- */
26
- export declare function tabOpCreateActiveFalse(properties: browser.tabs._CreateCreateProperties): Promise<EnhancedTab>;
27
31
  /**
28
32
  * Creates a new window and returns its primary tab.
29
33
  */
@@ -79,13 +83,5 @@ export declare function tabOpUpdateActiveFalse(tabId: number): Promise<EnhancedT
79
83
  * Focuses the window containing the tab, then highlights and activates the tab.
80
84
  */
81
85
  export declare function tabOpFocus(tabId: number): Promise<EnhancedTab>;
82
- /**
83
- * Injects CSS code into a page.
84
- */
85
- export declare function tabOpInsertCssCode(tabId: number, code: string): Promise<void>;
86
- /**
87
- * Removes CSS code that was previously injected into a page.
88
- */
89
- export declare function tabOpRemoveCssCode(tabId: number, code: string): Promise<void>;
90
86
  export {};
91
87
  //# sourceMappingURL=opTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opTab.d.ts","sourceRoot":"","sources":["../src/opTab.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,IAAI,CAAC,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI,CAGtE;AAsBD;;GAEG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAExG;AAED,UAAU,sBAAsB;IAC9B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACjD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAc3F;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAMnH;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAIvF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAEjE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9D,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CACvC,EAAE,CAAC,CAaH;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GACrD,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQpE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF"}
1
+ {"version":3,"file":"opTab.d.ts","sourceRoot":"","sources":["../src/opTab.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WACf,SAAQ,OAAO,CAAC,IAAI,CAAC,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI,CAGtE;AA4BD;;GAEG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAExG;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAMnH;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAKlH;AAED,UAAU,sBAAsB;IAC9B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACjD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAc3F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAIvF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAEjE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9D,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CACvC,EAAE,CAAC,CAaH;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIvE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,GACrD,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAKhF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAcpE"}
package/dist/opTab.js CHANGED
@@ -33,6 +33,25 @@ async function _update(tabId, properties) {
33
33
  export async function tabOpCreate(properties) {
34
34
  return _create(properties);
35
35
  }
36
+ /**
37
+ * Creates a tab in the background (inactive and muted).
38
+ */
39
+ export async function tabOpCreateActiveFalse(properties) {
40
+ return _create({
41
+ ...properties,
42
+ active: false,
43
+ muted: true,
44
+ });
45
+ }
46
+ /**
47
+ * Creates a tab in the background (inactive and muted).
48
+ */
49
+ export async function tabOpCreateActiveTrue(properties) {
50
+ return _create({
51
+ ...properties,
52
+ active: true,
53
+ });
54
+ }
36
55
  /**
37
56
  * Creates a new tab positioned immediately after a specified existing tab.
38
57
  */
@@ -50,16 +69,6 @@ export async function tabOpCreateNear(options) {
50
69
  }
51
70
  return _create(properties);
52
71
  }
53
- /**
54
- * Creates a tab in the background (inactive and muted).
55
- */
56
- export async function tabOpCreateActiveFalse(properties) {
57
- return _create({
58
- ...properties,
59
- active: false,
60
- muted: true,
61
- });
62
- }
63
72
  /**
64
73
  * Creates a new window and returns its primary tab.
65
74
  */
@@ -102,7 +111,8 @@ export async function tabOpQueryDomain(domain) {
102
111
  */
103
112
  export async function tabOpQueryUrl(urlQuery) {
104
113
  const tabs = await browser.tabs.query({ url: urlQuery });
105
- return tabs.filter((t) => typeof t.id === 'number').map((t) => t.id);
114
+ return tabs.filter((t) => typeof t.id === 'number')
115
+ .map((t) => t.id);
106
116
  }
107
117
  /**
108
118
  * Finds all tabs matching the URL pattern and removes them simultaneously.
@@ -156,15 +166,3 @@ export async function tabOpFocus(tabId) {
156
166
  await browser.windows.update(tab.windowId, { focused: true });
157
167
  return _update(tabId, { active: true, highlighted: true });
158
168
  }
159
- /**
160
- * Injects CSS code into a page.
161
- */
162
- export async function tabOpInsertCssCode(tabId, code) {
163
- await browser.tabs.insertCSS(tabId, { code });
164
- }
165
- /**
166
- * Removes CSS code that was previously injected into a page.
167
- */
168
- export async function tabOpRemoveCssCode(tabId, code) {
169
- await browser.tabs.removeCSS(tabId, { code });
170
- }
@@ -1 +1 @@
1
- {"version":3,"file":"serviceFetch.d.ts","sourceRoot":"","sources":["../src/serviceFetch.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAS/E;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoB1F"}
1
+ {"version":3,"file":"serviceFetch.d.ts","sourceRoot":"","sources":["../src/serviceFetch.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuB1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"serviceOpContent.d.ts","sourceRoot":"","sources":["../src/serviceOpContent.ts"],"names":[],"mappings":"AACA,OAAO,EAE8B,SAAS,EAC7C,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAc,GAAG,IAAI,CActG;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB9D"}
1
+ {"version":3,"file":"serviceOpContent.d.ts","sourceRoot":"","sources":["../src/serviceOpContent.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACV,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAc,GAClB,IAAI,CAiBN;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA+B9D"}
@@ -57,13 +57,15 @@ export function serviceRemoveIllegalWord(value) {
57
57
  if (!value)
58
58
  return '';
59
59
  // Get the first line and trim whitespace
60
- let name = value.trim().split(/\r?\n/)[0];
60
+ let name = value.trim()
61
+ .split(/\r?\n/)[0];
61
62
  // Replace punctuation, symbols, and control chars with space
62
63
  name = name.replace(/[\p{P}\p{S}\p{C}]/gu, ' ');
63
64
  // Replace specific legacy forbidden characters
64
65
  name = name.replace(/[~"#%&*:<>?/\\{|}]/g, ' ');
65
66
  // Normalize whitespaces
66
- name = name.replace(/[\s\u3000]+/g, ' ').trim();
67
+ name = name.replace(/[\s\u3000]+/g, ' ')
68
+ .trim();
67
69
  // Remove leading/trailing dots or hyphens
68
70
  return name.replace(/^[-.]+|[-.]+$/g, '');
69
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serviceOpJavascript.d.ts","sourceRoot":"","sources":["../src/serviceOpJavascript.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,iBAAkB,SAAQ,aAAa;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACxD;AAID;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFhF;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAatF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzF"}
1
+ {"version":3,"file":"serviceOpJavascript.d.ts","sourceRoot":"","sources":["../src/serviceOpJavascript.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,iBACR,SAAQ,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACxD;AAID;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EACE,KAAK,EACL,QAAQ,EACR,IAAI,EACL,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GhF;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAatF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BzF"}
@@ -134,13 +134,15 @@ export async function serviceFindAllMagnetLink(message) {
134
134
  // Type 1: Attribute selectors
135
135
  const attrElements = document.querySelectorAll('*[href*="magnet:"], *[data-url*="magnet:"], *[data-magnet*="magnet:"], *[data-href*="magnet:"]');
136
136
  attrElements.forEach(el => {
137
- Array.from(el.attributes).forEach(attr => {
137
+ Array.from(el.attributes)
138
+ .forEach(attr => {
138
139
  if (attr.value.includes('magnet:?xt='))
139
140
  magnets.add(attr.value.trim());
140
141
  });
141
142
  });
142
143
  // Type 2: Text content
143
- document.querySelectorAll('div, span, td, p, a, button').forEach(el => {
144
+ document.querySelectorAll('div, span, td, p, a, button')
145
+ .forEach(el => {
144
146
  if (el.children.length === 0) {
145
147
  const text = el.textContent?.trim() || '';
146
148
  const match = text.match(/magnet:\?xt=[^\s"'<>]+/);
@@ -1 +1 @@
1
- {"version":3,"file":"serviceUpdateTabStyle.d.ts","sourceRoot":"","sources":["../src/serviceUpdateTabStyle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvG;AASD;;;GAGG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChG"}
1
+ {"version":3,"file":"serviceUpdateTabStyle.d.ts","sourceRoot":"","sources":["../src/serviceUpdateTabStyle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAOf;AASD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAyCf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vacantthinker/firefox-addon-framework-easy",
3
- "version": "2026.0612.1531",
3
+ "version": "2026.0613.1110",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",