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