@rspack-debug/test-tools 1.4.9 → 1.6.2
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/README.md +1 -1
- package/dist/case/builtin.d.ts +3 -0
- package/dist/case/builtin.js +152 -14
- package/dist/case/cache.d.ts +2 -2
- package/dist/case/cache.js +214 -12
- package/dist/case/common.d.ts +11 -0
- package/dist/case/common.js +249 -0
- package/dist/case/compiler.d.ts +17 -4
- package/dist/case/compiler.js +149 -12
- package/dist/case/config.d.ts +7 -2
- package/dist/case/config.js +106 -18
- package/dist/case/defaults.d.ts +13 -4
- package/dist/case/defaults.js +73 -18
- package/dist/case/diagnostic.d.ts +6 -0
- package/dist/case/diagnostic.js +121 -14
- package/dist/case/error.d.ts +15 -4
- package/dist/case/error.js +137 -12
- package/dist/case/esm-output.d.ts +1 -0
- package/dist/case/esm-output.js +117 -0
- package/dist/case/example.d.ts +1 -0
- package/dist/case/example.js +57 -0
- package/dist/case/hash.d.ts +2 -2
- package/dist/case/hash.js +72 -9
- package/dist/case/hook.d.ts +36 -4
- package/dist/case/hook.js +209 -20
- package/dist/case/hot-step.d.ts +2 -2
- package/dist/case/hot-step.js +309 -13
- package/dist/case/hot.d.ts +11 -2
- package/dist/case/hot.js +217 -12
- package/dist/case/incremental.d.ts +2 -2
- package/dist/case/incremental.js +24 -45
- package/dist/case/index.d.ts +31 -20
- package/dist/case/index.js +50 -34
- package/dist/case/multi-compiler.d.ts +19 -0
- package/dist/case/multi-compiler.js +97 -0
- package/dist/case/{nativeWatcher.js → native-watcher.js} +12 -25
- package/dist/case/normal.d.ts +3 -0
- package/dist/case/normal.js +202 -18
- package/dist/case/runner.d.ts +19 -0
- package/dist/case/runner.js +113 -0
- package/dist/case/serial.d.ts +2 -2
- package/dist/case/serial.js +10 -14
- package/dist/case/stats-api.d.ts +8 -3
- package/dist/case/stats-api.js +69 -10
- package/dist/case/stats-output.d.ts +11 -0
- package/dist/case/stats-output.js +199 -8
- package/dist/case/treeshaking.js +34 -7
- package/dist/case/watch.d.ts +27 -0
- package/dist/case/watch.js +318 -22
- package/dist/compiler.d.ts +16 -16
- package/dist/compiler.js +120 -15
- package/dist/helper/directory.d.ts +1 -1
- package/dist/helper/directory.js +2 -2
- package/dist/helper/expect/error.js +1 -1
- package/dist/helper/expect/placeholder.js +7 -7
- package/dist/helper/expect/to-match-file-snapshot.d.ts +1 -2
- package/dist/helper/expect/to-match-file-snapshot.js +3 -3
- package/dist/helper/hot-update/loader.d.ts +2 -1
- package/dist/helper/hot-update/loader.js +5 -30
- package/dist/helper/hot-update/plugin.d.ts +1 -1
- package/dist/helper/hot-update/plugin.js +15 -14
- package/dist/helper/index.d.ts +2 -1
- package/dist/helper/index.js +2 -1
- package/dist/helper/is.d.ts +2 -0
- package/dist/helper/is.js +15 -0
- package/dist/helper/legacy/LogTestPlugin.d.ts +6 -0
- package/dist/helper/legacy/LogTestPlugin.js +35 -0
- package/dist/helper/legacy/asModule.js +0 -2
- package/dist/helper/legacy/checkArrayExpectation.d.ts +1 -1
- package/dist/helper/legacy/checkArrayExpectation.js +8 -8
- package/dist/helper/legacy/createFakeWorker.d.ts +2 -2
- package/dist/helper/legacy/createFakeWorker.js +44 -20
- package/dist/helper/legacy/createLazyTestEnv.d.ts +3 -2
- package/dist/helper/legacy/createLazyTestEnv.js +3 -3
- package/dist/helper/legacy/deprecationTracking.d.ts +1 -0
- package/dist/helper/legacy/deprecationTracking.js +41 -0
- package/dist/helper/legacy/expectSource.d.ts +10 -0
- package/dist/helper/legacy/expectSource.js +23 -0
- package/dist/helper/legacy/findOutputFiles.d.ts +6 -0
- package/dist/helper/legacy/findOutputFiles.js +14 -0
- package/dist/helper/legacy/regexEscape.d.ts +2 -0
- package/dist/helper/legacy/regexEscape.js +5 -0
- package/dist/helper/legacy/supportDefaultAssignment.js +13 -0
- package/dist/helper/legacy/supportsTextDecoder.d.ts +2 -0
- package/dist/helper/legacy/supportsTextDecoder.js +9 -0
- package/dist/helper/legacy/supportsUsing.d.ts +2 -0
- package/dist/helper/legacy/supportsUsing.js +26 -0
- package/dist/helper/legacy/urlToRelativePath.js +5 -2
- package/dist/helper/read-config-file.d.ts +3 -2
- package/dist/helper/read-config-file.js +12 -2
- package/dist/helper/setup-env.js +15 -2
- package/dist/helper/setup-expect.js +2 -2
- package/dist/helper/setup-wasm.js +2 -2
- package/dist/helper/stringify-config.d.ts +2 -0
- package/dist/helper/stringify-config.js +43 -0
- package/dist/helper/util/checkStats.d.ts +0 -1
- package/dist/helper/util/checkStats.js +0 -18
- package/dist/helper/util/expectWarningFactory.js +2 -4
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -4
- package/dist/plugin/index.d.ts +0 -3
- package/dist/plugin/index.js +0 -3
- package/dist/plugin/lazy-compilation-test-plugin.js +4 -4
- package/dist/runner/index.d.ts +2 -9
- package/dist/runner/index.js +2 -9
- package/dist/runner/node/index.d.ts +41 -0
- package/dist/runner/node/index.js +450 -0
- package/dist/runner/web/index.d.ts +30 -0
- package/dist/runner/web/index.js +343 -0
- package/dist/test/context.d.ts +15 -18
- package/dist/test/context.js +52 -57
- package/dist/test/creator.d.ts +20 -19
- package/dist/test/creator.js +69 -57
- package/dist/test/debug.d.ts +15 -0
- package/dist/test/debug.js +205 -0
- package/dist/test/tester.d.ts +1 -0
- package/dist/test/tester.js +44 -6
- package/dist/type.d.ts +94 -64
- package/dist/type.js +8 -12
- package/package.json +23 -62
- package/rstest.d.ts +24 -0
- package/dist/case/diff.d.ts +0 -3
- package/dist/case/diff.js +0 -126
- package/dist/compare/comparator.d.ts +0 -17
- package/dist/compare/comparator.js +0 -52
- package/dist/compare/compare.d.ts +0 -17
- package/dist/compare/compare.js +0 -175
- package/dist/compare/format-code.d.ts +0 -16
- package/dist/compare/format-code.js +0 -239
- package/dist/compare/index.d.ts +0 -5
- package/dist/compare/index.js +0 -21
- package/dist/compare/replace-module-argument.d.ts +0 -1
- package/dist/compare/replace-module-argument.js +0 -8
- package/dist/compare/replace-runtime-module-name.d.ts +0 -1
- package/dist/compare/replace-runtime-module-name.js +0 -71
- package/dist/helper/legacy/FakeDocument.d.ts +0 -54
- package/dist/helper/legacy/FakeDocument.js +0 -278
- package/dist/helper/legacy/createLogger.d.ts +0 -23
- package/dist/helper/legacy/createLogger.js +0 -20
- package/dist/helper/legacy/supportsImportFn.d.ts +0 -1
- package/dist/helper/legacy/supportsImportFn.js +0 -15
- package/dist/helper/legacy/supportsWorker.js +0 -17
- package/dist/helper/legacy/walkCssTokens.d.ts +0 -40
- package/dist/helper/legacy/walkCssTokens.js +0 -761
- package/dist/helper/legacy/warmup-webpack.d.ts +0 -1
- package/dist/helper/legacy/warmup-webpack.js +0 -26
- package/dist/helper/loaders/hot-update.d.ts +0 -1
- package/dist/helper/loaders/hot-update.js +0 -40
- package/dist/helper/plugins/hot-update.d.ts +0 -7
- package/dist/helper/plugins/hot-update.js +0 -40
- package/dist/helper/plugins/index.d.ts +0 -1
- package/dist/helper/plugins/index.js +0 -17
- package/dist/helper/util/currentWatchStep.d.ts +0 -1
- package/dist/helper/util/currentWatchStep.js +0 -2
- package/dist/helper/util/identifier.d.ts +0 -76
- package/dist/helper/util/identifier.js +0 -339
- package/dist/helper/util/replaceMitteDiagnostic.d.ts +0 -2
- package/dist/helper/util/replaceMitteDiagnostic.js +0 -17
- package/dist/plugin/rspack-diff-config-plugin.d.ts +0 -7
- package/dist/plugin/rspack-diff-config-plugin.js +0 -42
- package/dist/plugin/webpack-diff-config-plugin.d.ts +0 -7
- package/dist/plugin/webpack-diff-config-plugin.js +0 -41
- package/dist/plugin/webpack-module-placeholder-plugin.d.ts +0 -3
- package/dist/plugin/webpack-module-placeholder-plugin.js +0 -106
- package/dist/processor/basic.d.ts +0 -24
- package/dist/processor/basic.js +0 -146
- package/dist/processor/builtin.d.ts +0 -9
- package/dist/processor/builtin.js +0 -171
- package/dist/processor/cache.d.ts +0 -20
- package/dist/processor/cache.js +0 -127
- package/dist/processor/config.d.ts +0 -11
- package/dist/processor/config.js +0 -81
- package/dist/processor/defaults.d.ts +0 -30
- package/dist/processor/defaults.js +0 -72
- package/dist/processor/diagnostic.d.ts +0 -15
- package/dist/processor/diagnostic.js +0 -102
- package/dist/processor/diff.d.ts +0 -30
- package/dist/processor/diff.js +0 -140
- package/dist/processor/error.d.ts +0 -23
- package/dist/processor/error.js +0 -95
- package/dist/processor/hash.d.ts +0 -10
- package/dist/processor/hash.js +0 -63
- package/dist/processor/hook.d.ts +0 -44
- package/dist/processor/hook.js +0 -204
- package/dist/processor/hot-incremental.d.ts +0 -14
- package/dist/processor/hot-incremental.js +0 -43
- package/dist/processor/hot-step.d.ts +0 -18
- package/dist/processor/hot-step.js +0 -304
- package/dist/processor/hot.d.ts +0 -17
- package/dist/processor/hot.js +0 -140
- package/dist/processor/index.d.ts +0 -20
- package/dist/processor/index.js +0 -36
- package/dist/processor/multi.d.ts +0 -17
- package/dist/processor/multi.js +0 -73
- package/dist/processor/normal.d.ts +0 -12
- package/dist/processor/normal.js +0 -150
- package/dist/processor/simple.d.ts +0 -23
- package/dist/processor/simple.js +0 -49
- package/dist/processor/snapshot.d.ts +0 -12
- package/dist/processor/snapshot.js +0 -66
- package/dist/processor/stats-api.d.ts +0 -18
- package/dist/processor/stats-api.js +0 -48
- package/dist/processor/stats.d.ts +0 -18
- package/dist/processor/stats.js +0 -206
- package/dist/processor/treeshaking.d.ts +0 -10
- package/dist/processor/treeshaking.js +0 -33
- package/dist/processor/watch.d.ts +0 -30
- package/dist/processor/watch.js +0 -245
- package/dist/reporter/diff-html.d.ts +0 -15
- package/dist/reporter/diff-html.js +0 -69
- package/dist/reporter/diff-stats.d.ts +0 -24
- package/dist/reporter/diff-stats.js +0 -131
- package/dist/reporter/index.d.ts +0 -2
- package/dist/reporter/index.js +0 -18
- package/dist/runner/basic.d.ts +0 -10
- package/dist/runner/basic.js +0 -63
- package/dist/runner/cache.d.ts +0 -5
- package/dist/runner/cache.js +0 -90
- package/dist/runner/hot-step.d.ts +0 -5
- package/dist/runner/hot-step.js +0 -87
- package/dist/runner/hot.d.ts +0 -5
- package/dist/runner/hot.js +0 -83
- package/dist/runner/multiple.d.ts +0 -11
- package/dist/runner/multiple.js +0 -38
- package/dist/runner/normal.d.ts +0 -5
- package/dist/runner/normal.js +0 -20
- package/dist/runner/runner/basic.d.ts +0 -30
- package/dist/runner/runner/basic.js +0 -107
- package/dist/runner/runner/cjs.d.ts +0 -14
- package/dist/runner/runner/cjs.js +0 -151
- package/dist/runner/runner/esm.d.ts +0 -7
- package/dist/runner/runner/esm.js +0 -125
- package/dist/runner/runner/index.d.ts +0 -8
- package/dist/runner/runner/index.js +0 -24
- package/dist/runner/runner/normal.d.ts +0 -9
- package/dist/runner/runner/normal.js +0 -23
- package/dist/runner/runner/watch.d.ts +0 -16
- package/dist/runner/runner/watch.js +0 -27
- package/dist/runner/runner/web/fake.d.ts +0 -18
- package/dist/runner/runner/web/fake.js +0 -143
- package/dist/runner/runner/web/jsdom.d.ts +0 -26
- package/dist/runner/runner/web/jsdom.js +0 -219
- package/dist/runner/runner/web.d.ts +0 -15
- package/dist/runner/runner/web.js +0 -32
- package/dist/runner/type.d.ts +0 -42
- package/dist/runner/type.js +0 -9
- package/dist/runner/watch.d.ts +0 -7
- package/dist/runner/watch.js +0 -60
- package/dist/test/simple.d.ts +0 -5
- package/dist/test/simple.js +0 -43
- package/jest.d.ts +0 -25
- package/template/diff.bundle.css +0 -1
- package/template/diff.bundle.js +0 -144
- package/template/diff.html +0 -14
- package/template/editor.worker.js +0 -1
- /package/dist/case/{nativeWatcher.d.ts → native-watcher.d.ts} +0 -0
- /package/dist/helper/legacy/{supportsWorker.d.ts → supportDefaultAssignment.d.ts} +0 -0
package/dist/compiler.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import EventEmitter from "node:events";
|
|
2
|
-
import {
|
|
2
|
+
import { Compiler, type RspackOptions, type Stats } from "@rspack/core";
|
|
3
|
+
import type { ITestCompilerManager, ITestContext } from "./type";
|
|
3
4
|
export declare enum ECompilerEvent {
|
|
4
5
|
Build = "build",
|
|
5
6
|
Option = "option",
|
|
6
7
|
Create = "create",
|
|
7
8
|
Close = "close"
|
|
8
9
|
}
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
protected
|
|
12
|
-
protected
|
|
13
|
-
protected
|
|
14
|
-
protected compilerInstance: TCompiler<T> | null;
|
|
15
|
-
protected compilerStats: TCompilerStats<T> | null;
|
|
10
|
+
export declare class TestCompilerManager implements ITestCompilerManager {
|
|
11
|
+
protected context: ITestContext;
|
|
12
|
+
protected compilerOptions: RspackOptions;
|
|
13
|
+
protected compilerInstance: Compiler | null;
|
|
14
|
+
protected compilerStats: Stats | null;
|
|
16
15
|
protected emitter: EventEmitter;
|
|
17
|
-
constructor(
|
|
18
|
-
getOptions():
|
|
19
|
-
setOptions(newOptions:
|
|
20
|
-
mergeOptions(newOptions:
|
|
21
|
-
getCompiler():
|
|
22
|
-
createCompiler():
|
|
23
|
-
|
|
16
|
+
constructor(context: ITestContext);
|
|
17
|
+
getOptions(): RspackOptions;
|
|
18
|
+
setOptions(newOptions: RspackOptions): RspackOptions;
|
|
19
|
+
mergeOptions(newOptions: RspackOptions): RspackOptions;
|
|
20
|
+
getCompiler(): Compiler | null;
|
|
21
|
+
createCompiler(): Compiler;
|
|
22
|
+
createCompilerWithCallback(callback: (error: Error | null, stats: Stats | null) => void): Compiler;
|
|
23
|
+
build(): Promise<Stats>;
|
|
24
24
|
watch(timeout?: number): void;
|
|
25
|
-
getStats():
|
|
25
|
+
getStats(): Stats | null;
|
|
26
26
|
getEmitter(): EventEmitter<[never]>;
|
|
27
27
|
close(): Promise<void>;
|
|
28
28
|
}
|
package/dist/compiler.js
CHANGED
|
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TestCompilerManager = exports.
|
|
6
|
+
exports.TestCompilerManager = exports.ECompilerEvent = void 0;
|
|
7
7
|
const node_events_1 = __importDefault(require("node:events"));
|
|
8
|
+
const core_1 = require("@rspack/core");
|
|
8
9
|
const webpack_merge_1 = __importDefault(require("webpack-merge"));
|
|
9
|
-
const
|
|
10
|
+
const debug_1 = require("./test/debug");
|
|
10
11
|
var ECompilerEvent;
|
|
11
12
|
(function (ECompilerEvent) {
|
|
12
13
|
ECompilerEvent["Build"] = "build";
|
|
@@ -14,14 +15,9 @@ var ECompilerEvent;
|
|
|
14
15
|
ECompilerEvent["Create"] = "create";
|
|
15
16
|
ECompilerEvent["Close"] = "close";
|
|
16
17
|
})(ECompilerEvent || (exports.ECompilerEvent = ECompilerEvent = {}));
|
|
17
|
-
exports.COMPILER_FACTORIES = {
|
|
18
|
-
[type_1.ECompilerType.Rspack]: ((options) => require("@rspack/core")(options)),
|
|
19
|
-
[type_1.ECompilerType.Webpack]: ((options) => require("webpack")(options))
|
|
20
|
-
};
|
|
21
18
|
class TestCompilerManager {
|
|
22
|
-
constructor(
|
|
23
|
-
this.
|
|
24
|
-
this.factories = factories;
|
|
19
|
+
constructor(context) {
|
|
20
|
+
this.context = context;
|
|
25
21
|
this.compilerOptions = {};
|
|
26
22
|
this.compilerInstance = null;
|
|
27
23
|
this.compilerStats = null;
|
|
@@ -44,7 +40,58 @@ class TestCompilerManager {
|
|
|
44
40
|
return this.compilerInstance;
|
|
45
41
|
}
|
|
46
42
|
createCompiler() {
|
|
47
|
-
this.compilerInstance =
|
|
43
|
+
this.compilerInstance = require("@rspack/core")(this.compilerOptions);
|
|
44
|
+
if (__DEBUG__) {
|
|
45
|
+
const context = this.context;
|
|
46
|
+
this.compilerInstance = new Proxy(this.compilerInstance, {
|
|
47
|
+
get(target, p, receiver) {
|
|
48
|
+
const value = Reflect.get(target, p, receiver);
|
|
49
|
+
if (typeof value === "function" &&
|
|
50
|
+
core_1.Compiler.prototype.hasOwnProperty(p)) {
|
|
51
|
+
return value.bind(target);
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
},
|
|
55
|
+
set(target, p, value, receiver) {
|
|
56
|
+
const debugSetProperties = context.getValue(debug_1.DEBUG_SCOPES.CreateCompilerSetProperties) || [];
|
|
57
|
+
debugSetProperties.push(`${p} ${new Error().stack?.split("\n")[2]?.trim()}`);
|
|
58
|
+
context.setValue(debug_1.DEBUG_SCOPES.CreateCompilerSetProperties, debugSetProperties);
|
|
59
|
+
return Reflect.set(target, p, value, receiver);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.context.setValue(debug_1.DEBUG_SCOPES.CreateCompilerInstance, {
|
|
63
|
+
path: require.resolve("@rspack/core"),
|
|
64
|
+
mode: "no-callback"
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
this.emitter.emit(ECompilerEvent.Create, this.compilerInstance);
|
|
68
|
+
return this.compilerInstance;
|
|
69
|
+
}
|
|
70
|
+
createCompilerWithCallback(callback) {
|
|
71
|
+
this.compilerInstance = require("@rspack/core")(this.compilerOptions, callback);
|
|
72
|
+
if (__DEBUG__) {
|
|
73
|
+
const context = this.context;
|
|
74
|
+
this.compilerInstance = new Proxy(this.compilerInstance, {
|
|
75
|
+
get(target, p, receiver) {
|
|
76
|
+
const value = Reflect.get(target, p, receiver);
|
|
77
|
+
if (typeof value === "function" &&
|
|
78
|
+
core_1.Compiler.prototype.hasOwnProperty(p)) {
|
|
79
|
+
return value.bind(target);
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
},
|
|
83
|
+
set(target, p, value, receiver) {
|
|
84
|
+
const debugSetProperties = context.getValue(debug_1.DEBUG_SCOPES.CreateCompilerSetProperties) || [];
|
|
85
|
+
debugSetProperties.push(`${p} ${new Error().stack?.split("\n")[2]?.trim()}`);
|
|
86
|
+
context.setValue(debug_1.DEBUG_SCOPES.CreateCompilerSetProperties, debugSetProperties);
|
|
87
|
+
return Reflect.set(target, p, value, receiver);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
this.context.setValue(debug_1.DEBUG_SCOPES.CreateCompilerInstance, {
|
|
91
|
+
path: require.resolve("@rspack/core"),
|
|
92
|
+
mode: "callback"
|
|
93
|
+
});
|
|
94
|
+
}
|
|
48
95
|
this.emitter.emit(ECompilerEvent.Create, this.compilerInstance);
|
|
49
96
|
return this.compilerInstance;
|
|
50
97
|
}
|
|
@@ -53,11 +100,39 @@ class TestCompilerManager {
|
|
|
53
100
|
throw new Error("Compiler should be created before build");
|
|
54
101
|
return new Promise((resolve, reject) => {
|
|
55
102
|
try {
|
|
103
|
+
const context = this.context;
|
|
104
|
+
if (__DEBUG__) {
|
|
105
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildMethod, {
|
|
106
|
+
method: "run"
|
|
107
|
+
});
|
|
108
|
+
}
|
|
56
109
|
this.compilerInstance.run((error, newStats) => {
|
|
57
110
|
this.emitter.emit(ECompilerEvent.Build, error, newStats);
|
|
58
|
-
if (error)
|
|
111
|
+
if (error) {
|
|
112
|
+
if (__DEBUG__) {
|
|
113
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildError, {
|
|
114
|
+
type: "fatal",
|
|
115
|
+
errors: [error]
|
|
116
|
+
});
|
|
117
|
+
}
|
|
59
118
|
return reject(error);
|
|
119
|
+
}
|
|
60
120
|
this.compilerStats = newStats;
|
|
121
|
+
if (__DEBUG__) {
|
|
122
|
+
if (newStats?.hasErrors()) {
|
|
123
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildError, {
|
|
124
|
+
type: "stats",
|
|
125
|
+
errors: newStats.toJson({
|
|
126
|
+
errors: true
|
|
127
|
+
}).errors || []
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (newStats?.hasWarnings()) {
|
|
131
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildWarning, newStats.toJson({
|
|
132
|
+
warnings: true
|
|
133
|
+
}).warnings || []);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
61
136
|
resolve(newStats);
|
|
62
137
|
});
|
|
63
138
|
}
|
|
@@ -69,7 +144,8 @@ class TestCompilerManager {
|
|
|
69
144
|
watch(timeout = 1000) {
|
|
70
145
|
if (!this.compilerInstance)
|
|
71
146
|
throw new Error("Compiler should be created before watch");
|
|
72
|
-
this.
|
|
147
|
+
const context = this.context;
|
|
148
|
+
const watchOptions = {
|
|
73
149
|
// IMPORTANT:
|
|
74
150
|
// This is a workaround for the issue that watchpack cannot detect the file change in time
|
|
75
151
|
// so we set the poll to 300ms to make it more sensitive to the file change
|
|
@@ -78,11 +154,40 @@ class TestCompilerManager {
|
|
|
78
154
|
// want to watch all files, which aligns with webpack's default behavior
|
|
79
155
|
ignored: [],
|
|
80
156
|
aggregateTimeout: timeout
|
|
81
|
-
}
|
|
157
|
+
};
|
|
158
|
+
if (__DEBUG__) {
|
|
159
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildMethod, {
|
|
160
|
+
method: "watch",
|
|
161
|
+
options: watchOptions
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
this.compilerInstance.watch(watchOptions, (error, newStats) => {
|
|
82
165
|
this.emitter.emit(ECompilerEvent.Build, error, newStats);
|
|
83
|
-
if (
|
|
84
|
-
|
|
166
|
+
if (__DEBUG__) {
|
|
167
|
+
if (error) {
|
|
168
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildError, {
|
|
169
|
+
type: "fatal",
|
|
170
|
+
errors: [error]
|
|
171
|
+
});
|
|
172
|
+
return error;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
85
175
|
if (newStats) {
|
|
176
|
+
if (__DEBUG__) {
|
|
177
|
+
if (newStats.hasErrors()) {
|
|
178
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildError, {
|
|
179
|
+
type: "stats",
|
|
180
|
+
errors: newStats.toJson({
|
|
181
|
+
errors: true
|
|
182
|
+
}).errors || []
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
if (newStats.hasWarnings()) {
|
|
186
|
+
context.setValue(debug_1.DEBUG_SCOPES.BuildWarning, newStats.toJson({
|
|
187
|
+
warnings: true
|
|
188
|
+
}).warnings || []);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
86
191
|
this.compilerStats = newStats;
|
|
87
192
|
}
|
|
88
193
|
return newStats;
|
package/dist/helper/directory.js
CHANGED
|
@@ -31,7 +31,7 @@ function describeByWalk(testFile, createCase, options = {}) {
|
|
|
31
31
|
.filter(folder => {
|
|
32
32
|
if (options.exclude) {
|
|
33
33
|
if (options.exclude.some(exclude => {
|
|
34
|
-
return exclude.test(folder);
|
|
34
|
+
return exclude.test(node_path_1.default.join(dirname, folder).replace(/\\/g, "/"));
|
|
35
35
|
})) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
@@ -54,7 +54,7 @@ function describeByWalk(testFile, createCase, options = {}) {
|
|
|
54
54
|
describeDirectory(caseName, currentLevel - 1);
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
|
-
const name = (0, _1.escapeSep)(node_path_1.default.join(testId
|
|
57
|
+
const name = (0, _1.escapeSep)(node_path_1.default.join(`${testId}Cases`, caseName).split(".").shift());
|
|
58
58
|
describeFn(name, () => {
|
|
59
59
|
const source = node_path_1.default.join(sourceBase, caseName);
|
|
60
60
|
let dist = "";
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.normalizePlaceholder = void 0;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
4
|
const path_serializer_1 = require("path-serializer");
|
|
9
5
|
// 1. escapeEOL \r\n -> \n
|
|
10
6
|
// 2. replace <RSPACK_ROOT> etc
|
|
@@ -13,14 +9,18 @@ const placeholderSerializer = (0, path_serializer_1.createSnapshotSerializer)({
|
|
|
13
9
|
root: __dirname.includes("node_modules")
|
|
14
10
|
? // Use `process.cwd()` when using outside Rspack
|
|
15
11
|
process.cwd()
|
|
16
|
-
:
|
|
12
|
+
: __ROOT_PATH__,
|
|
17
13
|
replace: [
|
|
18
14
|
{
|
|
19
|
-
match:
|
|
15
|
+
match: __RSPACK_TEST_TOOLS_PATH__,
|
|
20
16
|
mark: "test_tools_root"
|
|
21
17
|
},
|
|
22
18
|
{
|
|
23
|
-
match:
|
|
19
|
+
match: __TEST_PATH__,
|
|
20
|
+
mark: "test_root"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
match: __RSPACK_PATH__,
|
|
24
24
|
mark: "rspack_root"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { FileMatcherOptions } from "../../../jest";
|
|
2
1
|
/**
|
|
3
2
|
* Match given content against content of the specified file.
|
|
4
3
|
*
|
|
@@ -6,7 +5,7 @@ import type { FileMatcherOptions } from "../../../jest";
|
|
|
6
5
|
* @param filepath Path to the file to match against
|
|
7
6
|
* @param options Additional options for matching
|
|
8
7
|
*/
|
|
9
|
-
export declare function
|
|
8
|
+
export declare function toMatchFileSnapshotSync(this: {
|
|
10
9
|
testPath: string;
|
|
11
10
|
currentTestName: string;
|
|
12
11
|
assertionCalls: number;
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.toMatchFileSnapshotSync = toMatchFileSnapshotSync;
|
|
8
8
|
/* istanbul ignore file */
|
|
9
9
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
@@ -19,7 +19,7 @@ const { getSerializers } = require(node_path_1.default.join(node_path_1.default.
|
|
|
19
19
|
* Check if 2 strings or buffer are equal
|
|
20
20
|
*/
|
|
21
21
|
const isEqual = (a, b) => {
|
|
22
|
-
// @ts-
|
|
22
|
+
// @ts-expect-error: TypeScript gives error if we pass string to buffer.equals
|
|
23
23
|
return Buffer.isBuffer(a) ? a.equals(b) : a === b;
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
@@ -29,7 +29,7 @@ const isEqual = (a, b) => {
|
|
|
29
29
|
* @param filepath Path to the file to match against
|
|
30
30
|
* @param options Additional options for matching
|
|
31
31
|
*/
|
|
32
|
-
function
|
|
32
|
+
function toMatchFileSnapshotSync(rawContent, filepath, options = {}) {
|
|
33
33
|
const content = Buffer.isBuffer(rawContent)
|
|
34
34
|
? rawContent
|
|
35
35
|
: serialize(rawContent, /* ident */ 2, {
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
declare const loader: (c: string) => string;
|
|
2
|
+
export default loader;
|
|
@@ -1,32 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
${content}
|
|
9
|
-
let __hmr_children__ = [...module.children];
|
|
10
|
-
let __hmr_used_exports__ = __hmr_children__.reduce((res, child) => {
|
|
11
|
-
if (__webpack_module_cache__[child]) {
|
|
12
|
-
res[child] = __webpack_module_cache__[child].exports;
|
|
13
|
-
}
|
|
14
|
-
return res;
|
|
15
|
-
}, {});
|
|
16
|
-
module.hot.accept(__hmr_children__, () => {
|
|
17
|
-
__hmr_children__.forEach((child) => {
|
|
18
|
-
const reexports = __webpack_require__(child);
|
|
19
|
-
for (let key in reexports) {
|
|
20
|
-
if (!__hmr_used_exports__[child]) { continue; }
|
|
21
|
-
Object.defineProperty(__hmr_used_exports__[child], key, {
|
|
22
|
-
configurable: true,
|
|
23
|
-
enumerable: true,
|
|
24
|
-
get: () => reexports[key]
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
`;
|
|
30
|
-
}
|
|
31
|
-
return content.replace(/NEXT_HMR/g, "NEXT_HMR.bind(null, module)");
|
|
32
|
-
}
|
|
3
|
+
const loader = function (c) {
|
|
4
|
+
return c.replace(/NEXT_HMR/g, "NEXT_HMR.bind(null, module)");
|
|
5
|
+
};
|
|
6
|
+
module.exports = loader;
|
|
7
|
+
exports.default = loader;
|
|
@@ -6,10 +6,10 @@ export declare class HotUpdatePlugin {
|
|
|
6
6
|
private updateIndex;
|
|
7
7
|
private files;
|
|
8
8
|
constructor(projectDir: string, tempDir: string);
|
|
9
|
-
private getModifiedFiles;
|
|
10
9
|
private getContent;
|
|
11
10
|
private updateFiles;
|
|
12
11
|
initialize(): Promise<void>;
|
|
12
|
+
getModifiedFiles(): string[];
|
|
13
13
|
getUpdateIndex(): number;
|
|
14
14
|
getTotalUpdates(): number;
|
|
15
15
|
goNext(): Promise<void>;
|
|
@@ -4,15 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.HotUpdatePlugin = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const rimraf_1 = require("rimraf");
|
|
9
10
|
async function loopFile(dir, callback) {
|
|
10
|
-
const children = await
|
|
11
|
+
const children = await fs_extra_1.default.readdir(dir);
|
|
11
12
|
await Promise.all(children.map(async (filename) => {
|
|
12
13
|
const filePath = node_path_1.default.join(dir, filename);
|
|
13
|
-
const stat = await
|
|
14
|
+
const stat = await fs_extra_1.default.stat(filePath);
|
|
14
15
|
if (stat.isFile()) {
|
|
15
|
-
const content = await
|
|
16
|
+
const content = await fs_extra_1.default.readFile(filePath);
|
|
16
17
|
callback(filePath, content.toString());
|
|
17
18
|
}
|
|
18
19
|
else if (stat.isDirectory()) {
|
|
@@ -29,9 +30,6 @@ class HotUpdatePlugin {
|
|
|
29
30
|
this.updateIndex = 0;
|
|
30
31
|
this.files = {};
|
|
31
32
|
}
|
|
32
|
-
getModifiedFiles() {
|
|
33
|
-
return Object.keys(this.files);
|
|
34
|
-
}
|
|
35
33
|
getContent(filePath, index) {
|
|
36
34
|
const contents = this.files[filePath] || [];
|
|
37
35
|
let content = contents[index] === undefined ? contents.at(-1) || "" : contents[index];
|
|
@@ -51,19 +49,19 @@ class HotUpdatePlugin {
|
|
|
51
49
|
const { content, command } = this.getContent(filePath, this.updateIndex);
|
|
52
50
|
// match command
|
|
53
51
|
if (command === "delete") {
|
|
54
|
-
await
|
|
52
|
+
await fs_extra_1.default.remove(filePath);
|
|
55
53
|
return;
|
|
56
54
|
}
|
|
57
55
|
if (command === "force_write") {
|
|
58
|
-
await
|
|
56
|
+
await fs_extra_1.default.writeFile(filePath, content);
|
|
59
57
|
return;
|
|
60
58
|
}
|
|
61
59
|
// default
|
|
62
60
|
const { content: oldContent } = this.getContent(filePath, this.updateIndex - 1);
|
|
63
|
-
if (content === oldContent) {
|
|
61
|
+
if (this.updateIndex !== 0 && content === oldContent) {
|
|
64
62
|
return;
|
|
65
63
|
}
|
|
66
|
-
await
|
|
64
|
+
await fs_extra_1.default.writeFile(filePath, content);
|
|
67
65
|
}));
|
|
68
66
|
}
|
|
69
67
|
async initialize() {
|
|
@@ -71,8 +69,8 @@ class HotUpdatePlugin {
|
|
|
71
69
|
return;
|
|
72
70
|
}
|
|
73
71
|
this.initialized = true;
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
(0, rimraf_1.rimrafSync)(this.tempDir);
|
|
73
|
+
fs_extra_1.default.copySync(this.projectDir, this.tempDir);
|
|
76
74
|
await loopFile(this.tempDir, (filePath, content) => {
|
|
77
75
|
const contents = content.split(/---+\r?\n/g);
|
|
78
76
|
if (contents.length > 1) {
|
|
@@ -81,13 +79,16 @@ class HotUpdatePlugin {
|
|
|
81
79
|
});
|
|
82
80
|
await this.updateFiles();
|
|
83
81
|
}
|
|
82
|
+
getModifiedFiles() {
|
|
83
|
+
return Object.keys(this.files);
|
|
84
|
+
}
|
|
84
85
|
getUpdateIndex() {
|
|
85
86
|
return this.updateIndex;
|
|
86
87
|
}
|
|
87
88
|
getTotalUpdates() {
|
|
88
89
|
return Object.values(this.files).reduce((max, item) => {
|
|
89
90
|
return Math.max(max, item.length);
|
|
90
|
-
},
|
|
91
|
+
}, 1);
|
|
91
92
|
}
|
|
92
93
|
async goNext() {
|
|
93
94
|
this.updateIndex++;
|
package/dist/helper/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from "./directory";
|
|
2
|
-
export * from "./
|
|
2
|
+
export * from "./is";
|
|
3
3
|
export * from "./parse-modules";
|
|
4
4
|
export * from "./read-config-file";
|
|
5
|
+
export * from "./stringify-config";
|
|
5
6
|
export * from "./update-snapshot";
|
|
6
7
|
export * from "./util/checkStats";
|
|
7
8
|
export * from "./win";
|
package/dist/helper/index.js
CHANGED
|
@@ -15,9 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./directory"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./is"), exports);
|
|
19
19
|
__exportStar(require("./parse-modules"), exports);
|
|
20
20
|
__exportStar(require("./read-config-file"), exports);
|
|
21
|
+
__exportStar(require("./stringify-config"), exports);
|
|
21
22
|
__exportStar(require("./update-snapshot"), exports);
|
|
22
23
|
__exportStar(require("./util/checkStats"), exports);
|
|
23
24
|
__exportStar(require("./win"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isJavaScript = isJavaScript;
|
|
7
|
+
exports.isCss = isCss;
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
function isJavaScript(filePath) {
|
|
10
|
+
const ext = node_path_1.default.extname(filePath).toLowerCase();
|
|
11
|
+
return ext === ".js" || ext === ".mjs";
|
|
12
|
+
}
|
|
13
|
+
function isCss(filePath) {
|
|
14
|
+
return node_path_1.default.extname(filePath).toLowerCase() === ".css";
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
module.exports = class LogTestPlugin {
|
|
4
|
+
constructor(noTraced) {
|
|
5
|
+
this.noTraced = noTraced;
|
|
6
|
+
}
|
|
7
|
+
apply(compiler) {
|
|
8
|
+
const logSome = logger => {
|
|
9
|
+
logger.group("Group");
|
|
10
|
+
if (!this.noTraced) {
|
|
11
|
+
logger.error("Error");
|
|
12
|
+
logger.warn("Warning");
|
|
13
|
+
}
|
|
14
|
+
logger.info("Info");
|
|
15
|
+
logger.log("Log");
|
|
16
|
+
logger.debug("Debug");
|
|
17
|
+
logger.groupCollapsed("Collapsed group");
|
|
18
|
+
logger.log("Log inside collapsed group");
|
|
19
|
+
logger.group("Inner group");
|
|
20
|
+
logger.log("Inner inner message");
|
|
21
|
+
logger.groupEnd();
|
|
22
|
+
logger.groupEnd();
|
|
23
|
+
logger.log("Log");
|
|
24
|
+
logger.groupEnd();
|
|
25
|
+
logger.log("End");
|
|
26
|
+
};
|
|
27
|
+
logSome(compiler.getInfrastructureLogger("LogTestPlugin"));
|
|
28
|
+
compiler.hooks.compilation.tap("LogTestPlugin", compilation => {
|
|
29
|
+
const logger = compilation.getLogger("LogTestPlugin");
|
|
30
|
+
logSome(logger);
|
|
31
|
+
const otherLogger = compilation.getLogger("LogOtherTestPlugin");
|
|
32
|
+
otherLogger.debug("debug message only");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare function _exports(testDirectory: any, object: any, kind: any, filename: any, upperCaseKind: any, done: any): Promise<true | undefined>;
|
|
1
|
+
declare function _exports(testDirectory: any, object: any, kind: any, filename: any, upperCaseKind: any, options: any, done: any): Promise<true | undefined>;
|
|
2
2
|
export = _exports;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
"use strict";
|
|
3
|
-
const fs = require("
|
|
3
|
+
const fs = require("fs-extra");
|
|
4
4
|
const path = require("node:path");
|
|
5
5
|
const check = (expected, actual) => {
|
|
6
6
|
if (expected instanceof RegExp) {
|
|
@@ -59,16 +59,13 @@ ${tooMuch.map(item => `${explain(item)}`).join("\n\n")}`);
|
|
|
59
59
|
}
|
|
60
60
|
return diff.join("\n\n");
|
|
61
61
|
};
|
|
62
|
-
module.exports = async function checkArrayExpectation(testDirectory, object, kind, filename, upperCaseKind, done) {
|
|
63
|
-
const usePromise = typeof done === "function";
|
|
62
|
+
module.exports = async function checkArrayExpectation(testDirectory, object, kind, filename, upperCaseKind, options, done) {
|
|
64
63
|
done = typeof done === "function" ? done : error => {
|
|
65
64
|
throw error;
|
|
66
65
|
};
|
|
67
66
|
let array = object[`${kind}s`];
|
|
68
|
-
if (Array.isArray(array)) {
|
|
69
|
-
|
|
70
|
-
array = array.filter(item => !/from Terser/.test(item));
|
|
71
|
-
}
|
|
67
|
+
if (Array.isArray(array) && kind === "warning") {
|
|
68
|
+
array = array.filter(item => !/from Terser/.test(item));
|
|
72
69
|
}
|
|
73
70
|
if (fs.existsSync(path.join(testDirectory, `${filename}.js`))) {
|
|
74
71
|
// CHANGE: added file for sorting messages in multi-thread environment
|
|
@@ -77,7 +74,10 @@ module.exports = async function checkArrayExpectation(testDirectory, object, kin
|
|
|
77
74
|
array = sorter(array);
|
|
78
75
|
}
|
|
79
76
|
const expectedFilename = path.join(testDirectory, `${filename}.js`);
|
|
80
|
-
|
|
77
|
+
let expected = require(expectedFilename);
|
|
78
|
+
if (typeof expected === "function") {
|
|
79
|
+
expected = expected(options);
|
|
80
|
+
}
|
|
81
81
|
const diff = diffItems(array, expected, kind);
|
|
82
82
|
if (expected.length < array.length) {
|
|
83
83
|
done(new Error(`More ${kind}s (${array.length} instead of ${expected.length}) while compiling than expected:\n\n${diff}\n\nCheck expected ${kind}s: ${expectedFilename}`));
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
declare function _exports(env: any, { outputDirectory }: {
|
|
2
2
|
outputDirectory: any;
|
|
3
3
|
}): {
|
|
4
|
-
new (
|
|
4
|
+
new (resource: any, options?: {}): {
|
|
5
5
|
url: any;
|
|
6
6
|
worker: import("worker_threads").Worker;
|
|
7
7
|
_onmessage: ((data: any) => void) | undefined;
|
|
8
|
-
onmessage: any;
|
|
8
|
+
set onmessage(value: any);
|
|
9
9
|
postMessage(data: any): void;
|
|
10
10
|
terminate(): Promise<number>;
|
|
11
11
|
};
|