@@ -3,34 +3,11 @@ import { v4 as uuidv4 } from "uuid";
3
3
import type { Message } from "@Packages/message/types" ;
4
4
import EventEmitter from "eventemitter3" ;
5
5
import { GMContextApiGet } from "./gm_context" ;
6
- import { createGMBase } from "./gm_api" ;
6
+ import { createGMBase , type GMApiType } from "./gm_api" ;
7
+
8
+ function _createContext ( options :{ [ key :string ] :any } , scriptGrants :Set < string > | string [ ] ) {
9
+ const context = createGMBase ( options ) ;
7
10
8
- // 构建沙盒上下文
9
- export function createContext (
10
- scriptRes : ScriptRunResource ,
11
- GMInfo : any ,
12
- envPrefix : string ,
13
- message : Message ,
14
- scriptGrants : Set < string >
15
- ) {
16
- // 按照GMApi构建
17
- const valueChangeListener = new Map < number , { name : string ; listener : GMTypes . ValueChangeListener } > ( ) ;
18
- const EE : EventEmitter = new EventEmitter ( ) ;
19
- const context = createGMBase ( {
20
- prefix : envPrefix ,
21
- message,
22
- scriptRes,
23
- valueChangeListener,
24
- EE ,
25
- runFlag : uuidv4 ( ) ,
26
- eventId : 10000 ,
27
- GM : { info : GMInfo } ,
28
- GM_info : GMInfo ,
29
- window : {
30
- onurlchange : null ,
31
- } ,
32
- grantSet : new Set ( ) ,
33
- } ) ;
34
11
const grantedAPIs : { [ key : string ] : any } = { } ;
35
12
const __methodInject__ = ( grant : string ) : boolean => {
36
13
const grantSet : Set < string > = context . grantSet ;
@@ -64,6 +41,59 @@ export function createContext(
64
41
g = g [ part ] || ( g [ part ] = ( grantedAPIs [ s ] || { } ) ) ;
65
42
}
66
43
}
67
- context . unsafeWindow = window ;
44
+ return < GMApiType > context ;
45
+ }
46
+
47
+ // 构建沙盒上下文
48
+ export function createContext (
49
+ scriptRes : ScriptRunResource ,
50
+ GMInfo : any ,
51
+ envPrefix : string ,
52
+ message : Message ,
53
+ scriptGrants : Set < string > | string [ ]
54
+ ) {
55
+ // 按照GMApi构建
56
+ const valueChangeListener = new Map < number , { name : string ; listener : GMTypes . ValueChangeListener } > ( ) ;
57
+ const EE : EventEmitter = new EventEmitter ( ) ;
58
+ const context = _createContext ( {
59
+ prefix : envPrefix ,
60
+ message,
61
+ scriptRes,
62
+ valueChangeListener,
63
+ EE ,
64
+ runFlag : uuidv4 ( ) ,
65
+ eventId : 10000 ,
66
+ GM : { info : GMInfo } ,
67
+ GM_info : GMInfo ,
68
+ window : {
69
+ onurlchange : null ,
70
+ } ,
71
+ grantSet : new Set ( ) ,
72
+ unsafeWindow : window
73
+ } , scriptGrants ) ;
74
+ return context ;
75
+ }
76
+
77
+ // 构建测试用沙盒上下文
78
+ export function createTestContext (
79
+ prefix : string ,
80
+ message : Message ,
81
+ scriptRes : ScriptRunResource ,
82
+ scriptGrants : Set < string > | string [ ]
83
+ ) {
84
+
85
+ const valueChangeListener = new Map < number , { name : string ; listener : GMTypes . ValueChangeListener } > ( ) ;
86
+ const EE : EventEmitter = new EventEmitter ( ) ;
87
+ const context = _createContext ( {
88
+ prefix,
89
+ message,
90
+ scriptRes,
91
+ valueChangeListener,
92
+ EE ,
93
+ notificationTagMap : new Map ( ) ,
94
+ eventId : 0 ,
95
+ grantSet : new Set ( ) ,
96
+ } , scriptGrants ) ;
97
+
68
98
return context ;
69
99
}
0 commit comments