1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| const WebpackError = require('webpack/lib/WebpackError');
| const ModuleError = require('webpack/lib/ModuleError');
| const ModuleWarning = require('webpack/lib/ModuleWarning');
|
| const pluginCompat = require('./util/plugin-compat');
|
| class TransformModuleErrorsPlugin {
| apply(compiler) {
| let freeze;
| let thaw;
| let mapFreeze;
| let mapThaw;
|
| pluginCompat.tap(
| compiler,
| '_hardSourceMethods',
| 'TransformModuleErrorsPlugin',
| methods => {
| // store = methods.store;
| // fetch = methods.fetch;
| freeze = methods.freeze;
| thaw = methods.thaw;
| mapFreeze = methods.mapFreeze;
| mapThaw = methods.mapThaw;
| },
| );
|
| function freezeErrorWarning(
| frozen,
| { message, details, originLoc, dependencies, name, loc, constructor },
| extra,
| ) {
| return {
| constructor: constructor.name,
| message: message,
| details: details,
| originLoc: originLoc,
| dependencies:
| dependencies && mapFreeze('Dependency', null, dependencies, extra),
| name: name,
| loc: loc,
| };
| }
|
| pluginCompat.tap(
| compiler,
| '_hardSourceFreezeModuleError',
| 'TransformModuleErrorsPlugin',
| freezeErrorWarning,
| );
| pluginCompat.tap(
| compiler,
| '_hardSourceFreezeModuleWarning',
| 'TransformModuleErrorsPlugin',
| freezeErrorWarning,
| );
|
| function thawError(
| ErrorClass,
| error,
| { constructor, message, details, originLoc, dependencies, name, loc },
| extra,
| ) {
| const module = extra.module;
| error = new ErrorClass(module, message);
| if (constructor === 'SystemImportDeprecationWarning') {
| error = new WebpackError(message);
| error.module = module;
| }
| if (details) {
| error.details = details;
| }
|
| if (extra.origin) {
| error.origin = extra.origin;
| }
| if (originLoc) {
| error.originLoc = originLoc;
| }
| if (dependencies) {
| error.dependencies = mapThaw('Dependency', null, dependencies, extra);
| }
| if (name) {
| error.name = name;
| }
| if (loc) {
| error.loc = loc;
| }
| return error;
| }
|
| pluginCompat.tap(
| compiler,
| '_hardSourceThawModuleError',
| 'TransformModuleErrorsPlugin',
| (error, frozen, extra) => thawError(ModuleError, error, frozen, extra),
| );
|
| pluginCompat.tap(
| compiler,
| '_hardSourceThawModuleWarning',
| 'TransformModuleErrorsPlugin',
| (warning, frozen, extra) =>
| thawError(ModuleWarning, warning, frozen, extra),
| );
| }
| }
|
| module.exports = TransformModuleErrorsPlugin;
|
|