@@ -74,24 +74,6 @@ class Server {
74
74
} , this ) ;
75
75
}
76
76
77
- static getArguments ( webpack , ...args ) {
78
- // TODO remove after drop webpack v4
79
- if ( ! webpack . cli ) {
80
- return require ( '../bin/cli-flags' ) ;
81
- }
82
-
83
- return webpack . cli . getArguments ( schema , ...args ) ;
84
- }
85
-
86
- static processArguments ( webpack , ...args ) {
87
- // TODO remove after drop webpack v4
88
- if ( ! webpack . cli ) {
89
- return require ( '../bin/process-arguments' ) ( ...args ) ;
90
- }
91
-
92
- return webpack . cli . processArguments ( ...args ) ;
93
- }
94
-
95
77
applyDevServerPlugin ( ) {
96
78
const DevServerPlugin = require ( './utils/DevServerPlugin' ) ;
97
79
@@ -1054,4 +1036,48 @@ class Server {
1054
1036
}
1055
1037
}
1056
1038
1057
- module . exports = Server ;
1039
+ const mergeExports = ( obj , exports ) => {
1040
+ const descriptors = Object . getOwnPropertyDescriptors ( exports ) ;
1041
+
1042
+ for ( const name of Object . keys ( descriptors ) ) {
1043
+ const descriptor = descriptors [ name ] ;
1044
+
1045
+ if ( descriptor . get ) {
1046
+ const fn = descriptor . get ;
1047
+
1048
+ Object . defineProperty ( obj , name , {
1049
+ configurable : false ,
1050
+ enumerable : true ,
1051
+ get : fn ,
1052
+ } ) ;
1053
+ } else if ( typeof descriptor . value === 'object' ) {
1054
+ Object . defineProperty ( obj , name , {
1055
+ configurable : false ,
1056
+ enumerable : true ,
1057
+ writable : false ,
1058
+ value : mergeExports ( { } , descriptor . value ) ,
1059
+ } ) ;
1060
+ } else {
1061
+ throw new Error (
1062
+ 'Exposed values must be either a getter or an nested object'
1063
+ ) ;
1064
+ }
1065
+ }
1066
+
1067
+ return Object . freeze ( obj ) ;
1068
+ } ;
1069
+
1070
+ module . exports = mergeExports ( Server , {
1071
+ get schema ( ) {
1072
+ return schema ;
1073
+ } ,
1074
+ // TODO compatibility with webpack v4, remove it after drop
1075
+ cli : {
1076
+ get getArguments ( ) {
1077
+ return ( ) => require ( '../bin/cli-flags' ) ;
1078
+ } ,
1079
+ get processArguments ( ) {
1080
+ return require ( '../bin/process-arguments' ) ;
1081
+ } ,
1082
+ } ,
1083
+ } ) ;
0 commit comments