@@ -12,41 +12,50 @@ import {
1212 FixTags ,
1313 Interpolater ,
1414 LoadHeaders ,
15+ LoadHeadersOptions ,
1516 ProcessProxyScript ,
1617 ProcessSSRI ,
18+ ProxyScriptOptions ,
1719 RenderHeaders ,
20+ RenderHeadersOptions ,
1821 ResolveBaseURLs ,
22+ ResolveBaseURLsOptions ,
1923 SetDefaultTags ,
24+ SSRIOptions ,
2025 ValidateHeaders ,
26+ ValidateHeadersOptions ,
2127} from './features' ;
2228import {
2329 CompilationContext ,
2430 FileInfo ,
2531 HeadersProps ,
26- UserscriptOptions ,
2732 UserscriptPluginInstance ,
2833 WaterfallContext ,
2934} from './types' ;
3035import { date } from './utils' ;
3136
3237const { ConcatSource, RawSource } = sources ;
3338
39+ export interface UserscriptPluginOptions {
40+ metajs ?: boolean ;
41+ skip ?: ( fileInfo : FileInfo ) => boolean ;
42+ proxyScript ?: unknown ;
43+ }
44+
45+ export type UserscriptOptions = LoadHeadersOptions &
46+ ResolveBaseURLsOptions &
47+ SSRIOptions &
48+ ProxyScriptOptions &
49+ RenderHeadersOptions &
50+ ValidateHeadersOptions &
51+ UserscriptPluginOptions ;
52+
3453export class UserscriptPlugin
3554 implements WebpackPluginInstance , UserscriptPluginInstance
3655{
3756 public readonly name = 'UserscriptPlugin' ;
3857
39- public readonly features : Feature [ ] = [
40- new LoadHeaders ( this . options ) ,
41- new FixTags ( this . options ) ,
42- new ResolveBaseURLs ( this . options ) ,
43- new ProcessSSRI ( this . options ) ,
44- new SetDefaultTags ( this . options ) ,
45- new ProcessProxyScript ( this . options ) ,
46- new Interpolater ( this . options ) ,
47- new ValidateHeaders ( this . options ) ,
48- new RenderHeaders ( this . options ) ,
49- ] ;
58+ public readonly features : Feature [ ] ;
5059
5160 public readonly hooks = {
5261 init : new AsyncParallelHook < [ Compiler ] > ( [ 'compiler' ] ) ,
@@ -79,14 +88,25 @@ export class UserscriptPlugin
7988 } ;
8089
8190 private readonly contexts = new WeakMap < Compilation , CompilationContext > ( ) ;
82-
83- public constructor ( public options : UserscriptOptions = { } ) {
84- const { metajs = true , strict = true } = this . options ;
85-
86- Object . assign ( this . options , {
87- metajs,
88- strict,
89- } ) ;
91+ private options : UserscriptPluginOptions = { } ;
92+
93+ public constructor ( options : UserscriptOptions = { } ) {
94+ const { metajs = true , strict = true } = options ;
95+ Object . assign ( options , { metajs, strict } as UserscriptOptions ) ;
96+
97+ this . features = [
98+ new LoadHeaders ( options ) ,
99+ new FixTags ( options ) ,
100+ new ResolveBaseURLs ( options ) ,
101+ new ProcessSSRI ( options ) ,
102+ new SetDefaultTags ( options ) ,
103+ new ProcessProxyScript ( options ) ,
104+ new Interpolater ( options ) ,
105+ new ValidateHeaders ( options ) ,
106+ new RenderHeaders ( options ) ,
107+ ] ;
108+
109+ this . options = options ;
90110 }
91111
92112 public apply ( compiler : Compiler ) : void {
0 commit comments