/opt/canhelp/node_modules/next/dist/esm/client/dev/hot-reloader/app
NameSizeModeActions
hot-reloader-app.js190380644editdlrm
hot-reloader-app.js.map290440644editdlrm
use-websocket.js33460644editdlrm
use-websocket.js.map58940644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/esm/client/dev/hot-reloader/app/use-websocket.js.map (5894B)
{"version":3,"sources":["../../../../../src/client/dev/hot-reloader/app/use-websocket.ts"],"sourcesContent":["import { useCallback, useContext, useEffect, useRef } from 'react'\nimport { GlobalLayoutRouterContext } from '../../../../shared/lib/app-router-context.shared-runtime'\nimport { getSocketUrl } from '../get-socket-url'\nimport type { TurbopackMsgToBrowser } from '../../../../server/dev/hot-reloader-types'\n\nexport function useWebsocket(assetPrefix: string) {\n const webSocketRef = useRef(undefined)\n\n useEffect(() => {\n if (webSocketRef.current) {\n return\n }\n\n const url = getSocketUrl(assetPrefix)\n\n webSocketRef.current = new window.WebSocket(`${url}/_next/webpack-hmr`)\n }, [assetPrefix])\n\n return webSocketRef\n}\n\nexport function useSendMessage(webSocketRef: ReturnType) {\n const sendMessage = useCallback(\n (data: string) => {\n const socket = webSocketRef.current\n if (!socket || socket.readyState !== socket.OPEN) {\n return\n }\n return socket.send(data)\n },\n [webSocketRef]\n )\n return sendMessage\n}\n\nexport function useTurbopack(\n sendMessage: ReturnType,\n onUpdateError: (err: unknown) => void\n) {\n const turbopackState = useRef<{\n init: boolean\n queue: Array | undefined\n callback: ((msg: TurbopackMsgToBrowser) => void) | undefined\n }>({\n init: false,\n // Until the dynamic import resolves, queue any turbopack messages which will be replayed.\n queue: [],\n callback: undefined,\n })\n\n const processTurbopackMessage = useCallback((msg: TurbopackMsgToBrowser) => {\n const { callback, queue } = turbopackState.current\n if (callback) {\n callback(msg)\n } else {\n queue!.push(msg)\n }\n }, [])\n\n useEffect(() => {\n const { current: initCurrent } = turbopackState\n // TODO(WEB-1589): only install if `process.turbopack` set.\n if (initCurrent.init) {\n return\n }\n initCurrent.init = true\n\n import(\n // @ts-expect-error requires \"moduleResolution\": \"node16\" in tsconfig.json and not .ts extension\n '@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts'\n ).then(({ connect }) => {\n const { current } = turbopackState\n connect({\n addMessageListener(cb: (msg: TurbopackMsgToBrowser) => void) {\n current.callback = cb\n\n // Replay all Turbopack messages before we were able to establish the HMR client.\n for (const msg of current.queue!) {\n cb(msg)\n }\n current.queue = undefined\n },\n sendMessage,\n onUpdateError,\n })\n })\n }, [sendMessage, onUpdateError])\n\n return processTurbopackMessage\n}\n\nexport function useWebsocketPing(\n websocketRef: ReturnType\n) {\n const sendMessage = useSendMessage(websocketRef)\n const { tree } = useContext(GlobalLayoutRouterContext)\n\n useEffect(() => {\n // Never send pings when using Turbopack as it's not used.\n // Pings were originally used to keep track of active routes in on-demand-entries with webpack.\n if (process.env.TURBOPACK) {\n return\n }\n\n // Taken from on-demand-entries-client.js\n const interval = setInterval(() => {\n sendMessage(\n JSON.stringify({\n event: 'ping',\n tree,\n appDirRoute: true,\n })\n )\n }, 2500)\n return () => clearInterval(interval)\n }, [tree, sendMessage])\n}\n"],"names":["useCallback","useContext","useEffect","useRef","GlobalLayoutRouterContext","getSocketUrl","useWebsocket","assetPrefix","webSocketRef","undefined","current","url","window","WebSocket","useSendMessage","sendMessage","data","socket","readyState","OPEN","send","useTurbopack","onUpdateError","turbopackState","init","queue","callback","processTurbopackMessage","msg","push","initCurrent","then","connect","addMessageListener","cb","useWebsocketPing","websocketRef","tree","process","env","TURBOPACK","interval","setInterval","JSON","stringify","event","appDirRoute","clearInterval"],"mappings":"AAAA,SAASA,WAAW,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAClE,SAASC,yBAAyB,QAAQ,2DAA0D;AACpG,SAASC,YAAY,QAAQ,oBAAmB;AAGhD,OAAO,SAASC,aAAaC,WAAmB;IAC9C,MAAMC,eAAeL,OAAkBM;IAEvCP,UAAU;QACR,IAAIM,aAAaE,OAAO,EAAE;YACxB;QACF;QAEA,MAAMC,MAAMN,aAAaE;QAEzBC,aAAaE,OAAO,GAAG,IAAIE,OAAOC,SAAS,CAAC,AAAC,KAAEF,MAAI;IACrD,GAAG;QAACJ;KAAY;IAEhB,OAAOC;AACT;AAEA,OAAO,SAASM,eAAeN,YAA6C;IAC1E,MAAMO,cAAcf,YAClB,CAACgB;QACC,MAAMC,SAAST,aAAaE,OAAO;QACnC,IAAI,CAACO,UAAUA,OAAOC,UAAU,KAAKD,OAAOE,IAAI,EAAE;YAChD;QACF;QACA,OAAOF,OAAOG,IAAI,CAACJ;IACrB,GACA;QAACR;KAAa;IAEhB,OAAOO;AACT;AAEA,OAAO,SAASM,aACdN,WAA8C,EAC9CO,aAAqC;IAErC,MAAMC,iBAAiBpB,OAIpB;QACDqB,MAAM;QACN,0FAA0F;QAC1FC,OAAO,EAAE;QACTC,UAAUjB;IACZ;IAEA,MAAMkB,0BAA0B3B,YAAY,CAAC4B;QAC3C,MAAM,EAAEF,QAAQ,EAAED,KAAK,EAAE,GAAGF,eAAeb,OAAO;QAClD,IAAIgB,UAAU;YACZA,SAASE;QACX,OAAO;YACLH,MAAOI,IAAI,CAACD;QACd;IACF,GAAG,EAAE;IAEL1B,UAAU;QACR,MAAM,EAAEQ,SAASoB,WAAW,EAAE,GAAGP;QACjC,2DAA2D;QAC3D,IAAIO,YAAYN,IAAI,EAAE;YACpB;QACF;QACAM,YAAYN,IAAI,GAAG;QAEnB,MAAM,CACJ,gGAAgG;QAChG,6EACAO,IAAI,CAAC;gBAAC,EAAEC,OAAO,EAAE;YACjB,MAAM,EAAEtB,OAAO,EAAE,GAAGa;YACpBS,QAAQ;gBACNC,oBAAmBC,EAAwC;oBACzDxB,QAAQgB,QAAQ,GAAGQ;oBAEnB,iFAAiF;oBACjF,KAAK,MAAMN,OAAOlB,QAAQe,KAAK,CAAG;wBAChCS,GAAGN;oBACL;oBACAlB,QAAQe,KAAK,GAAGhB;gBAClB;gBACAM;gBACAO;YACF;QACF;IACF,GAAG;QAACP;QAAaO;KAAc;IAE/B,OAAOK;AACT;AAEA,OAAO,SAASQ,iBACdC,YAA6C;IAE7C,MAAMrB,cAAcD,eAAesB;IACnC,MAAM,EAAEC,IAAI,EAAE,GAAGpC,WAAWG;IAE5BF,UAAU;QACR,0DAA0D;QAC1D,+FAA+F;QAC/F,IAAIoC,QAAQC,GAAG,CAACC,SAAS,EAAE;YACzB;QACF;QAEA,yCAAyC;QACzC,MAAMC,WAAWC,YAAY;YAC3B3B,YACE4B,KAAKC,SAAS,CAAC;gBACbC,OAAO;gBACPR;gBACAS,aAAa;YACf;QAEJ,GAAG;QACH,OAAO,IAAMC,cAAcN;IAC7B,GAAG;QAACJ;QAAMtB;KAAY;AACxB","ignoreList":[0]}