@rsbuild/core 1.3.15 → 1.3.16

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.
@@ -1,19 +1,19 @@
1
1
  (() => {
2
2
  var __webpack_modules__ = {
3
- 584: (module, __unused_webpack_exports, __nccwpck_require__) => {
3
+ 777: (module, __unused_webpack_exports, __nccwpck_require__) => {
4
4
  "use strict";
5
- const WebSocket = __nccwpck_require__(939);
6
- WebSocket.createWebSocketStream = __nccwpck_require__(410);
7
- WebSocket.Server = __nccwpck_require__(599);
8
- WebSocket.Receiver = __nccwpck_require__(443);
9
- WebSocket.Sender = __nccwpck_require__(799);
5
+ const WebSocket = __nccwpck_require__(590);
6
+ WebSocket.createWebSocketStream = __nccwpck_require__(605);
7
+ WebSocket.Server = __nccwpck_require__(920);
8
+ WebSocket.Receiver = __nccwpck_require__(196);
9
+ WebSocket.Sender = __nccwpck_require__(780);
10
10
  WebSocket.WebSocket = WebSocket;
11
11
  WebSocket.WebSocketServer = WebSocket.Server;
12
12
  module.exports = WebSocket;
13
13
  },
14
- 845: (module, __unused_webpack_exports, __nccwpck_require__) => {
14
+ 468: (module, __unused_webpack_exports, __nccwpck_require__) => {
15
15
  "use strict";
16
- const { EMPTY_BUFFER } = __nccwpck_require__(617);
16
+ const { EMPTY_BUFFER } = __nccwpck_require__(656);
17
17
  const FastBuffer = Buffer[Symbol.species];
18
18
  function concat(list, totalLength) {
19
19
  if (list.length === 0) return EMPTY_BUFFER;
@@ -87,7 +87,7 @@
87
87
  } catch (e) {}
88
88
  }
89
89
  },
90
- 617: (module) => {
90
+ 656: (module) => {
91
91
  "use strict";
92
92
  const BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
93
93
  const hasBlob = typeof Blob !== "undefined";
@@ -104,9 +104,9 @@
104
104
  NOOP: () => {},
105
105
  };
106
106
  },
107
- 504: (module, __unused_webpack_exports, __nccwpck_require__) => {
107
+ 24: (module, __unused_webpack_exports, __nccwpck_require__) => {
108
108
  "use strict";
109
- const { kForOnEventAttribute, kListener } = __nccwpck_require__(617);
109
+ const { kForOnEventAttribute, kListener } = __nccwpck_require__(656);
110
110
  const kCode = Symbol("kCode");
111
111
  const kData = Symbol("kData");
112
112
  const kError = Symbol("kError");
@@ -268,9 +268,9 @@
268
268
  }
269
269
  }
270
270
  },
271
- 881: (module, __unused_webpack_exports, __nccwpck_require__) => {
271
+ 992: (module, __unused_webpack_exports, __nccwpck_require__) => {
272
272
  "use strict";
273
- const { tokenChars } = __nccwpck_require__(521);
273
+ const { tokenChars } = __nccwpck_require__(674);
274
274
  function push(dest, name, elem) {
275
275
  if (dest[name] === undefined) dest[name] = [elem];
276
276
  else dest[name].push(elem);
@@ -426,7 +426,7 @@
426
426
  }
427
427
  module.exports = { format, parse };
428
428
  },
429
- 36: (module) => {
429
+ 13: (module) => {
430
430
  "use strict";
431
431
  const kDone = Symbol("kDone");
432
432
  const kRun = Symbol("kRun");
@@ -455,12 +455,12 @@
455
455
  }
456
456
  module.exports = Limiter;
457
457
  },
458
- 58: (module, __unused_webpack_exports, __nccwpck_require__) => {
458
+ 245: (module, __unused_webpack_exports, __nccwpck_require__) => {
459
459
  "use strict";
460
460
  const zlib = __nccwpck_require__(106);
461
- const bufferUtil = __nccwpck_require__(845);
462
- const Limiter = __nccwpck_require__(36);
463
- const { kStatusCode } = __nccwpck_require__(617);
461
+ const bufferUtil = __nccwpck_require__(468);
462
+ const Limiter = __nccwpck_require__(13);
463
+ const { kStatusCode } = __nccwpck_require__(656);
464
464
  const FastBuffer = Buffer[Symbol.species];
465
465
  const TRAILER = Buffer.from([0, 0, 255, 255]);
466
466
  const kPerMessageDeflate = Symbol("permessage-deflate");
@@ -776,18 +776,22 @@
776
776
  }
777
777
  function inflateOnError(err) {
778
778
  this[kPerMessageDeflate]._inflate = null;
779
+ if (this[kError]) {
780
+ this[kCallback](this[kError]);
781
+ return;
782
+ }
779
783
  err[kStatusCode] = 1007;
780
784
  this[kCallback](err);
781
785
  }
782
786
  },
783
- 443: (module, __unused_webpack_exports, __nccwpck_require__) => {
787
+ 196: (module, __unused_webpack_exports, __nccwpck_require__) => {
784
788
  "use strict";
785
789
  const { Writable } = __nccwpck_require__(203);
786
- const PerMessageDeflate = __nccwpck_require__(58);
790
+ const PerMessageDeflate = __nccwpck_require__(245);
787
791
  const { BINARY_TYPES, EMPTY_BUFFER, kStatusCode, kWebSocket } =
788
- __nccwpck_require__(617);
789
- const { concat, toArrayBuffer, unmask } = __nccwpck_require__(845);
790
- const { isValidStatusCode, isValidUTF8 } = __nccwpck_require__(521);
792
+ __nccwpck_require__(656);
793
+ const { concat, toArrayBuffer, unmask } = __nccwpck_require__(468);
794
+ const { isValidStatusCode, isValidUTF8 } = __nccwpck_require__(674);
791
795
  const FastBuffer = Buffer[Symbol.species];
792
796
  const GET_INFO = 0;
793
797
  const GET_PAYLOAD_LENGTH_16 = 1;
@@ -1284,14 +1288,14 @@
1284
1288
  }
1285
1289
  module.exports = Receiver;
1286
1290
  },
1287
- 799: (module, __unused_webpack_exports, __nccwpck_require__) => {
1291
+ 780: (module, __unused_webpack_exports, __nccwpck_require__) => {
1288
1292
  "use strict";
1289
1293
  const { Duplex } = __nccwpck_require__(203);
1290
1294
  const { randomFillSync } = __nccwpck_require__(982);
1291
- const PerMessageDeflate = __nccwpck_require__(58);
1292
- const { EMPTY_BUFFER, kWebSocket, NOOP } = __nccwpck_require__(617);
1293
- const { isBlob, isValidStatusCode } = __nccwpck_require__(521);
1294
- const { mask: applyMask, toBuffer } = __nccwpck_require__(845);
1295
+ const PerMessageDeflate = __nccwpck_require__(245);
1296
+ const { EMPTY_BUFFER, kWebSocket, NOOP } = __nccwpck_require__(656);
1297
+ const { isBlob, isValidStatusCode } = __nccwpck_require__(674);
1298
+ const { mask: applyMask, toBuffer } = __nccwpck_require__(468);
1295
1299
  const kByteLength = Symbol("kByteLength");
1296
1300
  const maskBuffer = Buffer.alloc(4);
1297
1301
  const RANDOM_POOL_SIZE = 8 * 1024;
@@ -1660,9 +1664,9 @@
1660
1664
  sender.onerror(err);
1661
1665
  }
1662
1666
  },
1663
- 410: (module, __unused_webpack_exports, __nccwpck_require__) => {
1667
+ 605: (module, __unused_webpack_exports, __nccwpck_require__) => {
1664
1668
  "use strict";
1665
- const WebSocket = __nccwpck_require__(939);
1669
+ const WebSocket = __nccwpck_require__(590);
1666
1670
  const { Duplex } = __nccwpck_require__(203);
1667
1671
  function emitClose(stream) {
1668
1672
  stream.emit("close");
@@ -1757,9 +1761,9 @@
1757
1761
  }
1758
1762
  module.exports = createWebSocketStream;
1759
1763
  },
1760
- 474: (module, __unused_webpack_exports, __nccwpck_require__) => {
1764
+ 907: (module, __unused_webpack_exports, __nccwpck_require__) => {
1761
1765
  "use strict";
1762
- const { tokenChars } = __nccwpck_require__(521);
1766
+ const { tokenChars } = __nccwpck_require__(674);
1763
1767
  function parse(header) {
1764
1768
  const protocols = new Set();
1765
1769
  let start = -1;
@@ -1800,10 +1804,10 @@
1800
1804
  }
1801
1805
  module.exports = { parse };
1802
1806
  },
1803
- 521: (module, __unused_webpack_exports, __nccwpck_require__) => {
1807
+ 674: (module, __unused_webpack_exports, __nccwpck_require__) => {
1804
1808
  "use strict";
1805
1809
  const { isUtf8 } = __nccwpck_require__(181);
1806
- const { hasBlob } = __nccwpck_require__(617);
1810
+ const { hasBlob } = __nccwpck_require__(656);
1807
1811
  const tokenChars = [
1808
1812
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1809
1813
  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,
@@ -1897,17 +1901,17 @@
1897
1901
  } catch (e) {}
1898
1902
  }
1899
1903
  },
1900
- 599: (module, __unused_webpack_exports, __nccwpck_require__) => {
1904
+ 920: (module, __unused_webpack_exports, __nccwpck_require__) => {
1901
1905
  "use strict";
1902
1906
  const EventEmitter = __nccwpck_require__(434);
1903
1907
  const http = __nccwpck_require__(611);
1904
1908
  const { Duplex } = __nccwpck_require__(203);
1905
1909
  const { createHash } = __nccwpck_require__(982);
1906
- const extension = __nccwpck_require__(881);
1907
- const PerMessageDeflate = __nccwpck_require__(58);
1908
- const subprotocol = __nccwpck_require__(474);
1909
- const WebSocket = __nccwpck_require__(939);
1910
- const { GUID, kWebSocket } = __nccwpck_require__(617);
1910
+ const extension = __nccwpck_require__(992);
1911
+ const PerMessageDeflate = __nccwpck_require__(245);
1912
+ const subprotocol = __nccwpck_require__(907);
1913
+ const WebSocket = __nccwpck_require__(590);
1914
+ const { GUID, kWebSocket } = __nccwpck_require__(656);
1911
1915
  const keyRegex = /^[+/0-9A-Za-z]{22}==$/;
1912
1916
  const RUNNING = 0;
1913
1917
  const CLOSING = 1;
@@ -2263,7 +2267,7 @@
2263
2267
  }
2264
2268
  }
2265
2269
  },
2266
- 939: (module, __unused_webpack_exports, __nccwpck_require__) => {
2270
+ 590: (module, __unused_webpack_exports, __nccwpck_require__) => {
2267
2271
  "use strict";
2268
2272
  const EventEmitter = __nccwpck_require__(434);
2269
2273
  const https = __nccwpck_require__(692);
@@ -2273,10 +2277,10 @@
2273
2277
  const { randomBytes, createHash } = __nccwpck_require__(982);
2274
2278
  const { Duplex, Readable } = __nccwpck_require__(203);
2275
2279
  const { URL } = __nccwpck_require__(16);
2276
- const PerMessageDeflate = __nccwpck_require__(58);
2277
- const Receiver = __nccwpck_require__(443);
2278
- const Sender = __nccwpck_require__(799);
2279
- const { isBlob } = __nccwpck_require__(521);
2280
+ const PerMessageDeflate = __nccwpck_require__(245);
2281
+ const Receiver = __nccwpck_require__(196);
2282
+ const Sender = __nccwpck_require__(780);
2283
+ const { isBlob } = __nccwpck_require__(674);
2280
2284
  const {
2281
2285
  BINARY_TYPES,
2282
2286
  EMPTY_BUFFER,
@@ -2286,12 +2290,12 @@
2286
2290
  kStatusCode,
2287
2291
  kWebSocket,
2288
2292
  NOOP,
2289
- } = __nccwpck_require__(617);
2293
+ } = __nccwpck_require__(656);
2290
2294
  const {
2291
2295
  EventTarget: { addEventListener, removeEventListener },
2292
- } = __nccwpck_require__(504);
2293
- const { format, parse } = __nccwpck_require__(881);
2294
- const { toBuffer } = __nccwpck_require__(845);
2296
+ } = __nccwpck_require__(24);
2297
+ const { format, parse } = __nccwpck_require__(992);
2298
+ const { toBuffer } = __nccwpck_require__(468);
2295
2299
  const closeTimeout = 30 * 1e3;
2296
2300
  const kAborted = Symbol("kAborted");
2297
2301
  const protocolVersions = [8, 13];
@@ -2673,7 +2677,7 @@
2673
2677
  if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) {
2674
2678
  invalidUrlMessage =
2675
2679
  'The URL\'s protocol must be one of "ws:", "wss:", ' +
2676
- '"http:", "https", or "ws+unix:"';
2680
+ '"http:", "https:", or "ws+unix:"';
2677
2681
  } else if (isIpcUrl && !parsedUrl.pathname) {
2678
2682
  invalidUrlMessage = "The URL's pathname is empty";
2679
2683
  } else if (parsedUrl.hash) {
@@ -3149,6 +3153,6 @@
3149
3153
  }
3150
3154
  if (typeof __nccwpck_require__ !== "undefined")
3151
3155
  __nccwpck_require__.ab = __dirname + "/";
3152
- var __webpack_exports__ = __nccwpck_require__(584);
3156
+ var __webpack_exports__ = __nccwpck_require__(777);
3153
3157
  module.exports = __webpack_exports__;
3154
3158
  })();
@@ -1 +1 @@
1
- {"name":"ws","author":"Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)","version":"8.18.1","license":"MIT","types":"index.d.ts","type":"commonjs"}
1
+ {"name":"ws","author":"Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)","version":"8.18.2","license":"MIT","types":"index.d.ts","type":"commonjs"}
package/dist/index.cjs CHANGED
@@ -2258,7 +2258,7 @@ for(var __webpack_i__ in (()=>{
2258
2258
  async function createContext(options, userConfig) {
2259
2259
  let { cwd } = options, rootPath = userConfig.root ? getAbsolutePath(cwd, userConfig.root) : cwd, rsbuildConfig = await withDefaultConfig(rootPath, userConfig), cachePath = (0, external_node_path_namespaceObject.join)(rootPath, 'node_modules', '.cache'), specifiedEnvironments = options.environment && options.environment.length > 0 ? options.environment : void 0;
2260
2260
  return {
2261
- version: "1.3.15",
2261
+ version: "1.3.16",
2262
2262
  rootPath,
2263
2263
  distPath: '',
2264
2264
  cachePath,
@@ -2566,15 +2566,14 @@ for(var __webpack_i__ in (()=>{
2566
2566
  ]), chain.context(api.context.rootPath), chain.mode(environment.config.mode), chain.infrastructureLogging({
2567
2567
  level: 'error'
2568
2568
  }), chain.watchOptions({
2569
- ignored: /[\\/](?:\.git|node_modules)[\\/]/,
2570
2569
  aggregateTimeout: 0
2571
2570
  }), chain.performance.hints(!1), chain.module.parser.merge({
2572
2571
  javascript: {
2573
2572
  exportsPresence: 'error'
2574
2573
  }
2575
- }), isDev && config.dev.hmr && 'web' === target && chain.plugin(CHAIN_ID.PLUGIN.HMR).use(bundler.HotModuleReplacementPlugin), 'development' === env && chain.output.devtoolModuleFilenameTemplate((info)=>toPosixPath(info.absoluteResourcePath)), process.env.RSPACK_CONFIG_VALIDATE ||= 'loose-unrecognized-keys', process.env.WATCHPACK_WATCHER_LIMIT ||= '20', process.env.EXPERIMENTAL_RSPACK_INCREMENTAL && chain.experiments({
2574
+ }), isDev && config.dev.hmr && 'web' === target && chain.plugin(CHAIN_ID.PLUGIN.HMR).use(bundler.HotModuleReplacementPlugin), 'development' === env && chain.output.devtoolModuleFilenameTemplate((info)=>toPosixPath(info.absoluteResourcePath)), process.env.RSPACK_CONFIG_VALIDATE ||= 'loose-unrecognized-keys', process.env.WATCHPACK_WATCHER_LIMIT ||= '20', 'rspack' === api.context.bundlerType && chain.experiments({
2576
2575
  ...chain.get('experiments'),
2577
- incremental: isDev
2576
+ incremental: !0
2578
2577
  });
2579
2578
  });
2580
2579
  }
@@ -3663,6 +3662,7 @@ for(var __webpack_i__ in (()=>{
3663
3662
  }, pluginManifest = ()=>({
3664
3663
  name: 'rsbuild:manifest',
3665
3664
  setup (api) {
3665
+ let manifestFilenames = new Map();
3666
3666
  api.modifyBundlerChain(async (chain, { CHAIN_ID, environment, isDev })=>{
3667
3667
  let { output: { manifest }, dev: { writeToDisk } } = environment.config;
3668
3668
  if (!1 === manifest) return;
@@ -3678,7 +3678,7 @@ for(var __webpack_i__ in (()=>{
3678
3678
  ...manifest
3679
3679
  };
3680
3680
  }(manifest), { RspackManifestPlugin } = await Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "../../compiled/rspack-manifest-plugin/index.js")), { htmlPaths } = environment, filter = manifestOptions.filter ?? ((file)=>!file.name.endsWith('.LICENSE.txt'));
3681
- chain.plugin(CHAIN_ID.PLUGIN.MANIFEST).use(RspackManifestPlugin, [
3681
+ manifestFilenames.set(environment.name, manifestOptions.filename), chain.plugin(CHAIN_ID.PLUGIN.MANIFEST).use(RspackManifestPlugin, [
3682
3682
  {
3683
3683
  fileName: manifestOptions.filename,
3684
3684
  filter,
@@ -3686,6 +3686,10 @@ for(var __webpack_i__ in (()=>{
3686
3686
  generate: generateManifest(htmlPaths, manifestOptions, environment)
3687
3687
  }
3688
3688
  ]);
3689
+ }), api.onAfterCreateCompiler(()=>{
3690
+ if (manifestFilenames.size <= 1) return void manifestFilenames.clear();
3691
+ let environmentNames = Array.from(manifestFilenames.keys()), filenames = Array.from(manifestFilenames.values());
3692
+ new Set(filenames).size !== filenames.length && rslog_index_js_namespaceObject.logger.warn(`[rsbuild:manifest] The \`manifest.filename\` option must be unique when there are multiple environments (${environmentNames.join(', ')}), otherwise the manifest file will be overwritten.`), manifestFilenames.clear();
3689
3693
  });
3690
3694
  }
3691
3695
  });
@@ -5333,14 +5337,7 @@ throw new Error('Failed to load Node.js addon: "${name}"\\n' + error);
5333
5337
  29,
5334
5338
  39,
5335
5339
  49
5336
- ], server_ansiHTML = function(text) {
5337
- let ansiCodes = [], ret = text.replace(/\x1B\[([0-9;]+)m/g, (_match, sequences)=>{
5338
- let style = '';
5339
- for (let seq of sequences.split(';'))styles[seq] && (style += `${styles[seq]};`);
5340
- return style ? (ansiCodes.push(sequences), `<span style="${style}">`) : closeCode.includes(Number(sequences)) && ansiCodes.length > 0 ? (ansiCodes.pop(), '</span>') : '';
5341
- });
5342
- return ansiCodes.length > 0 && (ret += Array(ansiCodes.length + 1).join('</span>')), ret;
5343
- };
5340
+ ];
5344
5341
  function socketServer_define_property(obj, key, value) {
5345
5342
  return key in obj ? Object.defineProperty(obj, key, {
5346
5343
  value: value,
@@ -5468,7 +5465,14 @@ throw new Error('Failed to load Node.js addon: "${name}"\\n' + error);
5468
5465
  text: formattedErrors,
5469
5466
  html: function(errors, root) {
5470
5467
  let htmlItems = errors.map((item)=>{
5471
- var text, text1 = server_ansiHTML((text = item) ? text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;') : ''), root1 = root;
5468
+ var text, text1 = function(text) {
5469
+ let ansiCodes = [], ret = text.replace(/\x1B\[([0-9;]+)m/g, (_match, sequences)=>{
5470
+ let style = '';
5471
+ for (let seq of sequences.split(';'))styles[seq] && (style += `${styles[seq]};`);
5472
+ return style ? (ansiCodes.push(sequences), `<span style="${style}">`) : closeCode.includes(Number(sequences)) && ansiCodes.length > 0 ? (ansiCodes.pop(), '</span>') : '';
5473
+ });
5474
+ return ansiCodes.length > 0 && (ret += Array(ansiCodes.length + 1).join('</span>')), ret;
5475
+ }((text = item) ? text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;') : ''), root1 = root;
5472
5476
  let pathRegex = /(?:\.\.?[\/\\]|[a-zA-Z]:\\|\/)[^:]*:\d+:\d+/g, urlRegex = /(https?:\/\/(?:[\w-]+\.)+[a-z0-9](?:[\w-.~:/?#[\]@!$&'*+,;=])*)/gi;
5473
5477
  return text1.split('\n').map((line)=>{
5474
5478
  let replacedLine = line.replace(pathRegex, (file)=>{
@@ -7014,7 +7018,7 @@ throw new Error('Failed to load Node.js addon: "${name}"\\n' + error);
7014
7018
  handler: (chain, { target, environment })=>{
7015
7019
  if (descriptor.targets && !descriptor.targets.includes(target) || descriptor.environments && !descriptor.environments.includes(environment.name)) return;
7016
7020
  let rule = chain.module.rule(id);
7017
- descriptor.test && rule.test(descriptor.test), descriptor.resourceQuery && rule.resourceQuery(descriptor.resourceQuery), descriptor.layer && rule.layer(descriptor.layer), descriptor.issuerLayer && rule.issuerLayer(descriptor.issuerLayer), descriptor.issuer && rule.issuer(descriptor.issuer), descriptor.with && rule.with(descriptor.with);
7021
+ descriptor.test && rule.test(descriptor.test), descriptor.resourceQuery && rule.resourceQuery(descriptor.resourceQuery), descriptor.layer && rule.layer(descriptor.layer), descriptor.issuerLayer && rule.issuerLayer(descriptor.issuerLayer), descriptor.issuer && rule.issuer(descriptor.issuer), descriptor.with && rule.with(descriptor.with), descriptor.mimetype && rule.mimetype(descriptor.mimetype), descriptor.enforce && rule.enforce(descriptor.enforce);
7018
7022
  let loaderName = descriptor.raw ? 'transformRawLoader.mjs' : 'transformLoader.mjs', loaderPath = (0, external_node_path_namespaceObject.join)(LOADER_PATH, loaderName);
7019
7023
  rule.use(id).loader(loaderPath).options({
7020
7024
  id,
@@ -7523,11 +7527,11 @@ ${section.body}` : section.body).join("\n\n"));
7523
7527
  }
7524
7528
  process.title = 'rsbuild-node';
7525
7529
  let { npm_execpath } = process.env;
7526
- (!npm_execpath || npm_execpath.includes('npx-cli.js') || npm_execpath.includes('.bun')) && console.log(), rslog_index_js_namespaceObject.logger.greet(` Rsbuild v1.3.15\n`);
7530
+ (!npm_execpath || npm_execpath.includes('npx-cli.js') || npm_execpath.includes('.bun')) && console.log(), rslog_index_js_namespaceObject.logger.greet(` Rsbuild v1.3.16\n`);
7527
7531
  try {
7528
7532
  !function() {
7529
7533
  let cli = cac_dist('rsbuild');
7530
- cli.help(), cli.version("1.3.15"), applyCommonOptions(cli);
7534
+ cli.help(), cli.version("1.3.16"), applyCommonOptions(cli);
7531
7535
  let devCommand = cli.command('', 'starting the dev server').alias('dev'), buildCommand = cli.command('build', 'build the app for production'), previewCommand = cli.command('preview', 'preview the production build locally'), inspectCommand = cli.command('inspect', 'inspect the Rspack and Rsbuild configs');
7532
7536
  applyServerOptions(devCommand), applyServerOptions(previewCommand), devCommand.action(async (options)=>{
7533
7537
  try {
@@ -7578,7 +7582,7 @@ ${section.body}` : section.body).join("\n\n"));
7578
7582
  rslog_index_js_namespaceObject.logger.error('Failed to start Rsbuild CLI.'), rslog_index_js_namespaceObject.logger.error(err);
7579
7583
  }
7580
7584
  }
7581
- let src_version = "1.3.15";
7585
+ let src_version = "1.3.16";
7582
7586
  })(), exports.PLUGIN_CSS_NAME = __webpack_exports__.PLUGIN_CSS_NAME, exports.PLUGIN_SWC_NAME = __webpack_exports__.PLUGIN_SWC_NAME, exports.createRsbuild = __webpack_exports__.createRsbuild, exports.defineConfig = __webpack_exports__.defineConfig, exports.ensureAssetPrefix = __webpack_exports__.ensureAssetPrefix, exports.loadConfig = __webpack_exports__.loadConfig, exports.loadEnv = __webpack_exports__.loadEnv, exports.logger = __webpack_exports__.logger, exports.mergeRsbuildConfig = __webpack_exports__.mergeRsbuildConfig, exports.rspack = __webpack_exports__.rspack, exports.runCLI = __webpack_exports__.runCLI, exports.version = __webpack_exports__.version, __webpack_exports__)-1 === [
7583
7587
  "PLUGIN_CSS_NAME",
7584
7588
  "PLUGIN_SWC_NAME",
package/dist/index.js CHANGED
@@ -2117,7 +2117,7 @@ async function updateEnvironmentContext(context, configs) {
2117
2117
  async function createContext(options, userConfig) {
2118
2118
  let { cwd } = options, rootPath = userConfig.root ? getAbsolutePath(cwd, userConfig.root) : cwd, rsbuildConfig = await withDefaultConfig(rootPath, userConfig), cachePath = (0, __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.join)(rootPath, 'node_modules', '.cache'), specifiedEnvironments = options.environment && options.environment.length > 0 ? options.environment : void 0;
2119
2119
  return {
2120
- version: "1.3.15",
2120
+ version: "1.3.16",
2121
2121
  rootPath,
2122
2122
  distPath: '',
2123
2123
  cachePath,
@@ -2425,15 +2425,14 @@ let configChain_CHAIN_ID = {
2425
2425
  ]), chain.context(api.context.rootPath), chain.mode(environment.config.mode), chain.infrastructureLogging({
2426
2426
  level: 'error'
2427
2427
  }), chain.watchOptions({
2428
- ignored: /[\\/](?:\.git|node_modules)[\\/]/,
2429
2428
  aggregateTimeout: 0
2430
2429
  }), chain.performance.hints(!1), chain.module.parser.merge({
2431
2430
  javascript: {
2432
2431
  exportsPresence: 'error'
2433
2432
  }
2434
- }), isDev && config.dev.hmr && 'web' === target && chain.plugin(CHAIN_ID.PLUGIN.HMR).use(bundler.HotModuleReplacementPlugin), 'development' === env && chain.output.devtoolModuleFilenameTemplate((info)=>toPosixPath(info.absoluteResourcePath)), process.env.RSPACK_CONFIG_VALIDATE ||= 'loose-unrecognized-keys', process.env.WATCHPACK_WATCHER_LIMIT ||= '20', process.env.EXPERIMENTAL_RSPACK_INCREMENTAL && chain.experiments({
2433
+ }), isDev && config.dev.hmr && 'web' === target && chain.plugin(CHAIN_ID.PLUGIN.HMR).use(bundler.HotModuleReplacementPlugin), 'development' === env && chain.output.devtoolModuleFilenameTemplate((info)=>toPosixPath(info.absoluteResourcePath)), process.env.RSPACK_CONFIG_VALIDATE ||= 'loose-unrecognized-keys', process.env.WATCHPACK_WATCHER_LIMIT ||= '20', 'rspack' === api.context.bundlerType && chain.experiments({
2435
2434
  ...chain.get('experiments'),
2436
- incremental: isDev
2435
+ incremental: !0
2437
2436
  });
2438
2437
  });
2439
2438
  }
@@ -3518,6 +3517,7 @@ let generateManifest = (htmlPaths, manifestOptions, environment)=>(_seed, files)
3518
3517
  }, pluginManifest = ()=>({
3519
3518
  name: 'rsbuild:manifest',
3520
3519
  setup (api) {
3520
+ let manifestFilenames = new Map();
3521
3521
  api.modifyBundlerChain(async (chain, { CHAIN_ID, environment, isDev })=>{
3522
3522
  let { output: { manifest }, dev: { writeToDisk } } = environment.config;
3523
3523
  if (!1 === manifest) return;
@@ -3533,7 +3533,7 @@ let generateManifest = (htmlPaths, manifestOptions, environment)=>(_seed, files)
3533
3533
  ...manifest
3534
3534
  };
3535
3535
  }(manifest), { RspackManifestPlugin } = await import("../compiled/rspack-manifest-plugin/index.js"), { htmlPaths } = environment, filter = manifestOptions.filter ?? ((file)=>!file.name.endsWith('.LICENSE.txt'));
3536
- chain.plugin(CHAIN_ID.PLUGIN.MANIFEST).use(RspackManifestPlugin, [
3536
+ manifestFilenames.set(environment.name, manifestOptions.filename), chain.plugin(CHAIN_ID.PLUGIN.MANIFEST).use(RspackManifestPlugin, [
3537
3537
  {
3538
3538
  fileName: manifestOptions.filename,
3539
3539
  filter,
@@ -3541,6 +3541,10 @@ let generateManifest = (htmlPaths, manifestOptions, environment)=>(_seed, files)
3541
3541
  generate: generateManifest(htmlPaths, manifestOptions, environment)
3542
3542
  }
3543
3543
  ]);
3544
+ }), api.onAfterCreateCompiler(()=>{
3545
+ if (manifestFilenames.size <= 1) return void manifestFilenames.clear();
3546
+ let environmentNames = Array.from(manifestFilenames.keys()), filenames = Array.from(manifestFilenames.values());
3547
+ new Set(filenames).size !== filenames.length && __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger.warn(`[rsbuild:manifest] The \`manifest.filename\` option must be unique when there are multiple environments (${environmentNames.join(', ')}), otherwise the manifest file will be overwritten.`), manifestFilenames.clear();
3544
3548
  });
3545
3549
  }
3546
3550
  });
@@ -5176,14 +5180,7 @@ let closeCode = [
5176
5180
  29,
5177
5181
  39,
5178
5182
  49
5179
- ], server_ansiHTML = function(text) {
5180
- let ansiCodes = [], ret = text.replace(/\x1B\[([0-9;]+)m/g, (_match, sequences)=>{
5181
- let style = '';
5182
- for (let seq of sequences.split(';'))styles[seq] && (style += `${styles[seq]};`);
5183
- return style ? (ansiCodes.push(sequences), `<span style="${style}">`) : closeCode.includes(Number(sequences)) && ansiCodes.length > 0 ? (ansiCodes.pop(), '</span>') : '';
5184
- });
5185
- return ansiCodes.length > 0 && (ret += Array(ansiCodes.length + 1).join('</span>')), ret;
5186
- };
5183
+ ];
5187
5184
  function socketServer_define_property(obj, key, value) {
5188
5185
  return key in obj ? Object.defineProperty(obj, key, {
5189
5186
  value: value,
@@ -5310,7 +5307,14 @@ class SocketServer {
5310
5307
  text: formattedErrors,
5311
5308
  html: function(errors, root) {
5312
5309
  let htmlItems = errors.map((item)=>{
5313
- var text = server_ansiHTML(item ? item.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;') : ''), root1 = root;
5310
+ var text = function(text) {
5311
+ let ansiCodes = [], ret = text.replace(/\x1B\[([0-9;]+)m/g, (_match, sequences)=>{
5312
+ let style = '';
5313
+ for (let seq of sequences.split(';'))styles[seq] && (style += `${styles[seq]};`);
5314
+ return style ? (ansiCodes.push(sequences), `<span style="${style}">`) : closeCode.includes(Number(sequences)) && ansiCodes.length > 0 ? (ansiCodes.pop(), '</span>') : '';
5315
+ });
5316
+ return ansiCodes.length > 0 && (ret += Array(ansiCodes.length + 1).join('</span>')), ret;
5317
+ }(item ? item.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;') : ''), root1 = root;
5314
5318
  let pathRegex = /(?:\.\.?[\/\\]|[a-zA-Z]:\\|\/)[^:]*:\d+:\d+/g, urlRegex = /(https?:\/\/(?:[\w-]+\.)+[a-z0-9](?:[\w-.~:/?#[\]@!$&'*+,;=])*)/gi;
5315
5319
  return text.split('\n').map((line)=>{
5316
5320
  let replacedLine = line.replace(pathRegex, (file)=>{
@@ -6850,7 +6854,7 @@ async function createRsbuild(options = {}) {
6850
6854
  handler: (chain, { target, environment })=>{
6851
6855
  if (descriptor.targets && !descriptor.targets.includes(target) || descriptor.environments && !descriptor.environments.includes(environment.name)) return;
6852
6856
  let rule = chain.module.rule(id);
6853
- descriptor.test && rule.test(descriptor.test), descriptor.resourceQuery && rule.resourceQuery(descriptor.resourceQuery), descriptor.layer && rule.layer(descriptor.layer), descriptor.issuerLayer && rule.issuerLayer(descriptor.issuerLayer), descriptor.issuer && rule.issuer(descriptor.issuer), descriptor.with && rule.with(descriptor.with);
6857
+ descriptor.test && rule.test(descriptor.test), descriptor.resourceQuery && rule.resourceQuery(descriptor.resourceQuery), descriptor.layer && rule.layer(descriptor.layer), descriptor.issuerLayer && rule.issuerLayer(descriptor.issuerLayer), descriptor.issuer && rule.issuer(descriptor.issuer), descriptor.with && rule.with(descriptor.with), descriptor.mimetype && rule.mimetype(descriptor.mimetype), descriptor.enforce && rule.enforce(descriptor.enforce);
6854
6858
  let loaderName = descriptor.raw ? 'transformRawLoader.mjs' : 'transformLoader.mjs', loaderPath = (0, __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__.join)(LOADER_PATH, loaderName);
6855
6859
  rule.use(id).loader(loaderPath).options({
6856
6860
  id,
@@ -7358,11 +7362,11 @@ async function runCLI() {
7358
7362
  }
7359
7363
  process.title = 'rsbuild-node';
7360
7364
  let { npm_execpath } = process.env;
7361
- (!npm_execpath || npm_execpath.includes('npx-cli.js') || npm_execpath.includes('.bun')) && console.log(), __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger.greet(` Rsbuild v1.3.15\n`);
7365
+ (!npm_execpath || npm_execpath.includes('npx-cli.js') || npm_execpath.includes('.bun')) && console.log(), __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger.greet(` Rsbuild v1.3.16\n`);
7362
7366
  try {
7363
7367
  !function() {
7364
7368
  let cli = cac_dist('rsbuild');
7365
- cli.help(), cli.version("1.3.15"), applyCommonOptions(cli);
7369
+ cli.help(), cli.version("1.3.16"), applyCommonOptions(cli);
7366
7370
  let devCommand = cli.command('', 'starting the dev server').alias('dev'), buildCommand = cli.command('build', 'build the app for production'), previewCommand = cli.command('preview', 'preview the production build locally'), inspectCommand = cli.command('inspect', 'inspect the Rspack and Rsbuild configs');
7367
7371
  applyServerOptions(devCommand), applyServerOptions(previewCommand), devCommand.action(async (options)=>{
7368
7372
  try {
@@ -7413,6 +7417,6 @@ async function runCLI() {
7413
7417
  __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger.error('Failed to start Rsbuild CLI.'), __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger.error(err);
7414
7418
  }
7415
7419
  }
7416
- let src_version = "1.3.15";
7420
+ let src_version = "1.3.16";
7417
7421
  var __webpack_exports__logger = __WEBPACK_EXTERNAL_MODULE__compiled_rslog_index_js_c302f6e3__.logger, __webpack_exports__rspack = __WEBPACK_EXTERNAL_MODULE__rspack_core_e0096ff7__.rspack;
7418
7422
  export { PLUGIN_CSS_NAME, PLUGIN_SWC_NAME, createRsbuild, defineConfig, ensureAssetPrefix, config_loadConfig as loadConfig, loadEnv, mergeRsbuildConfig, runCLI, src_version as version, __webpack_exports__logger as logger, __webpack_exports__rspack as rspack };
@@ -2,4 +2,3 @@
2
2
  * Converts text with ANSI color codes to HTML markup
3
3
  */
4
4
  export declare function ansiHTML(text: string): string;
5
- export default ansiHTML;
@@ -1032,9 +1032,22 @@ export type HtmlBasicTag = {
1032
1032
  children?: string;
1033
1033
  };
1034
1034
  export type HtmlTag = HtmlBasicTag & {
1035
+ /** @default false */
1035
1036
  hash?: boolean | string | ((url: string, hash: string) => string);
1037
+ /** @default true */
1036
1038
  publicPath?: boolean | string | ((url: string, publicPath: string) => string);
1039
+ /**
1040
+ * Defines the injection position of the current tag relative to existing tags
1041
+ * - When set to `true`, the tag will be inserted after existing tags
1042
+ * - When set to `false`, the tag will be inserted before existing tags
1043
+ * @default true
1044
+ */
1037
1045
  append?: boolean;
1046
+ /**
1047
+ * Specifies whether to add the current tag to the HTML `<head>` element
1048
+ * @default defaults to `true` for element types allowed in the `<head>`, otherwise `false`
1049
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head#see_also
1050
+ */
1038
1051
  head?: boolean;
1039
1052
  };
1040
1053
  export type HtmlTagContext = {
@@ -261,9 +261,8 @@ export type TransformDescriptor = {
261
261
  */
262
262
  raw?: boolean;
263
263
  /**
264
- * Used to mark the layer of the matching module.
265
- * A group of modules could be united in one layer which could then be used in
266
- * split chunks, stats or entry options.
264
+ * Marks the layer of the matching module, can be used to group a group of
265
+ * modules into one layer
267
266
  * @see https://rspack.dev/config/module#rulelayer
268
267
  */
269
268
  layer?: string;
@@ -275,15 +274,31 @@ export type TransformDescriptor = {
275
274
  issuerLayer?: string;
276
275
  /**
277
276
  * Matches all modules that match this resource, and will match against Resource
278
- * (the absolute path without query and fragment) of the module that issued the current module.
277
+ * (the absolute path without query and fragment) of the module that issued the
278
+ * current module.
279
279
  * @see https://rspack.dev/config/module#ruleissuer
280
280
  */
281
281
  issuer?: Rspack.RuleSetCondition;
282
282
  /**
283
- * `with` can be used in conjunction with [import attributes](https://github.com/tc39/proposal-import-attributes).
283
+ * Matches [import attributes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import/with)
284
284
  * @see https://rspack.dev/config/module#rulewith
285
285
  */
286
286
  with?: Record<string, Rspack.RuleSetCondition>;
287
+ /**
288
+ * Matches modules based on MIME type instead of file extension. It's primarily
289
+ * useful for data URI module (like `data:text/javascript,...`).
290
+ * @see https://rspack.dev/config/module#rulemimetype
291
+ */
292
+ mimetype?: Rspack.RuleSetCondition;
293
+ /**
294
+ * Specifies the execution order of the transform function.
295
+ * - When specified as 'pre', the transform function will execute before other
296
+ * transform functions (or Rspack loaders).
297
+ * - When specified as 'post', the transform function will execute after other
298
+ * transform functions (or Rspack loaders).
299
+ * @see https://rspack.dev/config/module#ruleenforce
300
+ */
301
+ enforce?: 'pre' | 'post';
287
302
  };
288
303
  export type TransformHook = (descriptor: TransformDescriptor, handler: TransformHandler) => void;
289
304
  export type ProcessAssetsStage = 'additional' | 'pre-process' | 'derived' | 'additions' | 'none' | 'optimize' | 'optimize-count' | 'optimize-compatibility' | 'optimize-size' | 'dev-tooling' | 'optimize-inline' | 'summarize' | 'optimize-hash' | 'optimize-transfer' | 'analyse' | 'report';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsbuild/core",
3
- "version": "1.3.15",
3
+ "version": "1.3.16",
4
4
  "description": "The Rspack-based build tool.",
5
5
  "homepage": "https://rsbuild.dev",
6
6
  "bugs": {
@@ -93,7 +93,7 @@
93
93
  "webpack": "^5.98.0",
94
94
  "webpack-bundle-analyzer": "^4.10.2",
95
95
  "webpack-merge": "6.0.1",
96
- "ws": "^8.18.1"
96
+ "ws": "^8.18.2"
97
97
  },
98
98
  "engines": {
99
99
  "node": ">=16.10.0"