@rsbuild/core 0.0.17 → 0.0.18

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 (38) hide show
  1. package/dist/cli/commands.d.ts +3 -0
  2. package/dist/cli/commands.js +4 -2
  3. package/dist/cli/config.d.ts +4 -0
  4. package/dist/cli/index.js +2 -1
  5. package/dist/plugins/define.js +8 -18
  6. package/dist/plugins/index.js +0 -1
  7. package/dist/plugins/nodeAddons.js +10 -17
  8. package/dist/plugins/startUrl.js +11 -15
  9. package/dist/rspack-provider/core/createCompiler.js +7 -5
  10. package/dist/rspack-provider/core/devMiddleware.d.ts +2 -4
  11. package/dist/rspack-provider/core/startDevServer.d.ts +1 -2
  12. package/dist/rspack-provider/core/startDevServer.js +6 -31
  13. package/dist/rspack-provider/plugins/progress.js +5 -1
  14. package/dist/rspack-provider/plugins/swc.js +2 -3
  15. package/dist/rspack-provider/provider.js +5 -3
  16. package/dist/rspack-provider/shared/plugin.js +0 -1
  17. package/dist/server/constants.d.ts +6 -0
  18. package/dist/server/constants.js +49 -0
  19. package/dist/server/dev-middleware/hmr-client/createSocketUrl.d.ts +16 -0
  20. package/dist/server/dev-middleware/hmr-client/createSocketUrl.js +68 -0
  21. package/dist/server/dev-middleware/hmr-client/index.d.ts +1 -0
  22. package/dist/server/dev-middleware/hmr-client/index.js +164 -0
  23. package/dist/server/dev-middleware/index.d.ts +22 -0
  24. package/dist/server/dev-middleware/index.js +90 -0
  25. package/dist/server/dev-middleware/socketServer.d.ts +22 -0
  26. package/dist/server/dev-middleware/socketServer.js +167 -0
  27. package/dist/server/devServer.d.ts +23 -0
  28. package/dist/server/devServer.js +172 -0
  29. package/dist/server/https.d.ts +6 -0
  30. package/dist/server/https.js +50 -0
  31. package/dist/server/index.d.ts +2 -0
  32. package/dist/server/index.js +31 -0
  33. package/dist/server/prodServer.d.ts +26 -0
  34. package/dist/server/prodServer.js +133 -0
  35. package/package.json +31 -5
  36. package/types.d.ts +130 -0
  37. package/dist/plugins/assetsRetry.d.ts +0 -2
  38. package/dist/plugins/assetsRetry.js +0 -66
