@vacantthinker/firefox-addon-framework-easy 2026.613.1125 → 2026.613.1848

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
@@ -4,37 +4,32 @@
4
4
  * Uses Generics (T) to ensure type safety for the stored object structure.
5
5
  */
6
6
  export declare abstract class BaseORM<T extends Record<string, any>> {
7
- #private;
8
- /**
9
- * @param prefix The prefix for the storage key.
10
- * @param id The unique identifier for this instance.
11
- * @param defaultValue The initial value to use if the key does not exist.
12
- */
7
+ protected readonly id: string;
8
+ protected readonly storageKey: string;
9
+ private readonly defaultValue;
10
+ private initPromise;
13
11
  protected constructor(prefix: string, id: string, defaultValue?: T);
14
- get id(): string;
15
- get storageKey(): string;
16
12
  /**
17
13
  * Retrieve the value associated with the bound key.
18
14
  * @returns {Promise<T>}
19
15
  */
20
- get(): Promise<T>;
16
+ protected get(): Promise<T>;
21
17
  /**
22
18
  * Overwrite the value of the bound key completely.
23
19
  * @param {T} value
24
20
  * @returns {Promise<void>}
25
21
  */
26
- set(value: T): Promise<void>;
22
+ protected set(value: T): Promise<void>;
27
23
  /**
28
24
  * Wipe the bound key from storage.
29
25
  * @returns {Promise<T>}
30
26
  */
31
- delete(): Promise<T>;
27
+ protected delete(): Promise<T>;
32
28
  /**
33
- * Modify a single targeted key-value pair nested deep within the stored object.
34
- * @param {K} key The internal key path inside the main value object.
35
- * @param {T[K]} value The new value to map to that key.
29
+ * Safely initialize the default object. Prevents multiple concurrent
30
+ * requests from writing the default value simultaneously.
36
31
  */
37
- updateValueKeyValue<K extends keyof T>(key: K, value: T[K]): Promise<void>;
32
+ private safeInit;
38
33
  private exists;
39
34
  private initDefaultObject;
40
35
  }
@@ -1 +1 @@
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"}
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;IACzD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAI;IAGjC,OAAO,CAAC,WAAW,CAA8B;IAEjD,SAAS,aACP,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,CAAW;IAkB3B;;;OAGG;cACa,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAQjC;;;;OAIG;cACa,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C;;;OAGG;cACa,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;IAMpC;;;OAGG;YACW,QAAQ;YAgBR,MAAM;YAIN,iBAAiB;CAMhC"}
package/dist/BaseORM.js CHANGED
@@ -5,14 +5,11 @@ import { stoOpCheck, stoOpGet, stoOpRem, stoOpSet } from './opStorage';
5
5
  * Uses Generics (T) to ensure type safety for the stored object structure.
6
6
  */
