@@ -194,15 +194,47 @@ export default class GMApi {
194194 }
195195 }
196196
197+ @GMContext . API ( { depend : [ "GM_setValue" ] } )
198+ public GMDotSetValue ( key : string , value : any ) : Promise < void > {
199+ // Asynchronous wrapper for GM_setValue to support GM.setValue
200+ return new Promise ( ( resolve ) => {
201+ this . GM_setValue ( key , value ) ;
202+ resolve ( ) ;
203+ } ) ;
204+ }
205+
197206 @GMContext . API ( { depend : [ "GM_setValue" ] } )
198207 public GM_deleteValue ( name : string ) : void {
199208 this . GM_setValue ( name , undefined ) ;
200209 }
201210
211+ @GMContext . API ( { depend : [ "GM_deleteValue" ] } )
212+ public GMDotDeleteValue ( name : string ) : Promise < void > {
213+ // Asynchronous wrapper for GM_deleteValue to support GM.deleteValue
214+ return new Promise ( ( resolve ) => {
215+ this . GM_deleteValue ( name ) ;
216+ resolve ( ) ;
217+ } ) ;
218+ }
219+
220+ @GMContext . API ( )
221+ public GM_listValues ( ) : string [ ] {
222+ return Object . keys ( this . scriptRes . value ) ;
223+ }
224+
225+ @GMContext . API ( { depend : [ "GM_listValues" ] } )
226+ public GMDotListValues ( ) : Promise < string [ ] > {
227+ // Asynchronous wrapper for GM_listValues to support GM.listValues
228+ return new Promise ( ( resolve ) => {
229+ const ret = this . GM_listValues ( ) ;
230+ resolve ( ret ) ;
231+ } ) ;
232+ }
233+
202234 @GMContext . API ( { depend : [ "GM_setValue" ] } )
203235 public GM_setValues ( values : { [ key : string ] : any } ) {
204236 if ( values == null ) {
205- throw new Error ( "GM_ setValues : values must not be null or undefined" ) ;
237+ throw new Error ( "GM_setValues : values must not be null or undefined" ) ;
206238 }
207239 if ( typeof values !== "object" ) {
208240 throw new Error ( "GM_setValues: values must be an object" ) ;
@@ -216,12 +248,13 @@ export default class GMApi {
216248 @GMContext . API ( { depend : [ "GM_getValue" ] } )
217249 public GM_getValues ( keysOrDefaults : { [ key : string ] : any } | string [ ] | null | undefined ) {
218250 if ( keysOrDefaults == null ) {
219- // returns all
251+ // Returns all values
220252 return this . scriptRes . value ;
221253 }
222- let result = < { [ key : string ] : any } > { } ;
254+ let result : { [ key : string ] : any } = { } ;
223255 if ( Array . isArray ( keysOrDefaults ) ) {
224256 // 键名数组
257+ // Handle array of keys (e.g., ['foo', 'bar'])
225258 for ( let index = 0 ; index < keysOrDefaults . length ; index ++ ) {
226259 const key = keysOrDefaults [ index ] ;
227260 if ( key in this . scriptRes . value ) {
@@ -230,15 +263,24 @@ export default class GMApi {
230263 }
231264 } else {
232265 // 对象 键: 默认值
266+ // Handle object with default values (e.g., { foo: 1, bar: 2, baz: 3 })
233267 Object . keys ( keysOrDefaults ) . forEach ( ( key ) => {
234268 let defaultValue = keysOrDefaults [ key ] ;
235269 result [ key ] = this . GM_getValue ( key , defaultValue ) ;
236270 } ) ;
237271 }
238-
239272 return result ;
240273 }
241274
275+ // Asynchronous wrapper for GM.getValues
276+ @GMContext . API ( { depend : [ "GM_getValues" ] } )
277+ public GMDotGetValues ( keysOrDefaults : { [ key : string ] : any } | string [ ] | null | undefined ) : Promise < { [ key : string ] : any } > {
278+ return new Promise ( ( resolve ) => {
279+ const ret = this . GM_getValues ( keysOrDefaults ) ;
280+ resolve ( ret ) ;
281+ } ) ;
282+ }
283+
242284 @GMContext . API ( { depend : [ "GM_deleteValue" ] } )
243285 public GM_deleteValues ( keys : string [ ] ) {
244286 if ( ! Array . isArray ( keys ) ) {
@@ -250,6 +292,15 @@ export default class GMApi {
250292 } ) ;
251293 }
252294
295+ // Asynchronous wrapper for GM.deleteValues
296+ @GMContext . API ( { depend : [ "GM_deleteValues" ] } )
297+ public GMDotDeleteValues ( keys : string [ ] ) : Promise < void > {
298+ return new Promise ( ( resolve ) => {
299+ this . GM_deleteValues ( keys ) ;
300+ resolve ( ) ;
301+ } ) ;
302+ }
303+
253304 eventId : number = 0 ;
254305
255306 menuMap : Map < number , string > | undefined ;
@@ -268,11 +319,6 @@ export default class GMApi {
268319 this . valueChangeListener . delete ( listenerId ) ;
269320 }
270321
271- @GMContext . API ( )
272- public GM_listValues ( ) : string [ ] {
273- return Object . keys ( this . scriptRes . value ) ;
274- }
275-
276322 @GMContext . API ( )
277323 GM_log ( message : string , level : GMTypes . LoggerLevel = "info" , labels ?: GMTypes . LoggerLabel ) {
278324 if ( typeof message !== "string" ) {
@@ -971,6 +1017,15 @@ export default class GMApi {
9711017 return undefined ;
9721018 }
9731019
1020+ @GMContext . API ( { depend : [ "GM_getResourceText" ] } )
1021+ public GMDotGetResourceText ( name : string ) : Promise < string | undefined > {
1022+ // Asynchronous wrapper for GM_getResourceText to support GM.getResourceText
1023+ return new Promise ( ( resolve ) => {
1024+ const ret = this . GM_getResourceText ( name ) ;
1025+ resolve ( ret ) ;
1026+ } ) ;
1027+ }
1028+
9741029 @GMContext . API ( )
9751030 GM_getResourceURL ( name : string , isBlobUrl ?: boolean ) : string | undefined {
9761031 if ( ! this . scriptRes . resource ) {
@@ -988,17 +1043,12 @@ export default class GMApi {
9881043
9891044 // GM_getResourceURL的异步版本,用来兼容GM.getResourceUrl
9901045 @GMContext . API ( { depend : [ "GM_getResourceURL" ] } )
991- async GMDotGetResourceUrl ( name : string , isBlobUrl ?: boolean ) : Promise < string | undefined > {
992- if ( this . scriptRes . resource ) {
993- const r = this . scriptRes . resource [ name ] ;
994- if ( r ) {
995- if ( isBlobUrl ) {
996- return URL . createObjectURL ( base64ToBlob ( r . base64 ) ) ;
997- }
998- return r . base64 ;
999- }
1000- }
1001- return undefined ;
1046+ public GMDotGetResourceUrl ( name : string , isBlobUrl ?: boolean ) : Promise < string | undefined > {
1047+ // Asynchronous wrapper for GM_getResourceURL to support GM.getResourceURL
1048+ return new Promise ( ( resolve ) => {
1049+ const ret = this . GM_getResourceURL ( name ) ;
1050+ resolve ( ret ) ;
1051+ } ) ;
10021052 }
10031053
10041054 @GMContext . API ( )
0 commit comments