@@ -0,0 +1,50 @@
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 https_exports = {};
20
+ __export(https_exports, {
21
+ genHttpsOptions: () => genHttpsOptions
22
+ });
23
+ module.exports = __toCommonJS(https_exports);
24
+ var import_shared = require("@rsbuild/shared");
25
+ const genHttpsOptions = async (userOptions, pwd) => {
26
+ const httpsOptions = typeof userOptions === "boolean" ? {} : userOptions;
27
+ if (!httpsOptions.key || !httpsOptions.cert) {
28
+ let devcertPath;
29
+ try {
30
+ devcertPath = require.resolve("devcert", { paths: [pwd, __dirname] });
31
+ } catch (err) {
32
+ const command = import_shared.color.bold(import_shared.color.yellow(`npm add devcert@1.2.2 -D`));
33
+ import_shared.logger.error(
34
+ `You have enabled "dev.https" option, but the "devcert" package is not installed.`
35
+ );
36
+ import_shared.logger.error(
37
+ `Please run ${command} to install manually, otherwise the https can not work.`
38
+ );
39
+ throw new Error('[https] "devcert" is not found.');
40
+ }
41
+ const devcert = require(devcertPath);
42
+ const selfsign = await devcert.certificateFor(["localhost"]);
43
+ return selfsign;
44
+ }
45
+ return httpsOptions;
46
+ };
47
+ // Annotate the CommonJS export names for ESM import in node:
48
+ 0 && (module.exports = {
49
+ genHttpsOptions
50
+ });
@@ -0,0 +1,2 @@
1
+ export { createDevServer } from './devServer';
2
+ export { startProdServer } from './prodServer';
@@ -0,0 +1,31 @@
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 server_exports = {};
20
+ __export(server_exports, {
21
+ createDevServer: () => import_devServer.createDevServer,
22
+ startProdServer: () => import_prodServer.startProdServer
23
+ });
24
+ module.exports = __toCommonJS(server_exports);
25
+ var import_devServer = require("./devServer");
26
+ var import_prodServer = require("./prodServer");
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ createDevServer,
30
+ startProdServer
31
+ });
@@ -0,0 +1,26 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import type { ListenOptions } from 'net';
4
+ import { Server } from 'http';
5
+ import connect from 'connect';
6
+ import { Context, RsbuildConfig, StartServerResult } from '@rsbuild/shared';
7
+ type RsbuildProdServerOptions = {
8
+ pwd: string;
9
+ output: {
10
+ path: string;
11
+ assetPrefix?: string;
12
+ };
13
+ };
14
+ export declare class RsbuildProdServer {
15
+ private app;
16
+ private options;
17
+ middlewares: connect.Server;
18
+ constructor(options: RsbuildProdServerOptions);
19
+ onInit(app: Server): Promise<void>;
20
+ private applyDefaultMiddlewares;
21
+ createHTTPServer(): Promise<Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
22
+ listen(options?: number | ListenOptions | undefined, listener?: () => void): void;
23
+ close(): void;
24
+ }
25
+ export declare function startProdServer(context: Context, rsbuildConfig: RsbuildConfig): Promise<StartServerResult>;
26
+ export {};
@@ -0,0 +1,133 @@
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 prodServer_exports = {};
30
+ __export(prodServer_exports, {
31
+ RsbuildProdServer: () => RsbuildProdServer,
32
+ startProdServer: () => startProdServer
33
+ });
34
+ module.exports = __toCommonJS(prodServer_exports);
35
+ var import_http = require("http");
36
+ var import_connect = __toESM(require("connect"));
37
+ var import_path = require("path");
38
+ var import_sirv = __toESM(require("sirv"));
39
+ var import_shared = require("@rsbuild/shared");
40
+ class RsbuildProdServer {
41
+ constructor(options) {
42
+ this.middlewares = (0, import_connect.default)();
43
+ this.options = options;
44
+ }
45
+ // Complete the preparation of services
46
+ async onInit(app) {
47
+ this.app = app;
48
+ await this.applyDefaultMiddlewares();
49
+ }
50
+ async applyDefaultMiddlewares() {
51
+ const {
52
+ output: { path, assetPrefix },
53
+ pwd
54
+ } = this.options;
55
+ const assetMiddleware = (0, import_sirv.default)((0, import_path.join)(pwd, path), {
56
+ etag: true,
57
+ dev: true,
58
+ ignores: false
59
+ });
60
+ this.middlewares.use((req, res, next) => {
61
+ const url = req.url;
62
+ if (assetPrefix && (url == null ? void 0 : url.startsWith(assetPrefix))) {
63
+ req.url = url.slice(assetPrefix.length);
64
+ assetMiddleware(req, res, (...args) => {
65
+ req.url = url;
66
+ next(...args);
67
+ });
68
+ } else {
69
+ assetMiddleware(req, res, next);
70
+ }
71
+ });
72
+ }
73
+ async createHTTPServer() {
74
+ return (0, import_http.createServer)(this.middlewares);
75
+ }
76
+ listen(options, listener) {
77
+ const callback = () => {
78
+ listener == null ? void 0 : listener();
79
+ };
80
+ if (typeof options === "object") {
81
+ this.app.listen(options, callback);
82
+ } else {
83
+ this.app.listen(options || 8080, callback);
84
+ }
85
+ }
86
+ close() {
87
+ this.app.close();
88
+ }
89
+ }
90
+ async function startProdServer(context, rsbuildConfig) {
91
+ var _a, _b, _c, _d;
92
+ if (!process.env.NODE_ENV) {
93
+ process.env.NODE_ENV = "production";
94
+ }
95
+ const port = await (0, import_shared.getPort)(((_a = rsbuildConfig.dev) == null ? void 0 : _a.port) || import_shared.DEFAULT_PORT);
96
+ const server = new RsbuildProdServer({
97
+ pwd: context.rootPath,
98
+ output: {
99
+ path: ((_c = (_b = rsbuildConfig.output) == null ? void 0 : _b.distPath) == null ? void 0 : _c.root) || import_shared.ROOT_DIST_DIR,
100
+ assetPrefix: (_d = rsbuildConfig.output) == null ? void 0 : _d.assetPrefix
101
+ }
102
+ });
103
+ const httpServer = await server.createHTTPServer();
104
+ await server.onInit(httpServer);
105
+ return new Promise((resolve) => {
106
+ server.listen(
107
+ {
108
+ host: import_shared.DEFAULT_DEV_HOST,
109
+ port
110
+ },
111
+ () => {
112
+ const urls = (0, import_shared.getAddressUrls)("http", port);
113
+ (0, import_shared.printServerURLs)(urls);
114
+ resolve({
115
+ port,
116
+ urls: urls.map((item) => item.url),
117
+ server: {
118
+ middlewares: server.middlewares,
119
+ close: () => {
120
+ server.close();
121
+ }
122
+ // TODO: decouple with Modern.js server
123
+ }
124
+ });
125
+ }
126
+ );
127
+ });
128
+ }
129
+ // Annotate the CommonJS export names for ESM import in node:
130
+ 0 && (module.exports = {
131
+ RsbuildProdServer,
132
+ startProdServer
133
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsbuild/core",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Unleash the power of Rspack with the out-of-the-box build tool.",
5
5
  "homepage": "https://rsbuild.dev",
6
6
  "bugs": {
@@ -17,6 +17,14 @@
17
17
  "types": "./dist/index.d.ts",
18
18
  "default": "./dist/index.js"
19
19
  },
20
+ "./server": {
21
+ "types": "./dist/server/index.d.ts",
22
+ "default": "./dist/server/index.js"
23
+ },
24
+ "./hmr-client": {
25
+ "types": "./dist/server/dev-middleware/hmr-client/index.d.ts",
26
+ "default": "./dist/server/dev-middleware/hmr-client/index.js"
27
+ },
20
28
  "./cli": {
21
29
  "types": "./dist/cli/index.d.ts",
22
30
  "default": "./dist/cli/index.js"
@@ -32,6 +40,9 @@
32
40
  "./rspack-provider": {
33
41
  "types": "./dist/rspack-provider/index.d.ts",
34
42
  "default": "./dist/rspack-provider/index.js"
43
+ },
44
+ "./types": {
45
+ "types": "./types.d.ts"
35
46
  }
36
47
  },
37
48
  "main": "./dist/index.js",
@@ -41,6 +52,12 @@
41
52
  "cli": [
42
53
  "./dist/cli/index.d.ts"
43
54
  ],
55
+ "server": [
56
+ "./dist/server/index.d.ts"
57
+ ],
58
+ "hmr-client": [
59
+ "./dist/server/dev-middleware/hmr-client/index.d.ts"
60
+ ],
44
61
  "plugins/*": [
45
62
  "./dist/plugins/*.d.ts"
46
63
  ],
@@ -58,27 +75,36 @@
58
75
  "files": [
59
76
  "bin",
60
77
  "dist",
61
- "static"
78
+ "static",
79
+ "types.d.ts"
62
80
  ],
63
81
  "dependencies": {
64
- "@modern-js/server": "0.0.0-next-20231103131234",
65
82
  "@rspack/core": "0.3.11",
83
+ "connect": "3.7.0",
84
+ "connect-history-api-fallback": "^2.0.0",
66
85
  "commander": "^10.0.1",
67
86
  "core-js": "~3.32.2",
68
87
  "filesize": "^8.0.7",
69
88
  "gzip-size": "^6.0.0",
70
89
  "html-webpack-plugin": "5.5.3",
90
+ "http-compression": "1.0.6",
71
91
  "jiti": "^1.20.0",
72
92
  "lodash": "^4.17.21",
73
93
  "open": "^8.4.0",
74
- "pkg-up": "^3.1.0",
75
94
  "postcss": "8.4.31",
95
+ "rslog": "^1.1.0",
76
96
  "semver": "^7.5.4",
77
- "@rsbuild/shared": "0.0.17"
97
+ "sirv": "^2.0.3",
98
+ "strip-ansi": "^6.0.1",
99
+ "ws": "^8.2.0",
100
+ "@rsbuild/shared": "0.0.18"
78
101
  },
79
102
  "devDependencies": {
103
+ "@types/connect": "3.4.35",
104
+ "@types/connect-history-api-fallback": "^1.3.5",
80
105
  "@types/lodash": "^4.14.200",
81
106
  "@types/node": "^16",
107
+ "@types/ws": "^8.2.0",
82
108
  "@types/semver": "^7.5.4",
83
109
  "typescript": "^5.2.2"
84
110
  },
package/types.d.ts ADDED
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Image assets
3
+ */
4
+ declare module '*.bmp' {
5
+ const src: string;
6
+ export default src;
7
+ }
8
+ declare module '*.bmp?url' {
9
+ const src: string;
10
+ export default src;
11
+ }
12
+ declare module '*.bmp?inline' {
13
+ const src: string;
14
+ export default src;
15
+ }
16
+ declare module '*.gif' {
17
+ const src: string;
18
+ export default src;
19
+ }
20
+ declare module '*.gif?url' {
21
+ const src: string;
22
+ export default src;
23
+ }
24
+ declare module '*.gif?inline' {
25
+ const src: string;
26
+ export default src;
27
+ }
28
+ declare module '*.jpg' {
29
+ const src: string;
30
+ export default src;
31
+ }
32
+ declare module '*.jpg?url' {
33
+ const src: string;
34
+ export default src;
35
+ }
36
+ declare module '*.jpg?inline' {
37
+ const src: string;
38
+ export default src;
39
+ }
40
+ declare module '*.jpeg' {
41
+ const src: string;
42
+ export default src;
43
+ }
44
+ declare module '*.jpeg?url' {
45
+ const src: string;
46
+ export default src;
47
+ }
48
+ declare module '*.jpeg?inline' {
49
+ const src: string;
50
+ export default src;
51
+ }
52
+ declare module '*.png' {
53
+ const src: string;
54
+ export default src;
55
+ }
56
+ declare module '*.png?url' {
57
+ const src: string;
58
+ export default src;
59
+ }
60
+ declare module '*.png?inline' {
61
+ const src: string;
62
+ export default src;
63
+ }
64
+ declare module '*.ico' {
65
+ const src: string;
66
+ export default src;
67
+ }
68
+ declare module '*.ico?url' {
69
+ const src: string;
70
+ export default src;
71
+ }
72
+ declare module '*.ico?inline' {
73
+ const src: string;
74
+ export default src;
75
+ }
76
+ declare module '*.webp' {
77
+ const src: string;
78
+ export default src;
79
+ }
80
+ declare module '*.webp?url' {
81
+ const src: string;
82
+ export default src;
83
+ }
84
+ declare module '*.webp?inline' {
85
+ const src: string;
86
+ export default src;
87
+ }
88
+ declare module '*.svg' {
89
+ const src: string;
90
+ export default src;
91
+ }
92
+ declare module '*.svg?url' {
93
+ const src: string;
94
+ export default src;
95
+ }
96
+ declare module '*.svg?inline' {
97
+ const src: string;
98
+ export default src;
99
+ }
100
+
101
+ /**
102
+ * CSS Modules
103
+ */
104
+ type CSSModuleClasses = {
105
+ readonly [key: string]: string;
106
+ };
107
+ declare module '*.module.css' {
108
+ const classes: CSSModuleClasses;
109
+ export default classes;
110
+ }
111
+ declare module '*.module.scss' {
112
+ const classes: CSSModuleClasses;
113
+ export default classes;
114
+ }
115
+ declare module '*.module.sass' {
116
+ const classes: CSSModuleClasses;
117
+ export default classes;
118
+ }
119
+ declare module '*.module.less' {
120
+ const classes: CSSModuleClasses;
121
+ export default classes;
122
+ }
123
+ declare module '*.module.styl' {
124
+ const classes: CSSModuleClasses;
125
+ export default classes;
126
+ }
127
+ declare module '*.module.stylus' {
128
+ const classes: CSSModuleClasses;
129
+ export default classes;
130
+ }
@@ -1,2 +0,0 @@
1
- import { DefaultRsbuildPlugin } from '@rsbuild/shared';
2
- export declare function pluginAssetsRetry(): DefaultRsbuildPlugin;
@@ -1,66 +0,0 @@
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 assetsRetry_exports = {};
30
- __export(assetsRetry_exports, {
31
- pluginAssetsRetry: () => pluginAssetsRetry
32
- });
33
- module.exports = __toCommonJS(assetsRetry_exports);
34
- var import_shared = require("@rsbuild/shared");
35
- function pluginAssetsRetry() {
36
- return {
37
- name: "plugin-assets-retry",
38
- setup(api) {
39
- api.modifyBundlerChain(
40
- async (chain, { CHAIN_ID, target, HtmlPlugin }) => {
41
- const config = api.getNormalizedConfig();
42
- if (!config.output.assetsRetry || (0, import_shared.isHtmlDisabled)(config, target)) {
43
- return;
44
- }
45
- const { AssetsRetryPlugin } = await Promise.resolve().then(() => __toESM(require("@rsbuild/shared")));
46
- const distDir = (0, import_shared.getDistPath)(config.output, "js");
47
- const { assetsRetry = {} } = config.output;
48
- if (assetsRetry.crossOrigin === void 0) {
49
- assetsRetry.crossOrigin = config.html.crossorigin;
50
- }
51
- chain.plugin(CHAIN_ID.PLUGIN.ASSETS_RETRY).use(AssetsRetryPlugin, [
52
- {
53
- ...assetsRetry,
54
- distDir,
55
- HtmlPlugin
56
- }
57
- ]);
58
- }
59
- );
60
- }
61
- };
62
- }
63
- // Annotate the CommonJS export names for ESM import in node:
64
- 0 && (module.exports = {
65
- pluginAssetsRetry
66
- });