7
7
  export class BaseORM {
8
- #id;
9
- #fullStorageKey;
10
- #defaultValue;
11
- /**
12
- * @param prefix The prefix for the storage key.
13
- * @param id The unique identifier for this instance.
14
- * @param defaultValue The initial value to use if the key does not exist.
15
- */
8
+ id;
9
+ storageKey;
10
+ defaultValue;
11
+ // The Mutex "Lock" for preventing race conditions during initialization
12
+ initPromise = null;
16
13
  constructor(prefix, id, defaultValue = {}) {
17
14
  if (new.target === BaseORM) {
18
15
  throw new TypeError('Cannot construct BaseORM instances directly (Abstract Class).');
@@ -20,16 +17,12 @@ export class BaseORM {
20
17
  if (!prefix || !id) {
21
18
  throw new Error('Both prefix and id must be specified.');
22
19
  }
23
- this.#id = id;
24
- const formattedPrefix = prefix.endsWith(' ') ? prefix : `${prefix} `;
25
- this.#fullStorageKey = `${formattedPrefix}${id}`;
26
- this.#defaultValue = JSON.parse(JSON.stringify(defaultValue));
27
- }
28
- get id() {
29
- return this.#id;
30
- }
31
- get storageKey() {
32
- return this.#fullStorageKey;
20
+ this.id = id;
21
+ const formattedPrefix = prefix.endsWith(' ') ?
22
+ prefix :
23
+ `${prefix} `;
24
+ this.storageKey = `${formattedPrefix}${id}`;
25
+ this.defaultValue = structuredClone(defaultValue);
33
26
  }
34
27
  /**
35
28
  * Retrieve the value associated with the bound key.
@@ -37,9 +30,10 @@ export class BaseORM {
37
30
  */
38
31
  async get() {
39
32
  if (!(await this.exists())) {
40
- await this.initDefaultObject();
33
+ // Calls the lock-protected initialization instead of initDefaultObject directly
34
+ await this.safeInit();
41
35
  }
42
- return (await stoOpGet(this.#fullStorageKey));
36
+ return (await stoOpGet(this.storageKey));
43
37
  }
44
38
  /**
45
39
  * Overwrite the value of the bound key completely.
@@ -47,7 +41,7 @@ export class BaseORM {
47
41
  * @returns {Promise<void>}
48
42
  */
49
43
  async set(value) {
50
- await stoOpSet(this.#fullStorageKey, value || this.#defaultValue);
44
+ await stoOpSet(this.storageKey, value ?? this.defaultValue);
51
45
  }
52
46
  /**
53
47
  * Wipe the bound key from storage.
@@ -55,23 +49,30 @@ export class BaseORM {
55
49
  */
56
50
  async delete() {
57
51
  const previousValue = await this.get();
58
- await stoOpRem(this.#fullStorageKey);
52
+ await stoOpRem(this.storageKey);
59
53
  return previousValue;
60
54
  }
61
55
  /**
62
- * Modify a single targeted key-value pair nested deep within the stored object.
63
- * @param {K} key The internal key path inside the main value object.
64
- * @param {T[K]} value The new value to map to that key.
56
+ * Safely initialize the default object. Prevents multiple concurrent
57
+ * requests from writing the default value simultaneously.
65
58
  */
66
- async updateValueKeyValue(key, value) {
67
- const data = await this.get();
68
- data[key] = value;
69
- await this.set(data);
59
+ async safeInit() {
60
+ // If an initialization is already in progress, wait for it
61
+ if (this.initPromise) {
62
+ return this.initPromise;
63
+ }
64
+ // Start initialization and store the Promise as the lock
65
+ this.initPromise = this.initDefaultObject()
66
+ .finally(() => {
67
+ // Clear the lock whether the initialization succeeds or fails
68
+ this.initPromise = null;
69
+ });
70
+ return this.initPromise;
70
71
  }
71
72
  async exists() {
72
- return await stoOpCheck(this.#fullStorageKey);
73
+ return await stoOpCheck(this.storageKey);
73
74
  }
74
75
  async initDefaultObject() {
75
- await stoOpSet(this.#fullStorageKey, this.#defaultValue);
76
+ await stoOpSet(this.storageKey, this.defaultValue);
76
77
  }
77
78
  }
@@ -1,3 +1,4 @@
1
+ export declare function browserTabSendMessageMarcoPolo(tabId: number): Promise<void>;
1
2
  /**
2
3
  * Sends a message to a specific tab.
3
4
  */
@@ -1 +1 @@
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,wCAAwC,CAC5D,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,kBAMb;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,kBAQpD;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,kBAM9C;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,iBAMnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,mBAGd;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAKf"}
1
+ {"version":3,"file":"browserTab.d.ts","sourceRoot":"","sources":["../src/browserTab.ts"],"names":[],"mappings":"AAAA,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,iBAOd;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,wCAAwC,CAC5D,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,kBAMb;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,kBAQpD;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,kBAM9C;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,iBAMnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,mBAGd;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAC5C,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -1,3 +1,8 @@
1
+ export async function browserTabSendMessageMarcoPolo(tabId) {
2
+ await browserTabSendMessage(tabId, {
3
+ tag: 'marco', status: 'Polo',
4
+ });
5
+ }
1
6
  /**
2
7
  * Sends a message to a specific tab.
3
8
  */
@@ -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,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"}
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,CAKtE;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/opStorage.js CHANGED
@@ -14,7 +14,9 @@ export async function stoOpCheck(key) {
14
14
  */
15
15
  export async function stoOpGet(key) {
16
16
  const result = await browser.storage.local.get(key);
17
- return result[key] !== undefined ? result[key] : null;
17
+ return result[key] !== undefined ?
18
+ result[key] :
19
+ null;
18
20
  }
19
21
  /**
20
22
  * Retrieves all items from local storage.
@@ -1 +1 @@
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"}
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,CAMvF;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
@@ -75,7 +75,9 @@ export async function tabOpCreateNear(options) {
75
75
  export async function tabOpCreateByWindow(url) {
76
76
  const window = await browser.windows.create({ url });
77
77
  const tab = window.tabs?.[0];
78
- return tab ? tabOpEnhance(tab) ?? undefined : undefined;
78
+ return tab ?
79
+ tabOpEnhance(tab) ?? undefined :
80
+ undefined;
79
81
  }
80
82
  /**
81
83
  * Retrieves details about the specified tab.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vacantthinker/firefox-addon-framework-easy",
3
- "version": "2026.0613.1125",
3
+ "version": "2026.0613.1848",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",