@@ -33,6 +33,8 @@ export const webextFlavor = (( ) => {
3333 return extURL . startsWith ( 'moz-extension:' ) ? 'firefox' : 'chromium' ;
3434} ) ( ) ;
3535
36+ const notAnObject = a => typeof a !== 'object' || a === null ;
37+
3638/******************************************************************************/
3739
3840// The extension's service worker can be evicted at any time, so when we
@@ -47,72 +49,64 @@ export function sendMessage(msg) {
4749/******************************************************************************/
4850
4951export async function localRead ( key ) {
50- if ( browser . storage instanceof Object === false ) { return ; }
51- if ( browser . storage . local instanceof Object === false ) { return ; }
52+ if ( notAnObject ( browser ?. storage ?. local ) ) { return ; }
5253 try {
5354 const bin = await browser . storage . local . get ( key ) ;
54- if ( bin instanceof Object === false ) { return ; }
55+ if ( notAnObject ( bin ) ) { return ; }
5556 return bin [ key ] ?? undefined ;
5657 } catch {
5758 }
5859}
5960
6061export async function localWrite ( key , value ) {
61- if ( browser . storage instanceof Object === false ) { return ; }
62- if ( browser . storage . local instanceof Object === false ) { return ; }
62+ if ( notAnObject ( browser ?. storage ?. local ) ) { return ; }
6363 return browser . storage . local . set ( { [ key ] : value } ) ;
6464}
6565
6666export async function localRemove ( key ) {
67- if ( browser . storage instanceof Object === false ) { return ; }
68- if ( browser . storage . local instanceof Object === false ) { return ; }
67+ if ( notAnObject ( browser ?. storage ?. local ) ) { return ; }
6968 return browser . storage . local . remove ( key ) ;
7069}
7170
7271export async function localKeys ( ) {
73- if ( browser . storage instanceof Object === false ) { return ; }
74- if ( browser . storage . local instanceof Object === false ) { return ; }
72+ if ( notAnObject ( browser ?. storage ?. local ) ) { return ; }
7573 if ( browser . storage . local . getKeys ) {
7674 return browser . storage . local . getKeys ( ) ;
7775 }
7876 const bin = await browser . storage . local . get ( null ) ;
79- if ( bin instanceof Object === false ) { return ; }
77+ if ( notAnObject ( bin ) ) { return ; }
8078 return Object . keys ( bin ) ;
8179}
8280
8381/******************************************************************************/
8482
8583export async function sessionRead ( key ) {
86- if ( browser . storage instanceof Object === false ) { return ; }
87- if ( browser . storage . session instanceof Object === false ) { return ; }
84+ if ( notAnObject ( browser ?. storage ?. session ) ) { return ; }
8885 try {
8986 const bin = await browser . storage . session . get ( key ) ;
90- if ( bin instanceof Object === false ) { return ; }
87+ if ( notAnObject ( bin ) ) { return ; }
9188 return bin [ key ] ?? undefined ;
9289 } catch {
9390 }
9491}
9592
9693export async function sessionWrite ( key , value ) {
97- if ( browser . storage instanceof Object === false ) { return ; }
98- if ( browser . storage . session instanceof Object === false ) { return ; }
94+ if ( notAnObject ( browser ?. storage ?. session ) ) { return ; }
9995 return browser . storage . session . set ( { [ key ] : value } ) ;
10096}
10197
10298export async function sessionRemove ( key ) {
103- if ( browser . storage instanceof Object === false ) { return ; }
104- if ( browser . storage . session instanceof Object === false ) { return ; }
99+ if ( notAnObject ( browser ?. storage ?. session ) ) { return ; }
105100 return browser . storage . session . remove ( key ) ;
106101}
107102
108103/******************************************************************************/
109104
110105export async function adminRead ( key ) {
111- if ( browser . storage instanceof Object === false ) { return ; }
112- if ( browser . storage . managed instanceof Object === false ) { return ; }
106+ if ( browser ?. storage ?. managed instanceof Object === false ) { return ; }
113107 try {
114108 const bin = await browser . storage . managed . get ( key ) ;
115- if ( bin instanceof Object === false ) { return ; }
109+ if ( notAnObject ( bin ) ) { return ; }
116110 return bin [ key ] ?? undefined ;
117111 } catch {
118112 }
0 commit comments