vite 2.9.0-beta.0 → 2.9.0-beta.11
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.
Potentially problematic release.
This version of vite might be problematic. Click here for more details.
- package/LICENSE.md +1 -1
- package/dist/client/client.mjs +18 -9
- package/dist/client/client.mjs.map +1 -1
- package/dist/node/chunks/{dep-026034b4.js → dep-3a0ad60c.js} +1 -1
- package/dist/node/chunks/{dep-229a03bb.js → dep-76a88ec8.js} +3 -3
- package/dist/node/chunks/{dep-429629d5.js → dep-7765b27c.js} +34116 -29724
- package/dist/node/chunks/{dep-5f1b3f27.js → dep-7ef2e58a.js} +116 -8
- package/dist/node/chunks/{dep-ec2e68f4.js → dep-bcc0af00.js} +103 -25
- package/dist/node/cli.js +6 -6
- package/dist/node/index.d.ts +154 -52
- package/dist/node/index.js +3 -2
- package/dist/node/terser.js +90 -15
- package/package.json +23 -22
- package/src/client/client.ts +34 -36
- package/types/customEvent.d.ts +16 -5
- package/types/hot.d.ts +25 -0
- package/types/importMeta.d.ts +1 -40
- package/types/ws.d.ts +54 -29
package/dist/node/terser.js
CHANGED
|
@@ -10201,7 +10201,7 @@ function is_some_comments(comment) {
|
|
|
10201
10201
|
// multiline comment
|
|
10202
10202
|
return (
|
|
10203
10203
|
(comment.type === "comment2" || comment.type === "comment1")
|
|
10204
|
-
&& /@preserve|@lic|@cc_on|^\**!/i.test(comment.value)
|
|
10204
|
+
&& /@preserve|@copyright|@lic|@cc_on|^\**!/i.test(comment.value)
|
|
10205
10205
|
);
|
|
10206
10206
|
}
|
|
10207
10207
|
|
|
@@ -10314,8 +10314,8 @@ function OutputStream(options) {
|
|
|
10314
10314
|
var OUTPUT = new Rope();
|
|
10315
10315
|
let printed_comments = new Set();
|
|
10316
10316
|
|
|
10317
|
-
var to_utf8 = options.ascii_only ? function(str, identifier) {
|
|
10318
|
-
if (options.ecma >= 2015 && !options.safari10) {
|
|
10317
|
+
var to_utf8 = options.ascii_only ? function(str, identifier = false, regexp = false) {
|
|
10318
|
+
if (options.ecma >= 2015 && !options.safari10 && !regexp) {
|
|
10319
10319
|
str = str.replace(/[\ud800-\udbff][\udc00-\udfff]/g, function(ch) {
|
|
10320
10320
|
var code = get_full_char_code(ch, 0).toString(16);
|
|
10321
10321
|
return "\\u{" + code + "}";
|
|
@@ -11127,7 +11127,8 @@ function OutputStream(options) {
|
|
|
11127
11127
|
var p = output.parent();
|
|
11128
11128
|
if (this.args.length === 0
|
|
11129
11129
|
&& (p instanceof AST_PropAccess // (new Date).getTime(), (new Date)["getTime"]()
|
|
11130
|
-
|| p instanceof AST_Call && p.expression === this
|
|
11130
|
+
|| p instanceof AST_Call && p.expression === this
|
|
11131
|
+
|| p instanceof AST_PrefixedTemplateString && p.prefix === this)) // (new foo)(bar)
|
|
11131
11132
|
return true;
|
|
11132
11133
|
});
|
|
11133
11134
|
|
|
@@ -12242,7 +12243,7 @@ function OutputStream(options) {
|
|
|
12242
12243
|
flags = flags ? sort_regexp_flags(flags) : "";
|
|
12243
12244
|
source = source.replace(r_slash_script, slash_script_replace);
|
|
12244
12245
|
|
|
12245
|
-
output.print(output.to_utf8(`/${source}/${flags}
|
|
12246
|
+
output.print(output.to_utf8(`/${source}/${flags}`, false, true));
|
|
12246
12247
|
|
|
12247
12248
|
const parent = output.parent();
|
|
12248
12249
|
if (
|
|
@@ -12666,6 +12667,11 @@ const MASK_EXPORT_WANT_MANGLE = 1 << 1;
|
|
|
12666
12667
|
|
|
12667
12668
|
let function_defs = null;
|
|
12668
12669
|
let unmangleable_names = null;
|
|
12670
|
+
/**
|
|
12671
|
+
* When defined, there is a function declaration somewhere that's inside of a block.
|
|
12672
|
+
* See https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics
|
|
12673
|
+
*/
|
|
12674
|
+
let scopes_with_block_defuns = null;
|
|
12669
12675
|
|
|
12670
12676
|
class SymbolDef {
|
|
12671
12677
|
constructor(scope, orig, init) {
|
|
@@ -13216,6 +13222,15 @@ AST_Scope.DEFMETHOD("def_variable", function(symbol, init) {
|
|
|
13216
13222
|
});
|
|
13217
13223
|
|
|
13218
13224
|
function next_mangled(scope, options) {
|
|
13225
|
+
let defun_scope;
|
|
13226
|
+
if (
|
|
13227
|
+
scopes_with_block_defuns
|
|
13228
|
+
&& (defun_scope = scope.get_defun_scope())
|
|
13229
|
+
&& scopes_with_block_defuns.has(defun_scope)
|
|
13230
|
+
) {
|
|
13231
|
+
scope = defun_scope;
|
|
13232
|
+
}
|
|
13233
|
+
|
|
13219
13234
|
var ext = scope.enclosed;
|
|
13220
13235
|
var nth_identifier = options.nth_identifier;
|
|
13221
13236
|
out: while (true) {
|
|
@@ -13350,6 +13365,13 @@ AST_Toplevel.DEFMETHOD("mangle_names", function(options) {
|
|
|
13350
13365
|
lname = save_nesting;
|
|
13351
13366
|
return true; // don't descend again in TreeWalker
|
|
13352
13367
|
}
|
|
13368
|
+
if (
|
|
13369
|
+
node instanceof AST_Defun
|
|
13370
|
+
&& !(tw.parent() instanceof AST_Scope)
|
|
13371
|
+
) {
|
|
13372
|
+
scopes_with_block_defuns = scopes_with_block_defuns || new Set();
|
|
13373
|
+
scopes_with_block_defuns.add(node.parent_scope.get_defun_scope());
|
|
13374
|
+
}
|
|
13353
13375
|
if (node instanceof AST_Scope) {
|
|
13354
13376
|
node.variables.forEach(collect);
|
|
13355
13377
|
return;
|
|
@@ -13398,6 +13420,7 @@ AST_Toplevel.DEFMETHOD("mangle_names", function(options) {
|
|
|
13398
13420
|
|
|
13399
13421
|
function_defs = null;
|
|
13400
13422
|
unmangleable_names = null;
|
|
13423
|
+
scopes_with_block_defuns = null;
|
|
13401
13424
|
|
|
13402
13425
|
function collect(symbol) {
|
|
13403
13426
|
if (symbol.export & MASK_EXPORT_DONT_MANGLE) {
|
|
@@ -30781,7 +30804,54 @@ function cache_to_json(cache) {
|
|
|
30781
30804
|
};
|
|
30782
30805
|
}
|
|
30783
30806
|
|
|
30784
|
-
|
|
30807
|
+
function log_input(files, options, fs, debug_folder) {
|
|
30808
|
+
if (!(fs && fs.writeFileSync && fs.mkdirSync)) {
|
|
30809
|
+
return;
|
|
30810
|
+
}
|
|
30811
|
+
|
|
30812
|
+
try {
|
|
30813
|
+
fs.mkdirSync(debug_folder);
|
|
30814
|
+
} catch (e) {
|
|
30815
|
+
if (e.code !== "EEXIST") throw e;
|
|
30816
|
+
}
|
|
30817
|
+
|
|
30818
|
+
const log_path = `${debug_folder}/terser-debug-${(Math.random() * 9999999) | 0}.log`;
|
|
30819
|
+
|
|
30820
|
+
options = options || {};
|
|
30821
|
+
|
|
30822
|
+
const options_str = JSON.stringify(options, (_key, thing) => {
|
|
30823
|
+
if (typeof thing === "function") return "[Function " + thing.toString() + "]";
|
|
30824
|
+
if (thing instanceof RegExp) return "[RegExp " + thing.toString() + "]";
|
|
30825
|
+
return thing;
|
|
30826
|
+
}, 4);
|
|
30827
|
+
|
|
30828
|
+
const files_str = (file) => {
|
|
30829
|
+
if (typeof file === "object" && options.parse && options.parse.spidermonkey) {
|
|
30830
|
+
return JSON.stringify(file, null, 2);
|
|
30831
|
+
} else if (typeof file === "object") {
|
|
30832
|
+
return Object.keys(file)
|
|
30833
|
+
.map((key) => key + ": " + files_str(file[key]))
|
|
30834
|
+
.join("\n\n");
|
|
30835
|
+
} else if (typeof file === "string") {
|
|
30836
|
+
return "```\n" + file + "\n```";
|
|
30837
|
+
} else {
|
|
30838
|
+
return file; // What do?
|
|
30839
|
+
}
|
|
30840
|
+
};
|
|
30841
|
+
|
|
30842
|
+
fs.writeFileSync(log_path, "Options: \n" + options_str + "\n\nInput files:\n\n" + files_str(files) + "\n");
|
|
30843
|
+
}
|
|
30844
|
+
|
|
30845
|
+
async function minify(files, options, _fs_module) {
|
|
30846
|
+
if (
|
|
30847
|
+
_fs_module
|
|
30848
|
+
&& typeof process === "object"
|
|
30849
|
+
&& process.env
|
|
30850
|
+
&& typeof process.env.TERSER_DEBUG_DIR === "string"
|
|
30851
|
+
) {
|
|
30852
|
+
log_input(files, options, _fs_module, process.env.TERSER_DEBUG_DIR);
|
|
30853
|
+
}
|
|
30854
|
+
|
|
30785
30855
|
options = defaults(options, {
|
|
30786
30856
|
compress: {},
|
|
30787
30857
|
ecma: undefined,
|
|
@@ -30804,6 +30874,7 @@ async function minify(files, options) {
|
|
|
30804
30874
|
warnings: false,
|
|
30805
30875
|
wrap: false,
|
|
30806
30876
|
}, true);
|
|
30877
|
+
|
|
30807
30878
|
var timings = options.timings && {
|
|
30808
30879
|
start: Date.now()
|
|
30809
30880
|
};
|
|
@@ -31205,7 +31276,7 @@ async function run_cli({ program, packageJson, fs, path }) {
|
|
|
31205
31276
|
|
|
31206
31277
|
let result;
|
|
31207
31278
|
try {
|
|
31208
|
-
result = await minify(files, options);
|
|
31279
|
+
result = await minify(files, options, fs);
|
|
31209
31280
|
} catch (ex) {
|
|
31210
31281
|
if (ex.name == "SyntaxError") {
|
|
31211
31282
|
print_error("Parse error at " + ex.filename + ":" + ex.line + "," + ex.col);
|
|
@@ -31268,14 +31339,18 @@ async function run_cli({ program, packageJson, fs, path }) {
|
|
|
31268
31339
|
}, 2));
|
|
31269
31340
|
} else if (program.output == "spidermonkey") {
|
|
31270
31341
|
try {
|
|
31271
|
-
const minified = await minify(
|
|
31272
|
-
|
|
31273
|
-
|
|
31274
|
-
|
|
31275
|
-
|
|
31276
|
-
|
|
31277
|
-
|
|
31278
|
-
|
|
31342
|
+
const minified = await minify(
|
|
31343
|
+
result.code,
|
|
31344
|
+
{
|
|
31345
|
+
compress: false,
|
|
31346
|
+
mangle: false,
|
|
31347
|
+
format: {
|
|
31348
|
+
ast: true,
|
|
31349
|
+
code: false
|
|
31350
|
+
}
|
|
31351
|
+
},
|
|
31352
|
+
fs
|
|
31353
|
+
);
|
|
31279
31354
|
console.log(JSON.stringify(minified.ast.to_mozilla_ast(), null, 2));
|
|
31280
31355
|
} catch (ex) {
|
|
31281
31356
|
fatal(ex);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite",
|
|
3
|
-
"version": "2.9.0-beta.
|
|
3
|
+
"version": "2.9.0-beta.11",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Evan You",
|
|
6
6
|
"description": "Native-ESM powered web dev build tool",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"//": "READ CONTRIBUTING.md to understand what to put under deps vs. devDeps!",
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"esbuild": "^0.14.
|
|
47
|
-
"postcss": "^8.4.
|
|
46
|
+
"esbuild": "^0.14.27",
|
|
47
|
+
"postcss": "^8.4.12",
|
|
48
48
|
"resolve": "^1.22.0",
|
|
49
49
|
"rollup": "^2.59.0"
|
|
50
50
|
},
|
|
@@ -52,17 +52,17 @@
|
|
|
52
52
|
"fsevents": "~2.3.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@ampproject/remapping": "^2.1.
|
|
56
|
-
"@babel/parser": "^7.17.
|
|
55
|
+
"@ampproject/remapping": "^2.1.2",
|
|
56
|
+
"@babel/parser": "^7.17.8",
|
|
57
57
|
"@babel/types": "^7.17.0",
|
|
58
|
-
"@jridgewell/trace-mapping": "^0.3.
|
|
58
|
+
"@jridgewell/trace-mapping": "^0.3.4",
|
|
59
59
|
"@rollup/plugin-alias": "^3.1.9",
|
|
60
|
-
"@rollup/plugin-commonjs": "^21.0.
|
|
60
|
+
"@rollup/plugin-commonjs": "^21.0.3",
|
|
61
61
|
"@rollup/plugin-dynamic-import-vars": "^1.4.2",
|
|
62
62
|
"@rollup/plugin-json": "^4.1.0",
|
|
63
63
|
"@rollup/plugin-node-resolve": "13.1.3",
|
|
64
|
-
"@rollup/plugin-typescript": "^8.3.
|
|
65
|
-
"@rollup/pluginutils": "^4.
|
|
64
|
+
"@rollup/plugin-typescript": "^8.3.1",
|
|
65
|
+
"@rollup/pluginutils": "^4.2.0",
|
|
66
66
|
"@types/convert-source-map": "^1.5.2",
|
|
67
67
|
"@types/cross-spawn": "^6.0.2",
|
|
68
68
|
"@types/debug": "^4.1.7",
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
"@types/less": "^3.0.3",
|
|
72
72
|
"@types/micromatch": "^4.0.2",
|
|
73
73
|
"@types/mime": "^2.0.3",
|
|
74
|
-
"@types/node": "^16.11.
|
|
74
|
+
"@types/node": "^16.11.26",
|
|
75
75
|
"@types/resolve": "^1.20.1",
|
|
76
76
|
"@types/sass": "~1.43.1",
|
|
77
77
|
"@types/stylus": "^0.48.36",
|
|
78
|
-
"@types/ws": "^8.
|
|
79
|
-
"@vue/compiler-dom": "^3.2.
|
|
78
|
+
"@types/ws": "^8.5.3",
|
|
79
|
+
"@vue/compiler-dom": "^3.2.31",
|
|
80
80
|
"acorn": "^8.7.0",
|
|
81
81
|
"cac": "6.7.9",
|
|
82
82
|
"chokidar": "^3.5.3",
|
|
@@ -85,34 +85,35 @@
|
|
|
85
85
|
"convert-source-map": "^1.8.0",
|
|
86
86
|
"cors": "^2.8.5",
|
|
87
87
|
"cross-spawn": "^7.0.3",
|
|
88
|
-
"debug": "^4.3.
|
|
88
|
+
"debug": "^4.3.4",
|
|
89
89
|
"dotenv": "^14.3.2",
|
|
90
90
|
"dotenv-expand": "^5.1.0",
|
|
91
|
-
"es-module-lexer": "^0.
|
|
91
|
+
"es-module-lexer": "^0.10.4",
|
|
92
92
|
"estree-walker": "^2.0.2",
|
|
93
93
|
"etag": "^1.8.1",
|
|
94
94
|
"fast-glob": "^3.2.11",
|
|
95
95
|
"http-proxy": "^1.18.1",
|
|
96
|
-
"json5": "^2.2.
|
|
96
|
+
"json5": "^2.2.1",
|
|
97
97
|
"launch-editor-middleware": "^2.3.0",
|
|
98
|
-
"magic-string": "^0.
|
|
99
|
-
"micromatch": "^4.0.
|
|
98
|
+
"magic-string": "^0.26.1",
|
|
99
|
+
"micromatch": "^4.0.5",
|
|
100
100
|
"mrmime": "^1.0.0",
|
|
101
|
-
"node-forge": "^1.
|
|
101
|
+
"node-forge": "^1.3.0",
|
|
102
102
|
"okie": "^1.0.1",
|
|
103
103
|
"open": "^8.4.0",
|
|
104
104
|
"periscopic": "^2.0.3",
|
|
105
105
|
"picocolors": "^1.0.0",
|
|
106
|
-
"postcss-import": "^14.0
|
|
106
|
+
"postcss-import": "^14.1.0",
|
|
107
107
|
"postcss-load-config": "^3.1.3",
|
|
108
|
-
"postcss-modules": "^4.3.
|
|
108
|
+
"postcss-modules": "^4.3.1",
|
|
109
109
|
"resolve.exports": "^1.1.0",
|
|
110
110
|
"rollup-plugin-license": "^2.6.1",
|
|
111
111
|
"sirv": "^2.0.2",
|
|
112
|
+
"source-map-js": "^1.0.2",
|
|
112
113
|
"source-map-support": "^0.5.21",
|
|
113
114
|
"strip-ansi": "^6.0.1",
|
|
114
|
-
"terser": "^5.
|
|
115
|
-
"tsconfck": "^1.2.
|
|
115
|
+
"terser": "^5.12.1",
|
|
116
|
+
"tsconfck": "^1.2.1",
|
|
116
117
|
"tslib": "^2.3.1",
|
|
117
118
|
"types": "link:./types",
|
|
118
119
|
"ws": "^8.5.0"
|
package/src/client/client.ts
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
HMRPayload,
|
|
5
|
-
PrunePayload,
|
|
6
|
-
Update,
|
|
7
|
-
UpdatePayload
|
|
8
|
-
} from 'types/hmrPayload'
|
|
9
|
-
import type { CustomEventName } from 'types/customEvent'
|
|
1
|
+
import type { ErrorPayload, HMRPayload, Update } from 'types/hmrPayload'
|
|
2
|
+
import type { ViteHotContext } from 'types/hot'
|
|
3
|
+
import type { InferCustomEventPayload } from 'types/customEvent'
|
|
10
4
|
import { ErrorOverlay, overlayId } from './overlay'
|
|
11
5
|
// eslint-disable-next-line node/no-missing-import
|
|
12
6
|
import '@vite/env'
|
|
13
7
|
|
|
14
8
|
// injected by the hmr plugin when served
|
|
15
9
|
declare const __BASE__: string
|
|
16
|
-
declare const __HMR_PROTOCOL__: string
|
|
17
|
-
declare const __HMR_HOSTNAME__: string
|
|
18
|
-
declare const __HMR_PORT__: string |
|
|
10
|
+
declare const __HMR_PROTOCOL__: string | null
|
|
11
|
+
declare const __HMR_HOSTNAME__: string | null
|
|
12
|
+
declare const __HMR_PORT__: string | null
|
|
13
|
+
declare const __HMR_BASE__: string
|
|
19
14
|
declare const __HMR_TIMEOUT__: number
|
|
20
15
|
declare const __HMR_ENABLE_OVERLAY__: boolean
|
|
21
16
|
|
|
@@ -24,12 +19,13 @@ console.log('[vite] connecting...')
|
|
|
24
19
|
// use server configuration, then fallback to inference
|
|
25
20
|
const socketProtocol =
|
|
26
21
|
__HMR_PROTOCOL__ || (location.protocol === 'https:' ? 'wss' : 'ws')
|
|
27
|
-
const socketHost =
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${
|
|
23
|
+
__HMR_PORT__ || location.port
|
|
24
|
+
}${__HMR_BASE__}`
|
|
30
25
|
|
|
31
26
|
const socket = new WebSocket(`${socketProtocol}://${socketHost}`, 'vite-hmr')
|
|
32
27
|
const base = __BASE__ || '/'
|
|
28
|
+
const messageBuffer: string[] = []
|
|
33
29
|
|
|
34
30
|
function warnFailedFetch(err: Error, path: string | string[]) {
|
|
35
31
|
if (!err.message.match('fetch')) {
|
|
@@ -59,9 +55,10 @@ async function handleMessage(payload: HMRPayload) {
|
|
|
59
55
|
switch (payload.type) {
|
|
60
56
|
case 'connected':
|
|
61
57
|
console.log(`[vite] connected.`)
|
|
58
|
+
sendMessageBuffer()
|
|
62
59
|
// proxy(nginx, docker) hmr ws maybe caused timeout,
|
|
63
60
|
// so send ping package let ws keep alive.
|
|
64
|
-
setInterval(() => socket.send('ping'), __HMR_TIMEOUT__)
|
|
61
|
+
setInterval(() => socket.send('{"type":"ping"}'), __HMR_TIMEOUT__)
|
|
65
62
|
break
|
|
66
63
|
case 'update':
|
|
67
64
|
notifyListeners('vite:beforeUpdate', payload)
|
|
@@ -101,7 +98,7 @@ async function handleMessage(payload: HMRPayload) {
|
|
|
101
98
|
})
|
|
102
99
|
break
|
|
103
100
|
case 'custom': {
|
|
104
|
-
notifyListeners(payload.event
|
|
101
|
+
notifyListeners(payload.event, payload.data)
|
|
105
102
|
break
|
|
106
103
|
}
|
|
107
104
|
case 'full-reload':
|
|
@@ -154,19 +151,9 @@ async function handleMessage(payload: HMRPayload) {
|
|
|
154
151
|
}
|
|
155
152
|
}
|
|
156
153
|
|
|
157
|
-
function notifyListeners(
|
|
158
|
-
event: 'vite:beforeUpdate',
|
|
159
|
-
payload: UpdatePayload
|
|
160
|
-
): void
|
|
161
|
-
function notifyListeners(event: 'vite:beforePrune', payload: PrunePayload): void
|
|
162
|
-
function notifyListeners(
|
|
163
|
-
event: 'vite:beforeFullReload',
|
|
164
|
-
payload: FullReloadPayload
|
|
165
|
-
): void
|
|
166
|
-
function notifyListeners(event: 'vite:error', payload: ErrorPayload): void
|
|
167
154
|
function notifyListeners<T extends string>(
|
|
168
|
-
event:
|
|
169
|
-
data:
|
|
155
|
+
event: T,
|
|
156
|
+
data: InferCustomEventPayload<T>
|
|
170
157
|
): void
|
|
171
158
|
function notifyListeners(event: string, data: any): void {
|
|
172
159
|
const cbs = customListenersMap.get(event)
|
|
@@ -361,6 +348,13 @@ async function fetchUpdate({ path, acceptedPath, timestamp }: Update) {
|
|
|
361
348
|
}
|
|
362
349
|
}
|
|
363
350
|
|
|
351
|
+
function sendMessageBuffer() {
|
|
352
|
+
if (socket.readyState === 1) {
|
|
353
|
+
messageBuffer.forEach((msg) => socket.send(msg))
|
|
354
|
+
messageBuffer.length = 0
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
364
358
|
interface HotModule {
|
|
365
359
|
id: string
|
|
366
360
|
callbacks: HotCallback[]
|
|
@@ -382,9 +376,7 @@ const ctxToListenersMap = new Map<
|
|
|
382
376
|
Map<string, ((data: any) => void)[]>
|
|
383
377
|
>()
|
|
384
378
|
|
|
385
|
-
|
|
386
|
-
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
387
|
-
export const createHotContext = (ownerPath: string) => {
|
|
379
|
+
export function createHotContext(ownerPath: string): ViteHotContext {
|
|
388
380
|
if (!dataMap.has(ownerPath)) {
|
|
389
381
|
dataMap.set(ownerPath, {})
|
|
390
382
|
}
|
|
@@ -425,12 +417,12 @@ export const createHotContext = (ownerPath: string) => {
|
|
|
425
417
|
hotModulesMap.set(ownerPath, mod)
|
|
426
418
|
}
|
|
427
419
|
|
|
428
|
-
const hot = {
|
|
420
|
+
const hot: ViteHotContext = {
|
|
429
421
|
get data() {
|
|
430
422
|
return dataMap.get(ownerPath)
|
|
431
423
|
},
|
|
432
424
|
|
|
433
|
-
accept(deps
|
|
425
|
+
accept(deps?: any, callback?: any) {
|
|
434
426
|
if (typeof deps === 'function' || !deps) {
|
|
435
427
|
// self-accept: hot.accept(() => {})
|
|
436
428
|
acceptDeps([ownerPath], ([mod]) => deps && deps(mod))
|
|
@@ -451,10 +443,11 @@ export const createHotContext = (ownerPath: string) => {
|
|
|
451
443
|
)
|
|
452
444
|
},
|
|
453
445
|
|
|
454
|
-
dispose(cb
|
|
446
|
+
dispose(cb) {
|
|
455
447
|
disposeMap.set(ownerPath, cb)
|
|
456
448
|
},
|
|
457
449
|
|
|
450
|
+
// @ts-expect-error untyped
|
|
458
451
|
prune(cb: (data: any) => void) {
|
|
459
452
|
pruneMap.set(ownerPath, cb)
|
|
460
453
|
},
|
|
@@ -470,7 +463,7 @@ export const createHotContext = (ownerPath: string) => {
|
|
|
470
463
|
},
|
|
471
464
|
|
|
472
465
|
// custom events
|
|
473
|
-
on
|
|
466
|
+
on(event, cb) {
|
|
474
467
|
const addToMap = (map: Map<string, any[]>) => {
|
|
475
468
|
const existing = map.get(event) || []
|
|
476
469
|
existing.push(cb)
|
|
@@ -478,6 +471,11 @@ export const createHotContext = (ownerPath: string) => {
|
|
|
478
471
|
}
|
|
479
472
|
addToMap(customListenersMap)
|
|
480
473
|
addToMap(newListeners)
|
|
474
|
+
},
|
|
475
|
+
|
|
476
|
+
send(event, data) {
|
|
477
|
+
messageBuffer.push(JSON.stringify({ type: 'custom', event, data }))
|
|
478
|
+
sendMessageBuffer()
|
|
481
479
|
}
|
|
482
480
|
}
|
|
483
481
|
|
package/types/customEvent.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type {
|
|
2
|
+
ErrorPayload,
|
|
3
|
+
FullReloadPayload,
|
|
4
|
+
PrunePayload,
|
|
5
|
+
UpdatePayload
|
|
6
|
+
} from './hmrPayload'
|
|
7
|
+
|
|
8
|
+
export interface CustomEventMap {
|
|
9
|
+
'vite:beforeUpdate': UpdatePayload
|
|
10
|
+
'vite:beforePrune': PrunePayload
|
|
11
|
+
'vite:beforeFullReload': FullReloadPayload
|
|
12
|
+
'vite:error': ErrorPayload
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type InferCustomEventPayload<T extends string> =
|
|
16
|
+
T extends keyof CustomEventMap ? CustomEventMap[T] : any
|
package/types/hot.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { InferCustomEventPayload } from './customEvent'
|
|
2
|
+
|
|
3
|
+
export interface ViteHotContext {
|
|
4
|
+
readonly data: any
|
|
5
|
+
|
|
6
|
+
accept(): void
|
|
7
|
+
accept(cb: (mod: any) => void): void
|
|
8
|
+
accept(dep: string, cb: (mod: any) => void): void
|
|
9
|
+
accept(deps: readonly string[], cb: (mods: any[]) => void): void
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
14
|
+
acceptDeps(): never
|
|
15
|
+
|
|
16
|
+
dispose(cb: (data: any) => void): void
|
|
17
|
+
decline(): void
|
|
18
|
+
invalidate(): void
|
|
19
|
+
|
|
20
|
+
on<T extends string>(
|
|
21
|
+
event: T,
|
|
22
|
+
cb: (payload: InferCustomEventPayload<T>) => void
|
|
23
|
+
): void
|
|
24
|
+
send<T extends string>(event: T, data?: InferCustomEventPayload<T>): void
|
|
25
|
+
}
|
package/types/importMeta.d.ts
CHANGED
|
@@ -20,46 +20,7 @@ interface GlobOptions {
|
|
|
20
20
|
interface ImportMeta {
|
|
21
21
|
url: string
|
|
22
22
|
|
|
23
|
-
readonly hot?:
|
|
24
|
-
readonly data: any
|
|
25
|
-
|
|
26
|
-
accept(): void
|
|
27
|
-
accept(cb: (mod: any) => void): void
|
|
28
|
-
accept(dep: string, cb: (mod: any) => void): void
|
|
29
|
-
accept(deps: readonly string[], cb: (mods: any[]) => void): void
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @deprecated
|
|
33
|
-
*/
|
|
34
|
-
acceptDeps(): never
|
|
35
|
-
|
|
36
|
-
dispose(cb: (data: any) => void): void
|
|
37
|
-
decline(): void
|
|
38
|
-
invalidate(): void
|
|
39
|
-
|
|
40
|
-
on: {
|
|
41
|
-
(
|
|
42
|
-
event: 'vite:beforeUpdate',
|
|
43
|
-
cb: (payload: import('./hmrPayload').UpdatePayload) => void
|
|
44
|
-
): void
|
|
45
|
-
(
|
|
46
|
-
event: 'vite:beforePrune',
|
|
47
|
-
cb: (payload: import('./hmrPayload').PrunePayload) => void
|
|
48
|
-
): void
|
|
49
|
-
(
|
|
50
|
-
event: 'vite:beforeFullReload',
|
|
51
|
-
cb: (payload: import('./hmrPayload').FullReloadPayload) => void
|
|
52
|
-
): void
|
|
53
|
-
(
|
|
54
|
-
event: 'vite:error',
|
|
55
|
-
cb: (payload: import('./hmrPayload').ErrorPayload) => void
|
|
56
|
-
): void
|
|
57
|
-
<T extends string>(
|
|
58
|
-
event: import('./customEvent').CustomEventName<T>,
|
|
59
|
-
cb: (data: any) => void
|
|
60
|
-
): void
|
|
61
|
-
}
|
|
62
|
-
}
|
|
23
|
+
readonly hot?: import('./hot').ViteHotContext
|
|
63
24
|
|
|
64
25
|
readonly env: ImportMetaEnv
|
|
65
26
|
|