@rspack/dev-server 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/index.js CHANGED
@@ -16,19 +16,19 @@ function _objectSpread(target) {
16
16
  i % 2
17
17
  ? ownKeys(Object(source), !0).forEach(function (key) {
18
18
  _defineProperty(target, key, source[key]);
19
- })
19
+ })
20
20
  : Object.getOwnPropertyDescriptors
21
- ? Object.defineProperties(
22
- target,
23
- Object.getOwnPropertyDescriptors(source)
24
- )
25
- : ownKeys(Object(source)).forEach(function (key) {
26
- Object.defineProperty(
21
+ ? Object.defineProperties(
27
22
  target,
28
- key,
29
- Object.getOwnPropertyDescriptor(source, key)
30
- );
31
- });
23
+ Object.getOwnPropertyDescriptors(source)
24
+ )
25
+ : ownKeys(Object(source)).forEach(function (key) {
26
+ Object.defineProperty(
27
+ target,
28
+ key,
29
+ Object.getOwnPropertyDescriptor(source, key)
30
+ );
31
+ });
32
32
  }
33
33
  return target;
34
34
  }
@@ -106,6 +106,28 @@ var status = {
106
106
  currentHash: typeof __webpack_hash__ !== "undefined" ? __webpack_hash__ : ""
107
107
  };
108
108
 
109
+ var decodeOverlayOptions = function decodeOverlayOptions(overlayOptions) {
110
+ if (typeof overlayOptions === "object") {
111
+ ["warnings", "errors", "runtimeErrors"].forEach(function (property) {
112
+ if (typeof overlayOptions[property] === "string") {
113
+ var overlayFilterFunctionString = decodeURIComponent(
114
+ overlayOptions[property]
115
+ );
116
+
117
+ // eslint-disable-next-line no-new-func
118
+ var overlayFilterFunction = new Function(
119
+ "message",
120
+ "var callback = ".concat(
121
+ overlayFilterFunctionString,
122
+ "\n return callback(message)"
123
+ )
124
+ );
125
+ overlayOptions[property] = overlayFilterFunction;
126
+ }
127
+ });
128
+ }
129
+ };
130
+
109
131
  /** @type {Options} */
110
132
  var options = {
111
133
  hot: false,
@@ -132,6 +154,7 @@ if (parsedResourceQuery.progress === "true") {
132
154
  options.progress = true;
133
155
  enabledFeatures.Progress = true;
134
156
  }
157
+
135
158
  if (parsedResourceQuery.overlay) {
136
159
  try {
137
160
  options.overlay = JSON.parse(parsedResourceQuery.overlay);
@@ -149,6 +172,7 @@ if (parsedResourceQuery.overlay) {
149
172
  },
150
173
  options.overlay
151
174
  );
175
+ decodeOverlayOptions(options.overlay);
152
176
  }
153
177
  enabledFeatures.Overlay = true;
154
178
  }
