@rsbuild/core 0.0.0-next-20231103091827

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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/bin/rsbuild.js +24 -0
  4. package/dist/cli/commands.d.ts +7 -0
  5. package/dist/cli/commands.js +53 -0
  6. package/dist/cli/config.d.ts +12 -0
  7. package/dist/cli/config.js +90 -0
  8. package/dist/cli/index.d.ts +6 -0
  9. package/dist/cli/index.js +48 -0
  10. package/dist/createRsbuild.d.ts +11 -0
  11. package/dist/createRsbuild.js +103 -0
  12. package/dist/index.d.ts +5 -0
  13. package/dist/index.js +36 -0
  14. package/dist/plugins/asset.d.ts +3 -0
  15. package/dist/plugins/asset.js +67 -0
  16. package/dist/plugins/assetsRetry.d.ts +2 -0
  17. package/dist/plugins/assetsRetry.js +66 -0
  18. package/dist/plugins/bundleAnalyzer.d.ts +2 -0
  19. package/dist/plugins/bundleAnalyzer.js +59 -0
  20. package/dist/plugins/cache.d.ts +2 -0
  21. package/dist/plugins/cache.js +115 -0
  22. package/dist/plugins/cleanOutput.d.ts +2 -0
  23. package/dist/plugins/cleanOutput.js +47 -0
  24. package/dist/plugins/define.d.ts +2 -0
  25. package/dist/plugins/define.js +59 -0
  26. package/dist/plugins/devtool.d.ts +2 -0
  27. package/dist/plugins/devtool.js +46 -0
  28. package/dist/plugins/entry.d.ts +2 -0
  29. package/dist/plugins/entry.js +42 -0
  30. package/dist/plugins/externals.d.ts +2 -0
  31. package/dist/plugins/externals.js +48 -0
  32. package/dist/plugins/fileSize.d.ts +4 -0
  33. package/dist/plugins/fileSize.js +160 -0
  34. package/dist/plugins/html.d.ts +7 -0
  35. package/dist/plugins/html.js +242 -0
  36. package/dist/plugins/index.d.ts +2 -0
  37. package/dist/plugins/index.js +67 -0
  38. package/dist/plugins/inlineChunk.d.ts +2 -0
  39. package/dist/plugins/inlineChunk.js +85 -0
  40. package/dist/plugins/moment.d.ts +2 -0
  41. package/dist/plugins/moment.js +43 -0
  42. package/dist/plugins/networkPerformance.d.ts +2 -0
  43. package/dist/plugins/networkPerformance.js +58 -0
  44. package/dist/plugins/nodeAddons.d.ts +2 -0
  45. package/dist/plugins/nodeAddons.js +78 -0
  46. package/dist/plugins/performance.d.ts +5 -0
  47. package/dist/plugins/performance.js +63 -0
  48. package/dist/plugins/preloadOrPrefetch.d.ts +2 -0
  49. package/dist/plugins/preloadOrPrefetch.js +61 -0
  50. package/dist/plugins/rem.d.ts +2 -0
  51. package/dist/plugins/rem.js +103 -0
  52. package/dist/plugins/splitChunks.d.ts +4 -0
  53. package/dist/plugins/splitChunks.js +251 -0
  54. package/dist/plugins/startUrl.d.ts +12 -0
  55. package/dist/plugins/startUrl.js +146 -0
  56. package/dist/plugins/target.d.ts +2 -0
  57. package/dist/plugins/target.js +53 -0
  58. package/dist/plugins/toml.d.ts +2 -0
  59. package/dist/plugins/toml.js +36 -0
  60. package/dist/plugins/wasm.d.ts +2 -0
  61. package/dist/plugins/wasm.js +51 -0
  62. package/dist/plugins/yaml.d.ts +2 -0
  63. package/dist/plugins/yaml.js +36 -0
  64. package/dist/rspack-provider/config/defaults.d.ts +3 -0
  65. package/dist/rspack-provider/config/defaults.js +40 -0
  66. package/dist/rspack-provider/config/normalize.d.ts +7 -0
  67. package/dist/rspack-provider/config/normalize.js +33 -0
  68. package/dist/rspack-provider/core/build.d.ts +19 -0
  69. package/dist/rspack-provider/core/build.js +79 -0
  70. package/dist/rspack-provider/core/createCompiler.d.ts +9 -0
  71. package/dist/rspack-provider/core/createCompiler.js +83 -0
  72. package/dist/rspack-provider/core/createContext.d.ts +7 -0
  73. package/dist/rspack-provider/core/createContext.js +47 -0
  74. package/dist/rspack-provider/core/devMiddleware.d.ts +5 -0
  75. package/dist/rspack-provider/core/devMiddleware.js +65 -0
  76. package/dist/rspack-provider/core/initConfigs.d.ts +14 -0
  77. package/dist/rspack-provider/core/initConfigs.js +76 -0
  78. package/dist/rspack-provider/core/initHooks.d.ts +18 -0
  79. package/dist/rspack-provider/core/initHooks.js +45 -0
  80. package/dist/rspack-provider/core/initPlugins.d.ts +9 -0
  81. package/dist/rspack-provider/core/initPlugins.js +82 -0
  82. package/dist/rspack-provider/core/inspectConfig.d.ts +19 -0
  83. package/dist/rspack-provider/core/inspectConfig.js +81 -0
  84. package/dist/rspack-provider/core/rspackConfig.d.ts +9 -0
  85. package/dist/rspack-provider/core/rspackConfig.js +137 -0
  86. package/dist/rspack-provider/core/startDevServer.d.ts +6 -0
  87. package/dist/rspack-provider/core/startDevServer.js +84 -0
  88. package/dist/rspack-provider/index.d.ts +5 -0
  89. package/dist/rspack-provider/index.js +31 -0
  90. package/dist/rspack-provider/plugins/basic.d.ts +5 -0
  91. package/dist/rspack-provider/plugins/basic.js +34 -0
  92. package/dist/rspack-provider/plugins/css.d.ts +29 -0
  93. package/dist/rspack-provider/plugins/css.js +214 -0
  94. package/dist/rspack-provider/plugins/fallback.d.ts +2 -0
  95. package/dist/rspack-provider/plugins/fallback.js +54 -0
  96. package/dist/rspack-provider/plugins/hmr.d.ts +2 -0
  97. package/dist/rspack-provider/plugins/hmr.js +38 -0
  98. package/dist/rspack-provider/plugins/less.d.ts +2 -0
  99. package/dist/rspack-provider/plugins/less.js +78 -0
  100. package/dist/rspack-provider/plugins/manifest.d.ts +2 -0
  101. package/dist/rspack-provider/plugins/manifest.js +58 -0
  102. package/dist/rspack-provider/plugins/minimize.d.ts +5 -0
  103. package/dist/rspack-provider/plugins/minimize.js +77 -0
  104. package/dist/rspack-provider/plugins/output.d.ts +2 -0
  105. package/dist/rspack-provider/plugins/output.js +65 -0
  106. package/dist/rspack-provider/plugins/progress.d.ts +2 -0
  107. package/dist/rspack-provider/plugins/progress.js +57 -0
  108. package/dist/rspack-provider/plugins/resolve.d.ts +2 -0
  109. package/dist/rspack-provider/plugins/resolve.js +55 -0
  110. package/dist/rspack-provider/plugins/rspack-profile.d.ts +4 -0
  111. package/dist/rspack-provider/plugins/rspack-profile.js +107 -0
  112. package/dist/rspack-provider/plugins/sass.d.ts +2 -0
  113. package/dist/rspack-provider/plugins/sass.js +83 -0
  114. package/dist/rspack-provider/plugins/swc.d.ts +7 -0
  115. package/dist/rspack-provider/plugins/swc.js +151 -0
  116. package/dist/rspack-provider/plugins/transition.d.ts +5 -0
  117. package/dist/rspack-provider/plugins/transition.js +42 -0
  118. package/dist/rspack-provider/provider.d.ts +8 -0
  119. package/dist/rspack-provider/provider.js +116 -0
  120. package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/index.d.ts +6 -0
  121. package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/index.js +84 -0
  122. package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/postcss-icss-extract-plugin.d.ts +11 -0
  123. package/dist/rspack-provider/rspackLoader/css-modules-typescript-pre-loader/postcss-icss-extract-plugin.js +67 -0
  124. package/dist/rspack-provider/rspackPlugin/removeCssSourcemapPlugin.d.ts +8 -0
  125. package/dist/rspack-provider/rspackPlugin/removeCssSourcemapPlugin.js +51 -0
  126. package/dist/rspack-provider/shared/constants.d.ts +1 -0
  127. package/dist/rspack-provider/shared/constants.js +28 -0
  128. package/dist/rspack-provider/shared/fs.d.ts +1 -0
  129. package/dist/rspack-provider/shared/fs.js +38 -0
  130. package/dist/rspack-provider/shared/index.d.ts +3 -0
  131. package/dist/rspack-provider/shared/index.js +26 -0
  132. package/dist/rspack-provider/shared/plugin.d.ts +3 -0
  133. package/dist/rspack-provider/shared/plugin.js +83 -0
  134. package/dist/rspack-provider/shared/rspackVersion.d.ts +3 -0
  135. package/dist/rspack-provider/shared/rspackVersion.js +61 -0
  136. package/dist/rspack-provider/types/context.d.ts +16 -0
  137. package/dist/rspack-provider/types/context.js +16 -0
  138. package/dist/rspack-provider/types/hooks.d.ts +3 -0
  139. package/dist/rspack-provider/types/hooks.js +16 -0
  140. package/dist/rspack-provider/types/index.d.ts +4 -0
  141. package/dist/rspack-provider/types/index.js +26 -0
  142. package/dist/rspack-provider/types/plugin.d.ts +7 -0
  143. package/dist/rspack-provider/types/plugin.js +16 -0
  144. package/dist/utils/generateMetaTags.d.ts +12 -0
  145. package/dist/utils/generateMetaTags.js +50 -0
  146. package/package.json +98 -0
  147. package/static/openChrome.applescript +95 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var preloadOrPrefetch_exports = {};
