@umijs/bundler-utoopack 4.6.61 → 4.6.62
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/client/client/client.d.ts +1 -0
- package/client/client/client.js +204 -0
- package/dist/config.js +93 -3
- package/package.json +5 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
const ACTIONS = {
|
|
2
|
+
BUILT: 'built',
|
|
3
|
+
BUILDING: 'building',
|
|
4
|
+
RELOAD: 'reload',
|
|
5
|
+
SYNC: 'sync',
|
|
6
|
+
TURBOPACK_CONNECTED: 'turbopack-connected',
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
console.log('[utoopack] connecting...');
|
|
10
|
+
|
|
11
|
+
let hasCompileErrors = false;
|
|
12
|
+
let shouldReloadOnRecovery = false;
|
|
13
|
+
let overlayIframe = null;
|
|
14
|
+
|
|
15
|
+
const enableErrorOverlay =
|
|
16
|
+
typeof process === 'undefined' ||
|
|
17
|
+
!process.env ||
|
|
18
|
+
process.env.ERROR_OVERLAY !== 'none';
|
|
19
|
+
|
|
20
|
+
function escapeHtml(value) {
|
|
21
|
+
return value
|
|
22
|
+
.replace(/&/g, '&')
|
|
23
|
+
.replace(/</g, '<')
|
|
24
|
+
.replace(/>/g, '>')
|
|
25
|
+
.replace(/"/g, '"')
|
|
26
|
+
.replace(/'/g, ''');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function dismissBuildError() {
|
|
30
|
+
if (overlayIframe) {
|
|
31
|
+
overlayIframe.remove();
|
|
32
|
+
overlayIframe = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function reportBuildError(message) {
|
|
37
|
+
dismissBuildError();
|
|
38
|
+
|
|
39
|
+
overlayIframe = document.createElement('iframe');
|
|
40
|
+
overlayIframe.style.cssText = [
|
|
41
|
+
'position: fixed',
|
|
42
|
+
'top: 0',
|
|
43
|
+
'left: 0',
|
|
44
|
+
'width: 100%',
|
|
45
|
+
'height: 100%',
|
|
46
|
+
'border: none',
|
|
47
|
+
'z-index: 2147483647',
|
|
48
|
+
].join(';');
|
|
49
|
+
document.body.appendChild(overlayIframe);
|
|
50
|
+
|
|
51
|
+
const doc = overlayIframe.contentDocument;
|
|
52
|
+
if (!doc) return;
|
|
53
|
+
|
|
54
|
+
doc.open();
|
|
55
|
+
doc.write(`<!doctype html>
|
|
56
|
+
<html>
|
|
57
|
+
<head>
|
|
58
|
+
<meta charset="utf-8" />
|
|
59
|
+
<style>
|
|
60
|
+
html, body { margin: 0; width: 100%; min-height: 100%; background: #18191a; color: #f6f7f8; font-family: Menlo, Monaco, Consolas, "Liberation Mono", monospace; }
|
|
61
|
+
main { box-sizing: border-box; min-height: 100vh; padding: 32px; }
|
|
62
|
+
h1 { margin: 0 0 24px; color: #ff6b6b; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 28px; line-height: 1.2; font-weight: 600; }
|
|
63
|
+
pre { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: 14px; line-height: 1.6; }
|
|
64
|
+
button { position: fixed; top: 16px; right: 16px; width: 32px; height: 32px; border: 1px solid #555; border-radius: 4px; background: #242526; color: #f6f7f8; font-size: 22px; line-height: 1; cursor: pointer; }
|
|
65
|
+
</style>
|
|
66
|
+
</head>
|
|
67
|
+
<body>
|
|
68
|
+
<button aria-label="Close">×</button>
|
|
69
|
+
<main>
|
|
70
|
+
<h1>Failed to compile</h1>
|
|
71
|
+
<pre>${escapeHtml(message)}</pre>
|
|
72
|
+
</main>
|
|
73
|
+
<script>
|
|
74
|
+
document.querySelector('button').addEventListener('click', function () {
|
|
75
|
+
window.parent.postMessage({ type: 'utoopack-dismiss-error-overlay' }, '*');
|
|
76
|
+
});
|
|
77
|
+
</script>
|
|
78
|
+
</body>
|
|
79
|
+
</html>`);
|
|
80
|
+
doc.close();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function getHost() {
|
|
84
|
+
if (
|
|
85
|
+
typeof process !== 'undefined' &&
|
|
86
|
+
process.env &&
|
|
87
|
+
process.env.SOCKET_SERVER
|
|
88
|
+
) {
|
|
89
|
+
return new URL(process.env.SOCKET_SERVER);
|
|
90
|
+
}
|
|
91
|
+
return location;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function getSocketUrl() {
|
|
95
|
+
const host = getHost();
|
|
96
|
+
const isHttps = host.protocol === 'https:';
|
|
97
|
+
return `${isHttps ? 'wss' : 'ws'}://${host.host}/turbopack-hmr`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function getPingUrl() {
|
|
101
|
+
const host = getHost();
|
|
102
|
+
return `${host.protocol}//${host.host}/__umi_ping`;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function getErrorMessage(error) {
|
|
106
|
+
if (!error) return 'Unknown utoopack compile error.';
|
|
107
|
+
if (typeof error === 'string') return error;
|
|
108
|
+
return [error.message, error.details, error.stack].filter(Boolean).join('\n');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function handleErrors(errors) {
|
|
112
|
+
hasCompileErrors = true;
|
|
113
|
+
shouldReloadOnRecovery = true;
|
|
114
|
+
|
|
115
|
+
const messages = errors.map(getErrorMessage).filter(Boolean);
|
|
116
|
+
const firstError = messages[0] || 'Unknown utoopack compile error.';
|
|
117
|
+
|
|
118
|
+
if (enableErrorOverlay) {
|
|
119
|
+
reportBuildError(firstError);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
messages.forEach((message) => console.error(message));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function handleWarnings(warnings) {
|
|
126
|
+
warnings.map(getErrorMessage).filter(Boolean).forEach((message) => {
|
|
127
|
+
console.warn(message);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function handleSuccess() {
|
|
132
|
+
const recoveredFromCompileErrors = hasCompileErrors;
|
|
133
|
+
hasCompileErrors = false;
|
|
134
|
+
|
|
135
|
+
if (enableErrorOverlay) {
|
|
136
|
+
dismissBuildError();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (recoveredFromCompileErrors && shouldReloadOnRecovery) {
|
|
140
|
+
shouldReloadOnRecovery = false;
|
|
141
|
+
window.location.reload();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function handleMessage(payload) {
|
|
146
|
+
switch (payload.action) {
|
|
147
|
+
case ACTIONS.TURBOPACK_CONNECTED:
|
|
148
|
+
console.log('[utoopack] connected.');
|
|
149
|
+
break;
|
|
150
|
+
case ACTIONS.BUILDING:
|
|
151
|
+
console.log('[utoopack] compiling...');
|
|
152
|
+
break;
|
|
153
|
+
case ACTIONS.SYNC:
|
|
154
|
+
case ACTIONS.BUILT:
|
|
155
|
+
if (payload.errors && payload.errors.length) {
|
|
156
|
+
handleErrors(payload.errors);
|
|
157
|
+
} else {
|
|
158
|
+
handleSuccess();
|
|
159
|
+
}
|
|
160
|
+
if (payload.warnings && payload.warnings.length) {
|
|
161
|
+
handleWarnings(payload.warnings);
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
case ACTIONS.RELOAD:
|
|
165
|
+
window.location.reload();
|
|
166
|
+
break;
|
|
167
|
+
default:
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
async function waitForSuccessfulPing(ms = 1000) {
|
|
173
|
+
// eslint-disable-next-line no-constant-condition
|
|
174
|
+
while (true) {
|
|
175
|
+
try {
|
|
176
|
+
await fetch(getPingUrl());
|
|
177
|
+
break;
|
|
178
|
+
} catch (e) {
|
|
179
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const socket = new WebSocket(getSocketUrl());
|
|
185
|
+
|
|
186
|
+
window.addEventListener('message', (event) => {
|
|
187
|
+
if (event.data && event.data.type === 'utoopack-dismiss-error-overlay') {
|
|
188
|
+
dismissBuildError();
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
socket.addEventListener('message', ({ data }) => {
|
|
193
|
+
try {
|
|
194
|
+
handleMessage(JSON.parse(data));
|
|
195
|
+
} catch (e) {
|
|
196
|
+
console.error(e);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
socket.addEventListener('close', async () => {
|
|
201
|
+
console.info('[utoopack] Dev server disconnected. Polling for restart...');
|
|
202
|
+
await waitForSuccessfulPing();
|
|
203
|
+
window.location.reload();
|
|
204
|
+
});
|
package/dist/config.js
CHANGED
|
@@ -42,6 +42,9 @@ var import_pack = require("@utoo/pack");
|
|
|
42
42
|
var import_fs = __toESM(require("fs"));
|
|
43
43
|
var import_path = require("path");
|
|
44
44
|
var DEFAULT_STATIC_PATH_PREFIX = "static/";
|
|
45
|
+
var UTOOPACK_OVERLAY_CLIENT_ENTRY = normalizeUtoopackPath(
|
|
46
|
+
require.resolve("../client/client/client.js")
|
|
47
|
+
);
|
|
45
48
|
function getAssetModuleFilename(staticPathPrefix) {
|
|
46
49
|
const prefix = staticPathPrefix !== void 0 ? staticPathPrefix : DEFAULT_STATIC_PATH_PREFIX;
|
|
47
50
|
return `${prefix}[name].[contenthash:8]`;
|
|
@@ -221,6 +224,85 @@ function normalizeUtoopackEntry(entry) {
|
|
|
221
224
|
}
|
|
222
225
|
return entry;
|
|
223
226
|
}
|
|
227
|
+
function getRelativeImportSpecifier(fromFile, toFile) {
|
|
228
|
+
const relativePath = normalizeUtoopackPath(
|
|
229
|
+
(0, import_path.relative)((0, import_path.dirname)(fromFile), toFile)
|
|
230
|
+
);
|
|
231
|
+
return relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
|
|
232
|
+
}
|
|
233
|
+
function getOverlayEntryImport(request, cwd, fromFile) {
|
|
234
|
+
if (request.startsWith(".") || (0, import_path.isAbsolute)(request)) {
|
|
235
|
+
return getRelativeImportSpecifier(
|
|
236
|
+
fromFile,
|
|
237
|
+
normalizeUtoopackPath((0, import_path.resolve)(cwd, request))
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
return request;
|
|
241
|
+
}
|
|
242
|
+
function getOverlayEntryPath(cwd, entryName) {
|
|
243
|
+
const safeEntryName = entryName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
244
|
+
return normalizeUtoopackPath(
|
|
245
|
+
(0, import_path.join)(
|
|
246
|
+
cwd,
|
|
247
|
+
"node_modules/.cache/umi/utoopack-overlay",
|
|
248
|
+
`${safeEntryName}.js`
|
|
249
|
+
)
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
function writeUtoopackOverlayEntry(opts) {
|
|
253
|
+
const entryPath = getOverlayEntryPath(opts.cwd, opts.entryName);
|
|
254
|
+
const overlayClientPath = normalizeUtoopackPath(
|
|
255
|
+
(0, import_path.join)((0, import_path.dirname)(entryPath), "client.js")
|
|
256
|
+
);
|
|
257
|
+
import_fs.default.mkdirSync((0, import_path.dirname)(entryPath), { recursive: true });
|
|
258
|
+
import_fs.default.copyFileSync(UTOOPACK_OVERLAY_CLIENT_ENTRY, overlayClientPath);
|
|
259
|
+
import_fs.default.writeFileSync(
|
|
260
|
+
entryPath,
|
|
261
|
+
[
|
|
262
|
+
getRelativeImportSpecifier(entryPath, overlayClientPath),
|
|
263
|
+
...opts.imports.map(
|
|
264
|
+
(item) => getOverlayEntryImport(item, opts.cwd, entryPath)
|
|
265
|
+
)
|
|
266
|
+
].map((item) => `import ${JSON.stringify(item)};`).join("\n") + "\n",
|
|
267
|
+
"utf-8"
|
|
268
|
+
);
|
|
269
|
+
return entryPath;
|
|
270
|
+
}
|
|
271
|
+
function prependUtoopackOverlayClient(entry, cwd, entryName = "umi") {
|
|
272
|
+
if (typeof entry === "string") {
|
|
273
|
+
return writeUtoopackOverlayEntry({
|
|
274
|
+
cwd,
|
|
275
|
+
entryName,
|
|
276
|
+
imports: [entry]
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
if (Array.isArray(entry)) {
|
|
280
|
+
return writeUtoopackOverlayEntry({
|
|
281
|
+
cwd,
|
|
282
|
+
entryName,
|
|
283
|
+
imports: entry
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
if (entry && typeof entry === "object") {
|
|
287
|
+
if ("import" in entry) {
|
|
288
|
+
return {
|
|
289
|
+
...entry,
|
|
290
|
+
import: prependUtoopackOverlayClient(
|
|
291
|
+
entry.import,
|
|
292
|
+
cwd,
|
|
293
|
+
entryName
|
|
294
|
+
)
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
return Object.fromEntries(
|
|
298
|
+
Object.entries(entry).map(([key, value]) => [
|
|
299
|
+
key,
|
|
300
|
+
prependUtoopackOverlayClient(value, cwd, key)
|
|
301
|
+
])
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
return entry;
|
|
305
|
+
}
|
|
224
306
|
function normalizeUtoopackOpts(opts) {
|
|
225
307
|
return {
|
|
226
308
|
...opts,
|
|
@@ -231,7 +313,9 @@ function normalizeUtoopackOpts(opts) {
|
|
|
231
313
|
}
|
|
232
314
|
function getNormalizedAlias(alias, rootDir) {
|
|
233
315
|
const newAlias = Object.fromEntries(
|
|
234
|
-
Object.entries(alias || {}).
|
|
316
|
+
Object.entries(alias || {}).filter((entry) => {
|
|
317
|
+
return typeof entry[1] === "string";
|
|
318
|
+
}).map(([key, value]) => [
|
|
235
319
|
normalizeUtoopackPath(key),
|
|
236
320
|
normalizeUtoopackPath(value)
|
|
237
321
|
])
|
|
@@ -543,7 +627,7 @@ async function getProdUtooPackConfig(rawOpts) {
|
|
|
543
627
|
...utooBundlerOpts,
|
|
544
628
|
tracing: false,
|
|
545
629
|
config: import_utils.lodash.merge(
|
|
546
|
-
import_utils.lodash.omit(utooBundlerOpts.config, ["define"]),
|
|
630
|
+
import_utils.lodash.omit(utooBundlerOpts.config, ["define", "resolve"]),
|
|
547
631
|
{
|
|
548
632
|
output: {
|
|
549
633
|
clean: opts.clean,
|
|
@@ -556,6 +640,7 @@ async function getProdUtooPackConfig(rawOpts) {
|
|
|
556
640
|
concatenateModules: true
|
|
557
641
|
},
|
|
558
642
|
resolve: {
|
|
643
|
+
...utooBundlerOpts.config.resolve || {},
|
|
559
644
|
alias: getNormalizedAlias(
|
|
560
645
|
(_a = utooBundlerOpts.config.resolve) == null ? void 0 : _a.alias,
|
|
561
646
|
opts.rootDir
|
|
@@ -649,6 +734,10 @@ async function getDevUtooPackConfig(rawOpts) {
|
|
|
649
734
|
hmr: false,
|
|
650
735
|
analyze: process.env.ANALYZE
|
|
651
736
|
});
|
|
737
|
+
webpackConfig = {
|
|
738
|
+
...webpackConfig,
|
|
739
|
+
entry: prependUtoopackOverlayClient(webpackConfig.entry, opts.cwd)
|
|
740
|
+
};
|
|
652
741
|
let utooBundlerOpts = (0, import_pack.compatOptionsFromWebpack)({
|
|
653
742
|
...import_utils.lodash.omit(webpackConfig, ["target", "module", "externals"]),
|
|
654
743
|
webpackMode: true
|
|
@@ -685,7 +774,7 @@ async function getDevUtooPackConfig(rawOpts) {
|
|
|
685
774
|
}
|
|
686
775
|
} : {},
|
|
687
776
|
config: import_utils.lodash.merge(
|
|
688
|
-
import_utils.lodash.omit(utooBundlerOpts.config, ["define"]),
|
|
777
|
+
import_utils.lodash.omit(utooBundlerOpts.config, ["define", "resolve"]),
|
|
689
778
|
{
|
|
690
779
|
output: {
|
|
691
780
|
clean: opts.clean === void 0 ? true : opts.clean,
|
|
@@ -694,6 +783,7 @@ async function getDevUtooPackConfig(rawOpts) {
|
|
|
694
783
|
...opts.disableCopy ? { copy: [] } : { copy: ["public"].concat(copy) }
|
|
695
784
|
},
|
|
696
785
|
resolve: {
|
|
786
|
+
...utooBundlerOpts.config.resolve || {},
|
|
697
787
|
alias: getNormalizedAlias(
|
|
698
788
|
(_a = utooBundlerOpts.config.resolve) == null ? void 0 : _a.alias,
|
|
699
789
|
opts.rootDir
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/bundler-utoopack",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.62",
|
|
4
4
|
"description": "@umijs/bundler-utoopack",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
|
+
"client",
|
|
8
9
|
"dist"
|
|
9
10
|
],
|
|
10
11
|
"dependencies": {
|
|
11
|
-
"@utoo/pack": "1.4.
|
|
12
|
+
"@utoo/pack": "1.4.13",
|
|
12
13
|
"compression": "^1.7.4",
|
|
13
14
|
"connect-history-api-fallback": "^2.0.0",
|
|
14
15
|
"cors": "^2.8.5",
|
|
@@ -20,8 +21,8 @@
|
|
|
20
21
|
"resolve-url-loader": "5.0.0",
|
|
21
22
|
"sass": "1.54.0",
|
|
22
23
|
"sass-loader": "13.2.0",
|
|
23
|
-
"@umijs/bundler-utils": "4.6.
|
|
24
|
-
"@umijs/bundler-webpack": "4.6.
|
|
24
|
+
"@umijs/bundler-utils": "4.6.62",
|
|
25
|
+
"@umijs/bundler-webpack": "4.6.62"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
28
|
"father": "4.1.5"
|