@@ -183,15 +207,15 @@ var overlay =
183
207
  ? {
184
208
  trustedTypesPolicyName: options.overlay.trustedTypesPolicyName,
185
209
  catchRuntimeError: options.overlay.runtimeErrors
186
- }
210
+ }
187
211
  : {
188
212
  trustedTypesPolicyName: false,
189
213
  catchRuntimeError: options.overlay
190
- }
191
- )
214
+ }
215
+ )
192
216
  : {
193
217
  send: function send() {}
194
- };
218
+ };
195
219
  var onSocketMessage = {
196
220
  hot: function hot() {
197
221
  if (parsedResourceQuery.hot === "false") {
@@ -232,6 +256,7 @@ var onSocketMessage = {
232
256
  return;
233
257
  }
234
258
  options.overlay = value;
259
+ decodeOverlayOptions(options.overlay);
235
260
  },
236
261
  /**
237
262
  * @param {number} value
@@ -321,16 +346,22 @@ var onSocketMessage = {
321
346
  for (var i = 0; i < printableWarnings.length; i++) {
322
347
  log.warn(printableWarnings[i]);
323
348
  }
324
- var needShowOverlayForWarnings =
349
+ var overlayWarningsSetting =
325
350
  typeof options.overlay === "boolean"
326
351
  ? options.overlay
327
352
  : options.overlay && options.overlay.warnings;
328
- if (needShowOverlayForWarnings) {
329
- overlay.send({
330
- type: "BUILD_ERROR",
331
- level: "warning",
332
- messages: _warnings
333
- });
353
+ if (overlayWarningsSetting) {
354
+ var warningsToDisplay =
355
+ typeof overlayWarningsSetting === "function"
356
+ ? _warnings.filter(overlayWarningsSetting)
357
+ : _warnings;
358
+ if (warningsToDisplay.length) {
359
+ overlay.send({
360
+ type: "BUILD_ERROR",
361
+ level: "warning",
362
+ messages: _warnings
363
+ });
364
+ }
334
365
  }
335
366
  if (params && params.preventReloading) {
336
367
  return;
@@ -352,16 +383,22 @@ var onSocketMessage = {
352
383
  for (var i = 0; i < printableErrors.length; i++) {
353
384
  log.error(printableErrors[i]);
354
385
  }
355
- var needShowOverlayForErrors =
386
+ var overlayErrorsSettings =
356
387
  typeof options.overlay === "boolean"
357
388
  ? options.overlay
358
389
  : options.overlay && options.overlay.errors;
359
- if (needShowOverlayForErrors) {
360
- overlay.send({
361
- type: "BUILD_ERROR",
362
- level: "error",
363
- messages: _errors
364
- });
390
+ if (overlayErrorsSettings) {
391
+ var errorsToDisplay =
392
+ typeof overlayErrorsSettings === "function"
393
+ ? _errors.filter(overlayErrorsSettings)
394
+ : _errors;
395
+ if (errorsToDisplay.length) {
396
+ overlay.send({
397
+ type: "BUILD_ERROR",
398
+ level: "error",
399
+ messages: _errors
400
+ });
401
+ }
365
402
  }
366
403
  },
367
404
  /**
package/dist/ansiHTML.js CHANGED
@@ -117,8 +117,8 @@ function ansiHTML(text) {
117
117
  this.splice(0, count);
118
118
  }
119
119
  });
120
- let seq;
121
120
  let rep = "";
121
+ let seq;
122
122
  while ((seq = match[0])) {
123
123
  match.advance(1);
124
124
  rep += applySeq(seq);
package/dist/server.d.ts CHANGED
@@ -7,6 +7,7 @@ import type { FSWatcher } from "chokidar";
7
7
  import WebpackDevServer from "webpack-dev-server";
8
8
  import type { DevServer, ResolvedDevServer } from "./config";
9
9
  export declare class RspackDevServer extends WebpackDevServer {
10
+ static getFreePort: (port: string, host: string) => Promise<any>;
10
11
  /**
11
12
  * resolved after `normalizedOptions`
12
13
  */
package/dist/server.js CHANGED
@@ -21,6 +21,28 @@ const webpack_dev_server_1 = __importDefault(require("webpack-dev-server"));
21
21
  const package_json_1 = require("../package.json");
22
22
  const patch_1 = require("./patch");
23
23
  (0, patch_1.applyDevServerPatch)();
24
+ const encodeOverlaySettings = (setting) => typeof setting === "function"
25
+ ? encodeURIComponent(setting.toString())
26
+ : setting;
27
+ const getFreePort = async function getFreePort(port, host) {
28
+ if (typeof port !== "undefined" && port !== null && port !== "auto") {
29
+ return port;
30
+ }
31
+ const pRetry = require("p-retry");
32
+ const getPort = require("webpack-dev-server/lib/getPort");
33
+ const basePort = typeof process.env.WEBPACK_DEV_SERVER_BASE_PORT !== "undefined"
34
+ ? Number.parseInt(process.env.WEBPACK_DEV_SERVER_BASE_PORT, 10)
35
+ : 8080;
36
+ // Try to find unused port and listen on it for 3 times,
37
+ // if port is not specified in options.
38
+ const defaultPortRetry = typeof process.env.WEBPACK_DEV_SERVER_PORT_RETRY !== "undefined"
39
+ ? Number.parseInt(process.env.WEBPACK_DEV_SERVER_PORT_RETRY, 10)
40
+ : 3;
41
+ return pRetry(() => getPort(basePort, host), {
42
+ retries: defaultPortRetry
43
+ });
44
+ };
45
+ webpack_dev_server_1.default.getFreePort = getFreePort;
24
46
  class RspackDevServer extends webpack_dev_server_1.default {
25
47
  constructor(options, compiler) {
26
48
  super(options, compiler);
@@ -279,9 +301,15 @@ class RspackDevServer extends webpack_dev_server_1.default {
279
301
  searchParams.set("progress", String(client.progress));
280
302
  }
281
303
  if (typeof client.overlay !== "undefined") {
282
- searchParams.set("overlay", typeof client.overlay === "boolean"
304
+ const overlayString = typeof client.overlay === "boolean"
283
305
  ? String(client.overlay)
284
- : JSON.stringify(client.overlay));
306
+ : JSON.stringify({
307
+ ...client.overlay,
308
+ errors: encodeOverlaySettings(client.overlay.errors),
309
+ warnings: encodeOverlaySettings(client.overlay.warnings),
310
+ runtimeErrors: encodeOverlaySettings(client.overlay.runtimeErrors)
311
+ });
312
+ searchParams.set("overlay", overlayString);
285
313
  }
286
314
  if (typeof client.reconnect !== "undefined") {
287
315
  searchParams.set("reconnect", typeof client.reconnect === "number"
@@ -312,5 +340,6 @@ class RspackDevServer extends webpack_dev_server_1.default {
312
340
  }
313
341
  }
314
342
  }
343
+ RspackDevServer.getFreePort = getFreePort;
315
344
  RspackDevServer.version = package_json_1.version;
316
345
  exports.RspackDevServer = RspackDevServer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rspack/dev-server",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "license": "MIT",
5
5
  "description": "Development server for rspack",
6
6
  "main": "./dist/index.js",
@@ -29,15 +29,27 @@
29
29
  "directory": "packages/rspack-dev-server"
30
30
  },
31
31
  "devDependencies": {
32
+ "@jest/test-sequencer": "^29.7.0",
32
33
  "@rspack/plugin-react-refresh": "1.0.0",
33
34
  "@types/connect-history-api-fallback": "1.5.4",
34
35
  "@types/express": "4.17.21",
35
36
  "@types/mime-types": "2.1.4",
36
37
  "@types/ws": "8.5.10",
38
+ "css-loader": "^6.11.0",
39
+ "graceful-fs": "4.2.10",
40
+ "http-proxy": "^1.18.1",
37
41
  "jest-serializer-path": "^0.1.15",
42
+ "prettier": "3.2.5",
43
+ "puppeteer": "^23.2.2",
44
+ "require-from-string": "^2.0.2",
45
+ "sockjs-client": "^1.6.1",
46
+ "style-loader": "^3.3.3",
47
+ "supertest": "^6.1.3",
48
+ "tcp-port-used": "^1.0.2",
38
49
  "typescript": "5.0.2",
39
- "@rspack/dev-server": "1.0.3",
40
- "@rspack/core": "1.0.3"
50
+ "wait-for-expect": "^3.0.2",
51
+ "@rspack/dev-server": "1.0.5",
52
+ "@rspack/core": "1.0.5"
41
53
  },
42
54
  "dependencies": {
43
55
  "chokidar": "^3.6.0",
@@ -45,6 +57,7 @@
45
57
  "express": "^4.19.2",
46
58
  "http-proxy-middleware": "^2.0.6",
47
59
  "mime-types": "^2.1.35",
60
+ "p-retry": "4.6.2",
48
61
  "webpack-dev-middleware": "^7.4.2",
49
62
  "webpack-dev-server": "5.0.4",
50
63
  "ws": "^8.16.0"
@@ -55,7 +68,8 @@
55
68
  "scripts": {
56
69
  "build": "tsc -b ./tsconfig.build.json",
57
70
  "dev": "tsc -w -b ./tsconfig.build.json",
58
- "test": "rimraf .test-temp && cross-env NO_COLOR=1 node --expose-gc --max-old-space-size=8192 --experimental-vm-modules ../../node_modules/jest-cli/bin/jest --colors",
71
+ "test:install": "cross-env ./node_modules/.bin/puppeteer browsers install chrome",
72
+ "test": "pnpm run test:install && cross-env NO_COLOR=1 node --expose-gc --max-old-space-size=8192 --experimental-vm-modules ../../node_modules/jest-cli/bin/jest --colors",
59
73
  "api-extractor": "api-extractor run --verbose",
60
74
  "api-extractor:ci": "api-extractor run --verbose || diff temp/api.md etc/api.md"
61
75
  }