| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent a926e72 commit 9a3393d
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -25,6 +25,7 @@ const { | |||
| 25 | 25 | Promise, | |
| 26 | 26 | PromisePrototypeThen, | |
| 27 | 27 | PromiseResolve, | |
| 28 | + PromiseWithResolvers, | ||
| 28 | 29 | ReflectGetOwnPropertyDescriptor, | |
| 29 | 30 | ReflectOwnKeys, | |
| 30 | 31 | RegExpPrototypeExec, | |
@@ -380,6 +381,8 @@ function createRepl(inspector) { | |||
| 380 | 381 | let selectedFrame; | |
| 381 | 382 | let exitDebugRepl; | |
| 382 | 383 | let contextLineNumber = 2; | |
| 384 | + let initialBreakRender; | ||
| 385 | + let waitForInitialBreakRender = false; | ||
| 383 | 386 | ||
| 384 | 387 | function resetOnStart() { | |
| 385 | 388 | knownScripts = {}; | |
@@ -890,6 +893,13 @@ function createRepl(inspector) { | |||
| 890 | 893 | }); | |
| 891 | 894 | } | |
| 892 | 895 | ||
| 896 | + function createInitialBreakRenderPromise(pauseRender) { | ||
| 897 | + const { promise, resolve, reject } = PromiseWithResolvers(); | ||
| 898 | + initialBreakRender = promise; | ||
| 899 | + PromisePrototypeThen(pauseRender, resolve, reject); | ||
| 900 | + return promise; | ||
| 901 | + } | ||
| 902 | + | ||
| 893 | 903 | Debugger.on('paused', ({ callFrames, reason /* , hitBreakpoints */ }) => { | |
| 894 | 904 | if (process.env.NODE_INSPECT_RESUME_ON_START === '1' && | |
| 895 | 905 | reason === 'Break on start') { | |
@@ -910,7 +920,7 @@ function createRepl(inspector) { | |||
| 910 | 920 | ||
| 911 | 921 | const header = `${breakType} in ${scriptUrl}:${lineNumber + 1}`; | |
| 912 | 922 | ||
| 913 | - inspector.suspendReplWhile(() => | ||
| 923 | + const pauseRender = inspector.suspendReplWhile(() => | ||
| 914 | 924 | PromisePrototypeThen( | |
| 915 | 925 | SafePromiseAllReturnArrayLike([formatWatchers(true), selectedFrame.list(contextLineNumber)]), | |
| 916 | 926 | ({ 0: watcherList, 1: context }) => { | |
@@ -919,6 +929,10 @@ function createRepl(inspector) { | |||
| 919 | 929 | inspect(context); | |
| 920 | 930 | print(`${header}\n${breakContext}`); | |
| 921 | 931 | })); | |
| 932 | + | ||
| 933 | + if (waitForInitialBreakRender && !initialBreakRender) { | ||
| 934 | + createInitialBreakRenderPromise(pauseRender); | ||
| 935 | + } | ||
| 922 | 936 | }); | |
| 923 | 937 | ||
| 924 | 938 | function handleResumed() { | |
@@ -1186,6 +1200,9 @@ function createRepl(inspector) { | |||
| 1186 | 1200 | } | |
| 1187 | 1201 | ||
| 1188 | 1202 | async function initAfterStart() { | |
| 1203 | + waitForInitialBreakRender = | ||
| 1204 | + !!inspector.options?.script && | ||
| 1205 | + process.env.NODE_INSPECT_RESUME_ON_START !== '1'; | ||
| 1189 | 1206 | await Runtime.enable(); | |
| 1190 | 1207 | await Profiler.enable(); | |
| 1191 | 1208 | await Profiler.setSamplingInterval({ interval: 100 }); | |
@@ -1194,7 +1211,12 @@ function createRepl(inspector) { | |||
| 1194 | 1211 | await Debugger.setBlackboxPatterns({ patterns: [] }); | |
| 1195 | 1212 | await Debugger.setPauseOnExceptions({ state: pauseOnExceptionState }); | |
| 1196 | 1213 | await restoreBreakpoints(); | |
| 1197 | - return Runtime.runIfWaitingForDebugger(); | ||
| 1214 | + await Runtime.runIfWaitingForDebugger(); | ||
| 1215 | + await PromiseResolve(); | ||
| 1216 | + waitForInitialBreakRender = false; | ||
| 1217 | + const initialBreakRenderPromise = initialBreakRender; | ||
| 1218 | + initialBreakRender = null; | ||
| 1219 | + await initialBreakRenderPromise; | ||
| 1198 | 1220 | } | |
| 1199 | 1221 | ||
| 1200 | 1222 | return async function startRepl() { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments