@@ -68,7 +68,7 @@ export class BackgroundGrant {
6868 let isScriptcat = false ;
6969 const requestHeaders : chrome . webRequest . HttpHeader [ ] = [ ] ;
7070 const unsafeHeader : { [ key : string ] : string } = { } ;
71- data . requestHeaders ?. forEach ( ( val , key ) => {
71+ data . requestHeaders ?. forEach ( ( val ) => {
7272 const lowerCase = val . name . toLowerCase ( ) ;
7373 switch ( lowerCase ) {
7474 case 'x-cat-' + this . rand + '-cookie' : {
@@ -387,7 +387,7 @@ export class BackgroundGrant {
387387
388388 }
389389
390- protected dealXhr ( config : GM_Types . XHRDetails , xhr : XMLHttpRequest ) : GM_Types . XHRResponse {
390+ protected dealXhr ( config : GMSend . XHRDetails , xhr : XMLHttpRequest ) : GM_Types . XHRResponse {
391391 const removeXCat = new RegExp ( 'x-cat-' + this . rand + '-' , 'g' ) ;
392392 const respond : GM_Types . XHRResponse = {
393393 finalUrl : xhr . responseURL || config . url ,
@@ -405,7 +405,7 @@ export class BackgroundGrant {
405405 respond . response = URL . createObjectURL ( xhr . response ) ;
406406 }
407407 setTimeout ( ( ) => {
408- URL . revokeObjectURL ( respond . response ) ;
408+ URL . revokeObjectURL ( < string > respond . response ) ;
409409 } , 60e3 )
410410 } else if ( config . responseType == 'json' ) {
411411 try {
@@ -472,26 +472,25 @@ export class BackgroundGrant {
472472 if ( config . responseType != 'json' ) {
473473 xhr . responseType = config . responseType || '' ;
474474 }
475- const _this = this ;
476475
477- function deal ( event : string ) {
478- const respond = _this . dealXhr ( config , xhr ) ;
476+ const deal = ( event : string ) => {
477+ const respond = this . dealXhr ( config , xhr ) ;
479478 grant . data = { type : event , data : respond } ;
480479 post . postMessage ( grant ) ;
481480 }
482- xhr . onload = ( event ) => {
481+ xhr . onload = ( ) => {
483482 deal ( 'load' ) ;
484483 }
485- xhr . onloadstart = ( event ) => {
484+ xhr . onloadstart = ( ) => {
486485 deal ( 'onloadstart' ) ;
487486 }
488- xhr . onloadend = ( event ) => {
487+ xhr . onloadend = ( ) => {
489488 deal ( 'onloadstart' ) ;
490489 }
491- xhr . onabort = ( event ) => {
490+ xhr . onabort = ( ) => {
492491 deal ( 'onabort' ) ;
493492 }
494- xhr . onerror = ( event ) => {
493+ xhr . onerror = ( ) => {
495494 deal ( 'onerror' ) ;
496495 }
497496 xhr . onprogress = ( event ) => {
@@ -505,7 +504,7 @@ export class BackgroundGrant {
505504 grant . data = { type : 'onprogress' , data : respond } ;
506505 post . postMessage ( grant ) ;
507506 }
508- xhr . onreadystatechange = ( event ) => {
507+ xhr . onreadystatechange = ( ) => {
509508 deal ( 'onreadystatechange' ) ;
510509 }
511510 xhr . ontimeout = ( ) => {
@@ -545,61 +544,41 @@ export class BackgroundGrant {
545544 if ( config . overrideMimeType ) {
546545 xhr . overrideMimeType ( config . overrideMimeType ) ;
547546 }
548- if ( ( < any > config ) . dataType && ( < any > config ) . dataType == 'FormData' ) {
547+ if ( config . dataType == 'FormData' ) {
549548 const data = new FormData ( ) ;
550- for ( const key in config . data ) {
551- const val = config . data [ key ] ;
552- if ( val . type == 'file' ) {
553- data . append ( val . key , base64ToBlob ( val . val ) , val . filename ) ;
554- } else {
555- data . append ( val . key , val . val ) ;
556- }
549+ if ( config . data && config . data instanceof Array ) {
550+ config . data . forEach ( ( val : GMSend . XHRFormData ) => {
551+ if ( val . type == 'file' ) {
552+ data . append ( val . key , base64ToBlob ( val . val ) , val . filename ) ;
553+ } else {
554+ data . append ( val . key , val . val ) ;
555+ }
556+ } ) ;
557+ xhr . send ( data ) ;
557558 }
558- xhr . send ( data ) ;
559559 } else {
560- xhr . send ( config . data ) ;
560+ xhr . send ( < string > config . data ) ;
561561 }
562562 return resolve ( undefined ) ;
563563 } ) ;
564564 }
565565
566- @BackgroundGrant . GMFunction ( {
567- background : true
568- } )
569- protected GM_getCookieStore ( grant : Grant , post : IPostMessage ) : Promise < any > {
570- return new Promise ( ( resolve , reject ) => {
571- const tabid = grant . params [ 0 ] ;
572- if ( ! tabid ) {
573- return reject ( 'tabis is null' ) ;
574- }
575- chrome . cookies . getAllCookieStores ( s => {
576- for ( let i = 0 ; i < s . length ; i ++ ) {
577- for ( let n = 0 ; n < s [ i ] . tabIds . length ; n ++ ) {
578- if ( s [ i ] . tabIds [ n ] == tabid ) {
579- grant . data = { type : 'done' , data : s [ i ] . id } ;
580- post . postMessage ( grant ) ;
581- return resolve ( undefined ) ;
582- }
583- }
584- }
585- reject ( 'not found' ) ;
586- } ) ;
587- } ) ;
588- }
589-
590566 @BackgroundGrant . GMFunction ( {
591567 confirm : ( grant : Grant , script : Script ) => {
592568 return new Promise ( ( resolve , reject ) => {
569+ if ( grant . params [ 0 ] == 'store' ) {
570+ resolve ( true ) ;
571+ }
593572 const detail = < GM_Types . CookieDetails > grant . params [ 1 ] ;
594573 if ( ( ! detail . url && ! detail . domain ) ) {
595574 return reject ( 'there must be one of url or domain' ) ;
596575 }
597- let url : any = { } ;
576+ let url : URL = < URL > { } ;
598577 if ( detail . url ) {
599578 url = new URL ( detail . url ) ;
600579 } else {
601- url . host = detail . domain ;
602- url . hostname = detail . domain ;
580+ url . host = detail . domain || '' ;
581+ url . hostname = detail . domain || '' ;
603582 }
604583 let flag = false ;
605584 if ( script . metadata [ 'connect' ] ) {
@@ -635,19 +614,28 @@ export class BackgroundGrant {
635614 if ( param . length != 2 ) {
636615 return reject ( 'there must be two parameters' ) ;
637616 }
617+ const detail = < GM_Types . CookieDetails > grant . params [ 1 ] ;
638618 if ( param [ 0 ] == 'store' ) {
639619 chrome . cookies . getAllCookieStores ( res => {
640620 const data : any [ ] = [ ] ;
641621 res . forEach ( val => {
642- data . push ( { storeId : val . id } ) ;
622+ if ( detail . tabId ) {
623+ for ( let n = 0 ; n < val . tabIds . length ; n ++ ) {
624+ if ( val . tabIds [ n ] == detail . tabId ) {
625+ data . push ( { storeId : val . id } ) ;
626+ break ;
627+ }
628+ }
629+ } else {
630+ data . push ( { storeId : val . id } ) ;
631+ }
643632 } ) ;
644633 grant . data = { type : 'done' , data : data } ;
645634 post . postMessage ( grant ) ;
646635 } ) ;
647636 return ;
648637 }
649- const detail = < GM_Types . CookieDetails > grant . params [ 1 ] ;
650- // url或者域名不能为空,且必须有name
638+ // url或者域名不能为空
651639 if ( detail . url ) {
652640 detail . url = detail . url . trim ( ) ;
653641 }
@@ -674,7 +662,7 @@ export class BackgroundGrant {
674662 break ;
675663 }
676664 case 'delete' : {
677- if ( ! detail . url ) {
665+ if ( ! detail . url || ! detail . name ) {
678666 return reject ( 'delete operation must have url and name' ) ;
679667 }
680668 chrome . cookies . remove ( {
@@ -688,7 +676,7 @@ export class BackgroundGrant {
688676 break ;
689677 }
690678 case 'set' : {
691- if ( ! detail . url ) {
679+ if ( ! detail . url || ! detail . name ) {
692680 return reject ( 'set operation must have url or domain, and the name must exist' ) ;
693681 }
694682 chrome . cookies . set ( {
0 commit comments