20
+ __export(preloadOrPrefetch_exports, {
21
+ pluginPreloadOrPrefetch: () => pluginPreloadOrPrefetch
22
+ });
23
+ module.exports = __toCommonJS(preloadOrPrefetch_exports);
24
+ var import_shared = require("@rsbuild/shared");
25
+ const pluginPreloadOrPrefetch = () => ({
26
+ name: `plugin-preload-or-prefetch`,
27
+ setup(api) {
28
+ api.modifyBundlerChain(
29
+ async (chain, { CHAIN_ID, isServer, isWebWorker, isServiceWorker, HtmlPlugin }) => {
30
+ const config = api.getNormalizedConfig();
31
+ const {
32
+ performance: { preload, prefetch }
33
+ } = config;
34
+ if (isServer || isWebWorker || isServiceWorker) {
35
+ return;
36
+ }
37
+ const HTMLCount = chain.entryPoints.values().length;
38
+ if (prefetch) {
39
+ chain.plugin(CHAIN_ID.PLUGIN.HTML_PREFETCH).use(import_shared.HTMLPreloadOrPrefetchPlugin, [
40
+ prefetch,
41
+ "prefetch",
42
+ HtmlPlugin,
43
+ HTMLCount
44
+ ]);
45
+ }
46
+ if (preload) {
47
+ chain.plugin(CHAIN_ID.PLUGIN.HTML_PRELOAD).use(import_shared.HTMLPreloadOrPrefetchPlugin, [
48
+ preload,
49
+ "preload",
50
+ HtmlPlugin,
51
+ HTMLCount
52
+ ]);
53
+ }
54
+ }
55
+ );
56
+ }
57
+ });
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ pluginPreloadOrPrefetch
61
+ });
@@ -0,0 +1,2 @@
1
+ import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ export declare const pluginRem: () => DefaultRsbuildPlugin;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var rem_exports = {};
30
+ __export(rem_exports, {
31
+ pluginRem: () => pluginRem
32
+ });
33
+ module.exports = __toCommonJS(rem_exports);
34
+ var import_lodash = __toESM(require("lodash"));
35
+ var import_shared = require("@rsbuild/shared");
36
+ const defaultOptions = {
37
+ enableRuntime: true,
38
+ rootFontSize: 50
39
+ };
40
+ const pluginRem = () => ({
41
+ name: "plugin-rem",
42
+ pre: ["plugin-css", "plugin-less", "plugin-sass", "plugin-stylus"],
43
+ setup(api) {
44
+ api.modifyBundlerChain(
45
+ async (chain, { CHAIN_ID, isServer, isWebWorker, HtmlPlugin }) => {
46
+ const config = api.getNormalizedConfig();
47
+ const {
48
+ output: { convertToRem }
49
+ } = config;
50
+ if (!convertToRem || isServer || isWebWorker) {
51
+ return;
52
+ }
53
+ const userOptions = {
54
+ ...defaultOptions,
55
+ ...typeof convertToRem === "boolean" ? {} : convertToRem
56
+ };
57
+ const { default: PxToRemPlugin } = await Promise.resolve().then(() => __toESM(require((0, import_shared.getSharedPkgCompiledPath)("postcss-pxtorem"))));
58
+ const applyRules = [
59
+ CHAIN_ID.RULE.CSS,
60
+ CHAIN_ID.RULE.LESS,
61
+ CHAIN_ID.RULE.SASS,
62
+ CHAIN_ID.RULE.STYLUS
63
+ ];
64
+ const getPxToRemPlugin = () => PxToRemPlugin({
65
+ rootValue: userOptions.rootFontSize,
66
+ unitPrecision: 5,
67
+ propList: ["*"],
68
+ ...import_lodash.default.cloneDeep(userOptions.pxtorem || {})
69
+ });
70
+ applyRules.forEach((name) => {
71
+ chain.module.rules.has(name) && chain.module.rule(name).use(CHAIN_ID.USE.POSTCSS).tap((options = {}) => {
72
+ var _a;
73
+ return {
74
+ ...options,
75
+ postcssOptions: {
76
+ ...options.postcssOptions || {},
77
+ plugins: [
78
+ ...((_a = options.postcssOptions) == null ? void 0 : _a.plugins) || [],
79
+ getPxToRemPlugin()
80
+ ]
81
+ }
82
+ };
83
+ });
84
+ });
85
+ if (!userOptions.enableRuntime) {
86
+ return;
87
+ }
88
+ const entries = Object.keys(chain.entryPoints.entries() || {});
89
+ const distDir = (0, import_shared.getDistPath)(config.output, "js");
90
+ chain.plugin(CHAIN_ID.PLUGIN.AUTO_SET_ROOT_SIZE).use(import_shared.AutoSetRootFontSizePlugin, [
91
+ userOptions,
92
+ entries,
93
+ HtmlPlugin,
94
+ distDir
95
+ ]);
96
+ }
97
+ );
98
+ }
99
+ });
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ pluginRem
103
+ });
@@ -0,0 +1,4 @@
1
+ import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ /** Expect to match path just like "./node_modules/react-router/" */
3
+ export declare const createDependenciesRegExp: (...dependencies: (string | RegExp)[]) => RegExp;
4
+ export declare function pluginSplitChunks(): DefaultRsbuildPlugin;
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var splitChunks_exports = {};
30
+ __export(splitChunks_exports, {
31
+ createDependenciesRegExp: () => createDependenciesRegExp,
32
+ pluginSplitChunks: () => pluginSplitChunks
33
+ });
34
+ module.exports = __toCommonJS(splitChunks_exports);
35
+ var import_assert = __toESM(require("assert"));
36
+ var import_shared = require("@rsbuild/shared");
37
+ function getUserDefinedCacheGroups(forceSplitting) {
38
+ const cacheGroups = {};
39
+ const pairs = Array.isArray(forceSplitting) ? forceSplitting.map(
40
+ (regexp, index) => [`force-split-${index}`, regexp]
41
+ ) : Object.entries(forceSplitting);
42
+ pairs.forEach(([key, regexp]) => {
43
+ cacheGroups[key] = {
44
+ test: regexp,
45
+ name: key,
46
+ chunks: "all",
47
+ // Ignore minimum size, minimum chunks and maximum requests and always create chunks for user defined cache group.
48
+ enforce: true
49
+ };
50
+ });
51
+ return cacheGroups;
52
+ }
53
+ const DEPENDENCY_MATCH_TEMPL = /[\\/]node_modules[\\/](<SOURCES>)[\\/]/.source;
54
+ const createDependenciesRegExp = (...dependencies) => {
55
+ const sources = dependencies.map(
56
+ (d) => typeof d === "string" ? d : d.source
57
+ );
58
+ const expr = DEPENDENCY_MATCH_TEMPL.replace("<SOURCES>", sources.join("|"));
59
+ return new RegExp(expr);
60
+ };
61
+ function splitByExperience(ctx) {
62
+ const { override, polyfill, defaultConfig, userDefinedCacheGroups } = ctx;
63
+ const experienceCacheGroup = {};
64
+ const packageRegExps = {
65
+ lodash: createDependenciesRegExp("lodash", "lodash-es"),
66
+ axios: createDependenciesRegExp("axios", /axios-.+/)
67
+ };
68
+ if (polyfill === "entry" || polyfill === "usage") {
69
+ packageRegExps.polyfill = createDependenciesRegExp(
70
+ "tslib",
71
+ "core-js",
72
+ "@babel/runtime",
73
+ "@swc/helpers"
74
+ );
75
+ }
76
+ Object.entries(packageRegExps).forEach(([name, test]) => {
77
+ const key = `lib-${name}`;
78
+ experienceCacheGroup[key] = {
79
+ test,
80
+ priority: 0,
81
+ name: key,
82
+ reuseExistingChunk: true
83
+ };
84
+ });
85
+ (0, import_assert.default)(defaultConfig !== false);
86
+ (0, import_assert.default)(override !== false);
87
+ return {
88
+ ...defaultConfig,
89
+ ...override,
90
+ cacheGroups: {
91
+ ...defaultConfig.cacheGroups,
92
+ ...experienceCacheGroup,
93
+ ...userDefinedCacheGroups,
94
+ ...override.cacheGroups
95
+ }
96
+ };
97
+ }
98
+ function splitByModule(ctx) {
99
+ const { override, userDefinedCacheGroups, defaultConfig } = ctx;
100
+ (0, import_assert.default)(defaultConfig !== false);
101
+ (0, import_assert.default)(override !== false);
102
+ return {
103
+ ...defaultConfig,
104
+ minSize: 0,
105
+ maxInitialRequests: Infinity,
106
+ ...override,
107
+ cacheGroups: {
108
+ ...defaultConfig.cacheGroups,
109
+ ...userDefinedCacheGroups,
110
+ // Core group
111
+ vendors: {
112
+ priority: -10,
113
+ test: import_shared.NODE_MODULES_REGEX,
114
+ // todo: not support in rspack
115
+ name(module2) {
116
+ return (0, import_shared.getPackageNameFromModulePath)(module2.context);
117
+ }
118
+ },
119
+ ...override.cacheGroups
120
+ }
121
+ };
122
+ }
123
+ function splitBySize(ctx) {
124
+ var _a, _b;
125
+ const { override, userDefinedCacheGroups, defaultConfig, rsbuildConfig } = ctx;
126
+ (0, import_assert.default)(defaultConfig !== false);
127
+ (0, import_assert.default)(override !== false);
128
+ (0, import_assert.default)(rsbuildConfig.strategy === "split-by-size");
129
+ return {
130
+ ...defaultConfig,
131
+ minSize: (_a = rsbuildConfig.minSize) != null ? _a : 0,
132
+ maxSize: (_b = rsbuildConfig.maxSize) != null ? _b : Infinity,
133
+ ...override,
134
+ cacheGroups: {
135
+ ...defaultConfig.cacheGroups,
136
+ ...userDefinedCacheGroups,
137
+ ...override.cacheGroups
138
+ }
139
+ };
140
+ }
141
+ function splitCustom(ctx) {
142
+ const { override, userDefinedCacheGroups, defaultConfig } = ctx;
143
+ (0, import_assert.default)(defaultConfig !== false);
144
+ (0, import_assert.default)(override !== false);
145
+ return {
146
+ ...defaultConfig,
147
+ ...override,
148
+ cacheGroups: {
149
+ ...defaultConfig.cacheGroups,
150
+ ...userDefinedCacheGroups,
151
+ ...override.cacheGroups
152
+ }
153
+ };
154
+ }
155
+ function allInOne(_ctx) {
156
+ return false;
157
+ }
158
+ function singleVendor(ctx) {
159
+ const { override, defaultConfig, userDefinedCacheGroups } = ctx;
160
+ (0, import_assert.default)(defaultConfig !== false);
161
+ (0, import_assert.default)(override !== false);
162
+ const singleVendorCacheGroup = {
163
+ singleVendor: {
164
+ test: import_shared.NODE_MODULES_REGEX,
165
+ priority: 0,
166
+ chunks: "all",
167
+ name: "vendor",
168
+ enforce: true,
169
+ reuseExistingChunk: true
170
+ }
171
+ };
172
+ return {
173
+ ...defaultConfig,
174
+ ...override,
175
+ cacheGroups: {
176
+ ...defaultConfig.cacheGroups,
177
+ ...singleVendorCacheGroup,
178
+ ...userDefinedCacheGroups,
179
+ ...override.cacheGroups
180
+ }
181
+ };
182
+ }
183
+ const SPLIT_STRATEGY_DISPATCHER = {
184
+ "split-by-experience": splitByExperience,
185
+ "split-by-module": splitByModule,
186
+ "split-by-size": splitBySize,
187
+ custom: splitCustom,
188
+ "all-in-one": allInOne,
189
+ "single-vendor": singleVendor
190
+ };
191
+ function pluginSplitChunks() {
192
+ return {
193
+ name: "plugin-split-chunks",
194
+ setup(api) {
195
+ api.modifyBundlerChain(
196
+ async (chain, { isServer, isWebWorker, isServiceWorker }) => {
197
+ var _a;
198
+ if (isServer || isWebWorker || isServiceWorker) {
199
+ chain.optimization.splitChunks(false);
200
+ if (isWebWorker || isServiceWorker) {
201
+ chain.module.parser.merge({
202
+ javascript: {
203
+ dynamicImportMode: "eager"
204
+ }
205
+ });
206
+ }
207
+ return;
208
+ }
209
+ const config = api.getNormalizedConfig();
210
+ const defaultConfig = {
211
+ // Optimize both `initial` and `async` chunks
212
+ chunks: "all",
213
+ // When chunk size >= 50000 bytes, split it into separate chunk
214
+ enforceSizeThreshold: 5e4,
215
+ cacheGroups: {}
216
+ };
217
+ const { chunkSplit } = config.performance;
218
+ let userDefinedCacheGroups = {};
219
+ if (chunkSplit.forceSplitting) {
220
+ userDefinedCacheGroups = getUserDefinedCacheGroups(
221
+ chunkSplit.forceSplitting
222
+ );
223
+ }
224
+ const override = chunkSplit.strategy === "custom" ? (
225
+ // `chunkSplit.splitChunks` compat for Eden
226
+ (_a = chunkSplit.splitChunks) != null ? _a : chunkSplit.override
227
+ ) : chunkSplit.override;
228
+ const splitChunksOptions = await SPLIT_STRATEGY_DISPATCHER[chunkSplit.strategy]({
229
+ defaultConfig,
230
+ override: override || {},
231
+ userDefinedCacheGroups,
232
+ rsbuildConfig: chunkSplit,
233
+ rootPath: api.context.rootPath,
234
+ polyfill: config.output.polyfill
235
+ });
236
+ chain.optimization.splitChunks(splitChunksOptions);
237
+ if (chunkSplit.strategy !== "all-in-one") {
238
+ chain.optimization.runtimeChunk({
239
+ name: import_shared.RUNTIME_CHUNK_NAME
240
+ });
241
+ }
242
+ }
243
+ );
244
+ }
245
+ };
246
+ }
247
+ // Annotate the CommonJS export names for ESM import in node:
248
+ 0 && (module.exports = {
249
+ createDependenciesRegExp,
250
+ pluginSplitChunks
251
+ });
@@ -0,0 +1,12 @@
1
+ import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ /**
3
+ * This method is modified based on source found in
4
+ * https://github.com/facebook/create-react-app
5
+ *
6
+ * MIT Licensed
7
+ * Copyright (c) 2015-present, Facebook, Inc.
8
+ * https://github.com/facebook/create-react-app/blob/master/LICENSE
9
+ */
10
+ export declare function openBrowser(url: string): Promise<boolean>;
11
+ export declare const replacePlaceholder: (url: string, port: number) => string;
12
+ export declare function pluginStartUrl(): DefaultRsbuildPlugin;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var startUrl_exports = {};
30
+ __export(startUrl_exports, {
31
+ openBrowser: () => openBrowser,
32
+ pluginStartUrl: () => pluginStartUrl,
33
+ replacePlaceholder: () => replacePlaceholder
34
+ });
35
+ module.exports = __toCommonJS(startUrl_exports);
36
+ var import_path = require("path");
37
+ var import_shared = require("@rsbuild/shared");
38
+ var import_child_process = require("child_process");
39
+ const supportedChromiumBrowsers = [
40
+ "Google Chrome Canary",
41
+ "Google Chrome Dev",
42
+ "Google Chrome Beta",
43
+ "Google Chrome",
44
+ "Microsoft Edge",
45
+ "Brave Browser",
46
+ "Vivaldi",
47
+ "Chromium"
48
+ ];
49
+ const getTargetBrowser = () => {
50
+ let targetBrowser = process.env.BROWSER;
51
+ if (!targetBrowser || !supportedChromiumBrowsers.includes(targetBrowser)) {
52
+ const ps = (0, import_child_process.execSync)("ps cax").toString();
53
+ targetBrowser = supportedChromiumBrowsers.find((b) => ps.includes(b));
54
+ }
55
+ return targetBrowser;
56
+ };
57
+ async function openBrowser(url) {
58
+ const shouldTryOpenChromeWithAppleScript = process.platform === "darwin";
59
+ if (shouldTryOpenChromeWithAppleScript) {
60
+ try {
61
+ const targetBrowser = getTargetBrowser();
62
+ if (targetBrowser) {
63
+ (0, import_child_process.execSync)(
64
+ `osascript openChrome.applescript "${encodeURI(
65
+ url
66
+ )}" "${targetBrowser}"`,
67
+ {
68
+ stdio: "ignore",
69
+ cwd: (0, import_path.join)(__dirname, "../../static")
70
+ }
71
+ );
72
+ return true;
73
+ }
74
+ return false;
75
+ } catch (err) {
76
+ import_shared.logger.error("Failed to open start URL with apple script.");
77
+ import_shared.logger.error(err);
78
+ return false;
79
+ }
80
+ }
81
+ try {
82
+ const { default: open } = await Promise.resolve().then(() => __toESM(require("open")));
83
+ await open(url);
84
+ return true;
85
+ } catch (err) {
86
+ import_shared.logger.error("Failed to open start URL.");
87
+ import_shared.logger.error(err);
88
+ return false;
89
+ }
90
+ }
91
+ const replacePlaceholder = (url, port) => url.replace(/<port>/g, String(port));
92
+ const openedURLs = [];
93
+ function pluginStartUrl() {
94
+ return {
95
+ name: "plugin-start-url",
96
+ async setup(api) {
97
+ let port;
98
+ api.onAfterStartDevServer(async (params) => {
99
+ ({ port } = params);
100
+ });
101
+ api.onDevCompileDone(async ({ isFirstCompile }) => {
102
+ if (!isFirstCompile || !port) {
103
+ return;
104
+ }
105
+ const config = api.getNormalizedConfig();
106
+ const { startUrl, beforeStartUrl } = config.dev;
107
+ const { https } = api.context.devServer || {};
108
+ if (!startUrl) {
109
+ return;
110
+ }
111
+ const urls = [];
112
+ if (startUrl === true) {
113
+ const protocol = https ? "https" : "http";
114
+ urls.push(`${protocol}://localhost:${port}`);
115
+ } else {
116
+ urls.push(
117
+ ...(0, import_shared.castArray)(startUrl).map(
118
+ (item) => replacePlaceholder(item, port)
119
+ )
120
+ );
121
+ }
122
+ const openUrls = () => {
123
+ for (const url of urls) {
124
+ if (!openedURLs.includes(url)) {
125
+ openBrowser(url);
126
+ openedURLs.push(url);
127
+ }
128
+ }
129
+ };
130
+ if (beforeStartUrl) {
131
+ Promise.all((0, import_shared.castArray)(beforeStartUrl).map((fn) => fn())).then(
132
+ openUrls
133
+ );
134
+ } else {
135
+ openUrls();
136
+ }
137
+ });
138
+ }
139
+ };
140
+ }
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ openBrowser,
144
+ pluginStartUrl,
145
+ replacePlaceholder
146
+ });
@@ -0,0 +1,2 @@
1
+ import type { DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ export declare const pluginTarget: () => DefaultRsbuildPlugin;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var target_exports = {};
20
+ __export(target_exports, {
21
+ pluginTarget: () => pluginTarget
22
+ });
23
+ module.exports = __toCommonJS(target_exports);
24
+ var import_shared = require("@rsbuild/shared");
25
+ const pluginTarget = () => ({
26
+ name: "plugin-target",
27
+ setup(api) {
28
+ api.modifyBundlerChain(async (chain, { target }) => {
29
+ if (target === "node") {
30
+ chain.target("node");
31
+ return;
32
+ }
33
+ if (target === "service-worker") {
34
+ chain.target("webworker");
35
+ return;
36
+ }
37
+ if (target === "web-worker") {
38
+ chain.target(["webworker", "es5"]);
39
+ return;
40
+ }
41
+ const browserslist = await (0, import_shared.getBrowserslist)(api.context.rootPath);
42
+ if (browserslist) {
43
+ chain.merge({ target: ["web", "browserslist"] });
44
+ } else {
45
+ chain.merge({ target: ["web", "es5"] });
46
+ }
47
+ });
48
+ }
49
+ });
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ pluginTarget
53
+ });
@@ -0,0 +1,2 @@
1
+ import { DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ export declare const pluginToml: () => DefaultRsbuildPlugin;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var toml_exports = {};
20
+ __export(toml_exports, {
21
+ pluginToml: () => pluginToml
22
+ });
23
+ module.exports = __toCommonJS(toml_exports);
24
+ var import_shared = require("@rsbuild/shared");
25
+ const pluginToml = () => ({
26
+ name: "plugin-toml",
27
+ setup(api) {
28
+ api.modifyBundlerChain((chain, { CHAIN_ID }) => {
29
+ chain.module.rule(CHAIN_ID.RULE.TOML).type("javascript/auto").test(/\.toml$/).use(CHAIN_ID.USE.TOML).loader((0, import_shared.getSharedPkgCompiledPath)("toml-loader"));
30
+ });
31
+ }
32
+ });
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ pluginToml
36
+ });
@@ -0,0 +1,2 @@
1
+ import { type DefaultRsbuildPlugin } from '@rsbuild/shared';
2
+ export declare const pluginWasm: () => DefaultRsbuildPlugin;