@vxrn/vite-native-client 2.0.0-beta.33.1 → 2.0.0-beta.45.1
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/dist/cjs/client.cjs +320 -365
- package/dist/cjs/client.native.cjs +452 -0
- package/dist/cjs/client.native.js +385 -433
- package/dist/cjs/client.native.js.map +1 -1
- package/dist/cjs/customEvent.cjs +9 -11
- package/dist/cjs/customEvent.native.cjs +18 -0
- package/dist/cjs/customEvent.native.js +9 -10
- package/dist/cjs/customEvent.native.js.map +1 -1
- package/dist/cjs/hmrPayload.cjs +9 -11
- package/dist/cjs/hmrPayload.native.cjs +18 -0
- package/dist/cjs/hmrPayload.native.js +9 -10
- package/dist/cjs/hmrPayload.native.js.map +1 -1
- package/dist/cjs/hot.cjs +9 -11
- package/dist/cjs/hot.native.cjs +18 -0
- package/dist/cjs/hot.native.js +9 -10
- package/dist/cjs/hot.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -11
- package/dist/cjs/index.native.cjs +20 -0
- package/dist/cjs/index.native.js +9 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/client.mjs +311 -349
- package/dist/esm/client.mjs.map +1 -1
- package/dist/esm/client.native.js +376 -418
- package/dist/esm/client.native.js.map +1 -1
- package/dist/esm/customEvent.mjs +0 -2
- package/dist/esm/customEvent.native.js +0 -2
- package/dist/esm/hmrPayload.mjs +0 -2
- package/dist/esm/hmrPayload.native.js +0 -2
- package/dist/esm/hot.mjs +0 -2
- package/dist/esm/hot.native.js +0 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/package.json +2 -2
- package/dist/esm/customEvent.mjs.map +0 -1
- package/dist/esm/customEvent.native.js.map +0 -1
- package/dist/esm/hmrPayload.mjs.map +0 -1
- package/dist/esm/hmrPayload.native.js.map +0 -1
- package/dist/esm/hot.mjs.map +0 -1
- package/dist/esm/hot.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
package/dist/esm/client.mjs
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import getDevServer from "react-native/Libraries/Core/Devtools/getDevServer";
|
|
2
|
+
|
|
2
3
|
const importMetaUrl = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
hostname: "127.0.0.1",
|
|
5
|
+
protocol: "http",
|
|
6
|
+
port: 5173
|
|
6
7
|
};
|
|
7
8
|
const serverHost = __SERVER_HOST__;
|
|
8
9
|
const socketProtocol = __HMR_PROTOCOL__ || (importMetaUrl.protocol === "https:" ? "wss" : "ws");
|
|
9
10
|
const hmrPort = __HMR_PORT__ || 5173;
|
|
10
11
|
let rnDevServerHost;
|
|
11
12
|
try {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const [, host] = devServerUrl.match(/:\/\/([^/]+)/) || [];
|
|
16
|
-
if (host) rnDevServerHost = host;
|
|
13
|
+
const { url: devServerUrl } = getDevServer();
|
|
14
|
+
const [, host] = devServerUrl.match(/:\/\/([^/]+)/) || [];
|
|
15
|
+
if (host) rnDevServerHost = host;
|
|
17
16
|
} catch (e) {
|
|
18
|
-
|
|
17
|
+
console.warn(`[vite-native-client] failed to get react-native dev server url: ${e}`);
|
|
19
18
|
}
|
|
20
19
|
const hmrHost = rnDevServerHost || `${__HMR_HOSTNAME__ || importMetaUrl.hostname}:${hmrPort || importMetaUrl.port}`;
|
|
21
20
|
const socketHost = `${hmrHost}${__HMR_BASE__}`;
|
|
@@ -24,383 +23,346 @@ const base = __BASE__ || "/";
|
|
|
24
23
|
const messageBuffer = [];
|
|
25
24
|
let socket;
|
|
26
25
|
try {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
let fallback;
|
|
27
|
+
if (!hmrPort) {
|
|
28
|
+
fallback = () => {
|
|
29
|
+
socket = setupWebSocket(socketProtocol, directSocketHost, () => {
|
|
30
|
+
console.error(`[vite] failed to connect to websocket.
|
|
32
31
|
your current setup:
|
|
33
32
|
(browser) ${JSON.stringify(importMetaUrl)} <--[HTTP]--> ${serverHost} (server)
|
|
34
33
|
(browser) ${socketHost} <--[WebSocket (failing)]--> ${directSocketHost} (server)
|
|
35
34
|
Check out your Vite / network configuration and https://vitejs.dev/config/server-options.html#server-hmr .`);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
socket = setupWebSocket(socketProtocol, socketHost, fallback);
|
|
35
|
+
});
|
|
36
|
+
socket.addEventListener("open", () => {
|
|
37
|
+
console.info("[vite] Direct websocket connection fallback. Check out https://vitejs.dev/config/server-options.html#server-hmr to remove the previous connection error.");
|
|
38
|
+
}, { once: true });
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
socket = setupWebSocket(socketProtocol, socketHost, fallback);
|
|
45
42
|
} catch (error) {
|
|
46
|
-
|
|
43
|
+
console.error(`[vite] failed to connect to websocket (${error}). `);
|
|
47
44
|
}
|
|
48
45
|
function setupWebSocket(protocol, hostAndPath, onCloseWithoutOpen) {
|
|
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
|
-
notifyListeners("vite:ws:disconnect", {
|
|
83
|
-
webSocket: socket2
|
|
84
|
-
});
|
|
85
|
-
console.info(`[vite] server connection lost. polling for restart...`);
|
|
86
|
-
waitForSuccessfulPing(protocol, hostAndPath).then(() => {
|
|
87
|
-
console.info("should reload");
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
return socket2;
|
|
46
|
+
let endpoint = `${protocol}://${hostAndPath}`;
|
|
47
|
+
if (typeof globalThis.__VITE_WS_TOKEN__ === "string") {
|
|
48
|
+
endpoint += `?token=${globalThis.__VITE_WS_TOKEN__}`;
|
|
49
|
+
}
|
|
50
|
+
const socket2 = new WebSocket(endpoint, "vite-hmr");
|
|
51
|
+
let isOpened = false;
|
|
52
|
+
socket2.addEventListener("open", () => {
|
|
53
|
+
isOpened = true;
|
|
54
|
+
notifyListeners("vite:ws:connect", { webSocket: socket2 });
|
|
55
|
+
}, { once: true });
|
|
56
|
+
socket2.addEventListener("message", ({ data }) => {
|
|
57
|
+
if (process.env.DEBUG) {
|
|
58
|
+
console.info(" ❶ hmr ", data);
|
|
59
|
+
}
|
|
60
|
+
handleMessage(JSON.parse(data));
|
|
61
|
+
});
|
|
62
|
+
socket2.addEventListener("error", (err) => {
|
|
63
|
+
console.info("err" + err["message"] + err["stack"]);
|
|
64
|
+
});
|
|
65
|
+
socket2.addEventListener("close", ({ wasClean }) => {
|
|
66
|
+
if (wasClean) return;
|
|
67
|
+
if (!isOpened && onCloseWithoutOpen) {
|
|
68
|
+
onCloseWithoutOpen();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
notifyListeners("vite:ws:disconnect", { webSocket: socket2 });
|
|
72
|
+
console.info(`[vite] server connection lost. polling for restart...`);
|
|
73
|
+
waitForSuccessfulPing(protocol, hostAndPath).then(() => {
|
|
74
|
+
console.info("should reload");
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return socket2;
|
|
91
78
|
}
|
|
92
79
|
function warnFailedFetch(err, path2) {
|
|
93
|
-
|
|
94
|
-
|
|
80
|
+
try {
|
|
81
|
+
console.error(`${err.message}
|
|
95
82
|
${err.stack}`);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
83
|
+
} catch {
|
|
84
|
+
console.error(`${err}`);
|
|
85
|
+
}
|
|
86
|
+
console.error(`[hmr] Failed to reload ${path2}. This could be due to syntax errors or importing non-existent modules. (see errors above)`);
|
|
100
87
|
}
|
|
101
88
|
let isFirstUpdate = true;
|
|
102
|
-
const debounceReload = time => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
89
|
+
const debounceReload = (time) => {
|
|
90
|
+
let timer;
|
|
91
|
+
return () => {
|
|
92
|
+
if (timer) {
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
timer = null;
|
|
95
|
+
}
|
|
96
|
+
timer = setTimeout(() => {
|
|
97
|
+
globalThis.__vxrnReloadApp();
|
|
98
|
+
}, time);
|
|
99
|
+
};
|
|
113
100
|
};
|
|
114
101
|
const pageReload = debounceReload(50);
|
|
115
102
|
async function handleMessage(payload) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
} else {
|
|
174
|
-
console.error(`[vite] Internal Server Error
|
|
103
|
+
switch (payload.type) {
|
|
104
|
+
case "connected":
|
|
105
|
+
console.info(`[vite] connected.`);
|
|
106
|
+
sendMessageBuffer();
|
|
107
|
+
setInterval(() => {
|
|
108
|
+
if (socket.readyState === socket.OPEN) {
|
|
109
|
+
socket.send("{\"type\":\"ping\"}");
|
|
110
|
+
}
|
|
111
|
+
}, __HMR_TIMEOUT__);
|
|
112
|
+
break;
|
|
113
|
+
case "update":
|
|
114
|
+
notifyListeners("vite:beforeUpdate", payload);
|
|
115
|
+
if (isFirstUpdate && hasErrorOverlay()) {
|
|
116
|
+
globalThis.__vxrnReloadApp();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
clearErrorOverlay();
|
|
120
|
+
isFirstUpdate = false;
|
|
121
|
+
await Promise.all(payload.updates.map((update) => {
|
|
122
|
+
if (update.type === "js-update") {
|
|
123
|
+
return queueUpdate(fetchUpdate(update));
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
notifyListeners("vite:afterUpdate", payload);
|
|
127
|
+
break;
|
|
128
|
+
case "custom": {
|
|
129
|
+
notifyListeners(payload.event, payload.data);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case "full-reload":
|
|
133
|
+
notifyListeners("vite:beforeFullReload", payload);
|
|
134
|
+
if (payload.path && payload.path.endsWith(".html")) {
|
|
135
|
+
const pagePath = decodeURI(location.pathname);
|
|
136
|
+
const payloadPath = base + payload.path.slice(1);
|
|
137
|
+
if (pagePath === payloadPath || payload.path === "/index.html" || pagePath.endsWith("/") && pagePath + "index.html" === payloadPath) {
|
|
138
|
+
pageReload();
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
pageReload();
|
|
143
|
+
break;
|
|
144
|
+
case "prune":
|
|
145
|
+
notifyListeners("vite:beforePrune", payload);
|
|
146
|
+
payload.paths.forEach((path2) => {
|
|
147
|
+
const fn = pruneMap.get(path2);
|
|
148
|
+
if (fn) {
|
|
149
|
+
fn(dataMap.get(path2));
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
break;
|
|
153
|
+
case "error": {
|
|
154
|
+
notifyListeners("vite:error", payload);
|
|
155
|
+
const err = payload.err;
|
|
156
|
+
if (enableOverlay) {
|
|
157
|
+
createErrorOverlay(err);
|
|
158
|
+
} else {
|
|
159
|
+
console.error(`[vite] Internal Server Error
|
|
175
160
|
${err.message}
|
|
176
161
|
${err.stack}`);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
default: {
|
|
166
|
+
const check = payload;
|
|
167
|
+
return check;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
186
170
|
}
|
|
187
171
|
function notifyListeners(event, data) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
172
|
+
const cbs = customListenersMap.get(event);
|
|
173
|
+
if (cbs) {
|
|
174
|
+
cbs.forEach((cb) => cb(data));
|
|
175
|
+
}
|
|
192
176
|
}
|
|
193
177
|
const enableOverlay = __HMR_ENABLE_OVERLAY__;
|
|
194
178
|
function createErrorOverlay(err) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
179
|
+
if (!enableOverlay) return;
|
|
180
|
+
clearErrorOverlay();
|
|
181
|
+
console.error("create error", err);
|
|
198
182
|
}
|
|
199
183
|
function clearErrorOverlay() {}
|
|
200
184
|
function hasErrorOverlay() {
|
|
201
|
-
|
|
185
|
+
return false;
|
|
202
186
|
}
|
|
203
187
|
let pending = false;
|
|
204
188
|
let queued = [];
|
|
205
189
|
async function queueUpdate(p) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
190
|
+
queued.push(p);
|
|
191
|
+
if (!pending) {
|
|
192
|
+
pending = true;
|
|
193
|
+
await Promise.resolve();
|
|
194
|
+
pending = false;
|
|
195
|
+
const loading = [...queued];
|
|
196
|
+
queued = [];
|
|
197
|
+
(await Promise.all(loading)).forEach((fn) => fn && fn());
|
|
198
|
+
}
|
|
215
199
|
}
|
|
216
200
|
async function waitForSuccessfulPing(socketProtocol2, hostAndPath, ms = 1e3) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
await wait(ms);
|
|
241
|
-
}
|
|
201
|
+
const pingHostProtocol = socketProtocol2 === "wss" ? "https" : "http";
|
|
202
|
+
const ping = async () => {
|
|
203
|
+
try {
|
|
204
|
+
await fetch(`${pingHostProtocol}://${hostAndPath}`, {
|
|
205
|
+
mode: "no-cors",
|
|
206
|
+
headers: { Accept: "text/x-vite-ping" }
|
|
207
|
+
});
|
|
208
|
+
return true;
|
|
209
|
+
} catch {}
|
|
210
|
+
return false;
|
|
211
|
+
};
|
|
212
|
+
if (await ping()) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
await wait(ms);
|
|
216
|
+
while (true) {
|
|
217
|
+
if (await ping()) {
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
await wait(ms);
|
|
221
|
+
}
|
|
242
222
|
}
|
|
243
223
|
function wait(ms) {
|
|
244
|
-
|
|
224
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
245
225
|
}
|
|
246
|
-
async function fetchUpdate({
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
return () => {
|
|
289
|
-
for (const {
|
|
290
|
-
deps,
|
|
291
|
-
fn
|
|
292
|
-
} of qualifiedCallbacks) {
|
|
293
|
-
fn(deps.map(dep => dep === acceptedPath ? fetchedModule : void 0));
|
|
294
|
-
}
|
|
295
|
-
const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;
|
|
296
|
-
if (process.env.DEBUG) {
|
|
297
|
-
console.info(`[vite] hot updated: ${loggedPath}`);
|
|
298
|
-
}
|
|
299
|
-
};
|
|
226
|
+
async function fetchUpdate({ path: pathIn, acceptedPath: acceptedPathIn, timestamp, explicitImportRequired }) {
|
|
227
|
+
const path = pathIn.replace("/@id", "");
|
|
228
|
+
const acceptedPath = acceptedPathIn.replace("/@id", "");
|
|
229
|
+
const mod = hotModulesMap.get(path);
|
|
230
|
+
if (!mod) {
|
|
231
|
+
console.info(` \u2776 hmr - No module found`);
|
|
232
|
+
console.info(` looked for ${path} in:`);
|
|
233
|
+
hotModulesMap.forEach((value, key) => {
|
|
234
|
+
console.info(` - ${key}`);
|
|
235
|
+
});
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
let fetchedModule;
|
|
239
|
+
const isSelfUpdate = path === acceptedPath;
|
|
240
|
+
const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => deps.includes(acceptedPath));
|
|
241
|
+
if (isSelfUpdate || qualifiedCallbacks.length > 0) {
|
|
242
|
+
const disposer = disposeMap.get(acceptedPath);
|
|
243
|
+
if (disposer) await disposer(dataMap.get(acceptedPath));
|
|
244
|
+
const [acceptedPathWithoutQuery, query] = acceptedPath.split(`?`);
|
|
245
|
+
try {
|
|
246
|
+
const filePath = acceptedPathWithoutQuery;
|
|
247
|
+
const finalQuery = `file?file=${encodeURIComponent(filePath)}&${explicitImportRequired ? "import&" : ""}t=${timestamp}${query ? `&${query}` : ""}`;
|
|
248
|
+
const scriptUrl = `http://${rnDevServerHost ? rnDevServerHost + "/" : serverHost.replace("5173", "8081")}` + finalQuery;
|
|
249
|
+
console.info(` \u2776 hmr fetching update: ${scriptUrl}`);
|
|
250
|
+
const source = await fetch(scriptUrl).then((res) => res.text());
|
|
251
|
+
const evaluatedModule = eval(source);
|
|
252
|
+
fetchedModule = evaluatedModule;
|
|
253
|
+
} catch (e) {
|
|
254
|
+
warnFailedFetch(e, acceptedPath);
|
|
255
|
+
}
|
|
256
|
+
} else {
|
|
257
|
+
console.info(` \u2776 hmr can't accept - isSelfUpdate ${isSelfUpdate} - callbacks: ${JSON.stringify(mod.callbacks)} - acceptedPath: ${acceptedPath}`);
|
|
258
|
+
}
|
|
259
|
+
return () => {
|
|
260
|
+
for (const { deps, fn } of qualifiedCallbacks) {
|
|
261
|
+
fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0));
|
|
262
|
+
}
|
|
263
|
+
const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;
|
|
264
|
+
if (process.env.DEBUG) {
|
|
265
|
+
console.info(`[vite] hot updated: ${loggedPath}`);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
300
268
|
}
|
|
301
269
|
function sendMessageBuffer() {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
270
|
+
if (socket.readyState === 1) {
|
|
271
|
+
messageBuffer.forEach((msg) => socket.send(msg));
|
|
272
|
+
messageBuffer.length = 0;
|
|
273
|
+
}
|
|
306
274
|
}
|
|
307
|
-
const hotModulesMap = /* @__PURE__ */new Map();
|
|
308
|
-
const disposeMap = /* @__PURE__ */new Map();
|
|
309
|
-
const pruneMap = /* @__PURE__ */new Map();
|
|
310
|
-
const dataMap = /* @__PURE__ */new Map();
|
|
311
|
-
const customListenersMap = /* @__PURE__ */new Map();
|
|
312
|
-
const ctxToListenersMap = /* @__PURE__ */new Map();
|
|
275
|
+
const hotModulesMap = /* @__PURE__ */ new Map();
|
|
276
|
+
const disposeMap = /* @__PURE__ */ new Map();
|
|
277
|
+
const pruneMap = /* @__PURE__ */ new Map();
|
|
278
|
+
const dataMap = /* @__PURE__ */ new Map();
|
|
279
|
+
const customListenersMap = /* @__PURE__ */ new Map();
|
|
280
|
+
const ctxToListenersMap = /* @__PURE__ */ new Map();
|
|
313
281
|
globalThis["createHotContext"] = function createHotContext(ownerPath) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
event,
|
|
399
|
-
data
|
|
400
|
-
}));
|
|
401
|
-
sendMessageBuffer();
|
|
402
|
-
}
|
|
403
|
-
};
|
|
404
|
-
return hot;
|
|
282
|
+
if (!dataMap.has(ownerPath)) {
|
|
283
|
+
dataMap.set(ownerPath, {});
|
|
284
|
+
}
|
|
285
|
+
const mod2 = hotModulesMap.get(ownerPath);
|
|
286
|
+
if (mod2) {
|
|
287
|
+
mod2.callbacks = [];
|
|
288
|
+
}
|
|
289
|
+
const staleListeners = ctxToListenersMap.get(ownerPath);
|
|
290
|
+
if (staleListeners) {
|
|
291
|
+
for (const [event, staleFns] of staleListeners) {
|
|
292
|
+
const listeners = customListenersMap.get(event);
|
|
293
|
+
if (listeners) {
|
|
294
|
+
customListenersMap.set(event, listeners.filter((l) => !staleFns.includes(l)));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const newListeners = /* @__PURE__ */ new Map();
|
|
299
|
+
ctxToListenersMap.set(ownerPath, newListeners);
|
|
300
|
+
function acceptDeps(deps, callback = () => {}) {
|
|
301
|
+
const mod3 = hotModulesMap.get(ownerPath) || {
|
|
302
|
+
id: ownerPath,
|
|
303
|
+
callbacks: []
|
|
304
|
+
};
|
|
305
|
+
mod3.callbacks.push({
|
|
306
|
+
deps,
|
|
307
|
+
fn: callback
|
|
308
|
+
});
|
|
309
|
+
hotModulesMap.set(ownerPath, mod3);
|
|
310
|
+
}
|
|
311
|
+
const hot = {
|
|
312
|
+
get data() {
|
|
313
|
+
return dataMap.get(ownerPath);
|
|
314
|
+
},
|
|
315
|
+
accept(deps, callback) {
|
|
316
|
+
if (typeof deps === "function" || !deps) {
|
|
317
|
+
acceptDeps([ownerPath], ([mod3]) => deps?.(mod3));
|
|
318
|
+
} else if (typeof deps === "string") {
|
|
319
|
+
acceptDeps([deps], ([mod3]) => callback?.(mod3));
|
|
320
|
+
} else if (Array.isArray(deps)) {
|
|
321
|
+
acceptDeps(deps, callback);
|
|
322
|
+
} else {
|
|
323
|
+
throw new Error(`invalid hot.accept() usage.`);
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
acceptExports(_, callback) {
|
|
327
|
+
acceptDeps([ownerPath], ([mod3]) => callback?.(mod3));
|
|
328
|
+
},
|
|
329
|
+
dispose(cb) {
|
|
330
|
+
disposeMap.set(ownerPath, cb);
|
|
331
|
+
},
|
|
332
|
+
prune(cb) {
|
|
333
|
+
pruneMap.set(ownerPath, cb);
|
|
334
|
+
},
|
|
335
|
+
decline() {},
|
|
336
|
+
invalidate(message) {
|
|
337
|
+
notifyListeners("vite:invalidate", {
|
|
338
|
+
path: ownerPath,
|
|
339
|
+
message
|
|
340
|
+
});
|
|
341
|
+
this.send("vite:invalidate", {
|
|
342
|
+
path: ownerPath,
|
|
343
|
+
message
|
|
344
|
+
});
|
|
345
|
+
console.info(`[vite] invalidate ${ownerPath}${message ? `: ${message}` : ""}`);
|
|
346
|
+
},
|
|
347
|
+
on(event, cb) {
|
|
348
|
+
const addToMap = (map) => {
|
|
349
|
+
const existing = map.get(event) || [];
|
|
350
|
+
existing.push(cb);
|
|
351
|
+
map.set(event, existing);
|
|
352
|
+
};
|
|
353
|
+
addToMap(customListenersMap);
|
|
354
|
+
addToMap(newListeners);
|
|
355
|
+
},
|
|
356
|
+
send(event, data) {
|
|
357
|
+
messageBuffer.push(JSON.stringify({
|
|
358
|
+
type: "custom",
|
|
359
|
+
event,
|
|
360
|
+
data
|
|
361
|
+
}));
|
|
362
|
+
sendMessageBuffer();
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
return hot;
|
|
405
366
|
};
|
|
367
|
+
|
|
406
368
|
//# sourceMappingURL=client.mjs.map
|