Skip to content

Commit 7cbac25

Browse files
refactor: code
1 parent 7b88c53 commit 7cbac25

File tree

1 file changed

+45
-19
lines changed

1 file changed

+45
-19
lines changed

lib/Server.js

+45-19
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,6 @@ class Server {
7474
}, this);
7575
}
7676

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-
9577
applyDevServerPlugin() {
9678
const DevServerPlugin = require('./utils/DevServerPlugin');
9779

@@ -1054,4 +1036,48 @@ class Server {
10541036
}
10551037
}
10561038

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

Comments
 (0)