Initial commit
This commit is contained in:
commit
78f8d225ee
21173 changed files with 2907774 additions and 0 deletions
134
node_modules/next/dist/client/components/react-dev-overlay/utils/use-websocket.js
generated
vendored
Normal file
134
node_modules/next/dist/client/components/react-dev-overlay/utils/use-websocket.js
generated
vendored
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
useSendMessage: null,
|
||||
useTurbopack: null,
|
||||
useWebsocket: null,
|
||||
useWebsocketPing: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
useSendMessage: function() {
|
||||
return useSendMessage;
|
||||
},
|
||||
useTurbopack: function() {
|
||||
return useTurbopack;
|
||||
},
|
||||
useWebsocket: function() {
|
||||
return useWebsocket;
|
||||
},
|
||||
useWebsocketPing: function() {
|
||||
return useWebsocketPing;
|
||||
}
|
||||
});
|
||||
const _react = require("react");
|
||||
const _approutercontextsharedruntime = require("../../../../shared/lib/app-router-context.shared-runtime");
|
||||
const _getsocketurl = require("./get-socket-url");
|
||||
function useWebsocket(assetPrefix) {
|
||||
const webSocketRef = (0, _react.useRef)(undefined);
|
||||
(0, _react.useEffect)(()=>{
|
||||
if (webSocketRef.current) {
|
||||
return;
|
||||
}
|
||||
const url = (0, _getsocketurl.getSocketUrl)(assetPrefix);
|
||||
webSocketRef.current = new window.WebSocket("" + url + "/_next/webpack-hmr");
|
||||
}, [
|
||||
assetPrefix
|
||||
]);
|
||||
return webSocketRef;
|
||||
}
|
||||
function useSendMessage(webSocketRef) {
|
||||
const sendMessage = (0, _react.useCallback)((data)=>{
|
||||
const socket = webSocketRef.current;
|
||||
if (!socket || socket.readyState !== socket.OPEN) {
|
||||
return;
|
||||
}
|
||||
return socket.send(data);
|
||||
}, [
|
||||
webSocketRef
|
||||
]);
|
||||
return sendMessage;
|
||||
}
|
||||
function useTurbopack(sendMessage, onUpdateError) {
|
||||
const turbopackState = (0, _react.useRef)({
|
||||
init: false,
|
||||
// Until the dynamic import resolves, queue any turbopack messages which will be replayed.
|
||||
queue: [],
|
||||
callback: undefined
|
||||
});
|
||||
const processTurbopackMessage = (0, _react.useCallback)((msg)=>{
|
||||
const { callback, queue } = turbopackState.current;
|
||||
if (callback) {
|
||||
callback(msg);
|
||||
} else {
|
||||
queue.push(msg);
|
||||
}
|
||||
}, []);
|
||||
(0, _react.useEffect)(()=>{
|
||||
const { current: initCurrent } = turbopackState;
|
||||
// TODO(WEB-1589): only install if `process.turbopack` set.
|
||||
if (initCurrent.init) {
|
||||
return;
|
||||
}
|
||||
initCurrent.init = true;
|
||||
import(// @ts-expect-error requires "moduleResolution": "node16" in tsconfig.json and not .ts extension
|
||||
'@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts').then((param)=>{
|
||||
let { connect } = param;
|
||||
const { current } = turbopackState;
|
||||
connect({
|
||||
addMessageListener (cb) {
|
||||
current.callback = cb;
|
||||
// Replay all Turbopack messages before we were able to establish the HMR client.
|
||||
for (const msg of current.queue){
|
||||
cb(msg);
|
||||
}
|
||||
current.queue = undefined;
|
||||
},
|
||||
sendMessage,
|
||||
onUpdateError
|
||||
});
|
||||
});
|
||||
}, [
|
||||
sendMessage,
|
||||
onUpdateError
|
||||
]);
|
||||
return processTurbopackMessage;
|
||||
}
|
||||
function useWebsocketPing(websocketRef) {
|
||||
const sendMessage = useSendMessage(websocketRef);
|
||||
const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);
|
||||
(0, _react.useEffect)(()=>{
|
||||
// Never send pings when using Turbopack as it's not used.
|
||||
// Pings were originally used to keep track of active routes in on-demand-entries with webpack.
|
||||
if (process.env.TURBOPACK) {
|
||||
return;
|
||||
}
|
||||
// Taken from on-demand-entries-client.js
|
||||
const interval = setInterval(()=>{
|
||||
sendMessage(JSON.stringify({
|
||||
event: 'ping',
|
||||
tree,
|
||||
appDirRoute: true
|
||||
}));
|
||||
}, 2500);
|
||||
return ()=>clearInterval(interval);
|
||||
}, [
|
||||
tree,
|
||||
sendMessage
|
||||
]);
|
||||
}
|
||||
|
||||
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
|
||||
Object.defineProperty(exports.default, '__esModule', { value: true });
|
||||
Object.assign(exports.default, exports);
|
||||
module.exports = exports.default;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=use-websocket.js.map
|
||||
Loading…
Add table
Add a link
Reference in a new issue