Mercurial
comparison third_party/bun/node_modules/scheduler/cjs/scheduler-unstable_post_task.development.js @ 12:de54585a40f1
Adding bun and node modules.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 02 Oct 2025 14:39:48 -0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 11:f33d9ff8b6e8 | 12:de54585a40f1 |
|---|---|
| 1 /** | |
| 2 * @license React | |
| 3 * scheduler-unstable_post_task.development.js | |
| 4 * | |
| 5 * Copyright (c) Facebook, Inc. and its affiliates. | |
| 6 * | |
| 7 * This source code is licensed under the MIT license found in the | |
| 8 * LICENSE file in the root directory of this source tree. | |
| 9 */ | |
| 10 | |
| 11 'use strict'; | |
| 12 | |
| 13 if (process.env.NODE_ENV !== "production") { | |
| 14 (function() { | |
| 15 'use strict'; | |
| 16 | |
| 17 // TODO: Use symbols? | |
| 18 var ImmediatePriority = 1; | |
| 19 var UserBlockingPriority = 2; | |
| 20 var NormalPriority = 3; | |
| 21 var LowPriority = 4; | |
| 22 var IdlePriority = 5; | |
| 23 | |
| 24 var perf = window.performance; | |
| 25 var setTimeout = window.setTimeout; // Use experimental Chrome Scheduler postTask API. | |
| 26 | |
| 27 var scheduler = global.scheduler; | |
| 28 var getCurrentTime = perf.now.bind(perf); | |
| 29 var unstable_now = getCurrentTime; // Scheduler periodically yields in case there is other work on the main | |
| 30 // thread, like user events. By default, it yields multiple times per frame. | |
| 31 // It does not attempt to align with frame boundaries, since most tasks don't | |
| 32 // need to be frame aligned; for those that do, use requestAnimationFrame. | |
| 33 | |
| 34 var yieldInterval = 5; | |
| 35 var deadline = 0; | |
| 36 var currentPriorityLevel_DEPRECATED = NormalPriority; // `isInputPending` is not available. Since we have no way of knowing if | |
| 37 // there's pending input, always yield at the end of the frame. | |
| 38 | |
| 39 function unstable_shouldYield() { | |
| 40 return getCurrentTime() >= deadline; | |
| 41 } | |
| 42 function unstable_requestPaint() {// Since we yield every frame regardless, `requestPaint` has no effect. | |
| 43 } | |
| 44 function unstable_scheduleCallback(priorityLevel, callback, options) { | |
| 45 var postTaskPriority; | |
| 46 | |
| 47 switch (priorityLevel) { | |
| 48 case ImmediatePriority: | |
| 49 case UserBlockingPriority: | |
| 50 postTaskPriority = 'user-blocking'; | |
| 51 break; | |
| 52 | |
| 53 case LowPriority: | |
| 54 case NormalPriority: | |
| 55 postTaskPriority = 'user-visible'; | |
| 56 break; | |
| 57 | |
| 58 case IdlePriority: | |
| 59 postTaskPriority = 'background'; | |
| 60 break; | |
| 61 | |
| 62 default: | |
| 63 postTaskPriority = 'user-visible'; | |
| 64 break; | |
| 65 } | |
| 66 | |
| 67 var controller = new TaskController(); | |
| 68 var postTaskOptions = { | |
| 69 priority: postTaskPriority, | |
| 70 delay: typeof options === 'object' && options !== null ? options.delay : 0, | |
| 71 signal: controller.signal | |
| 72 }; | |
| 73 var node = { | |
| 74 _controller: controller | |
| 75 }; | |
| 76 scheduler.postTask(runTask.bind(null, priorityLevel, postTaskPriority, node, callback), postTaskOptions).catch(handleAbortError); | |
| 77 return node; | |
| 78 } | |
| 79 | |
| 80 function runTask(priorityLevel, postTaskPriority, node, callback) { | |
| 81 deadline = getCurrentTime() + yieldInterval; | |
| 82 | |
| 83 try { | |
| 84 currentPriorityLevel_DEPRECATED = priorityLevel; | |
| 85 var _didTimeout_DEPRECATED = false; | |
| 86 var result = callback(_didTimeout_DEPRECATED); | |
| 87 | |
| 88 if (typeof result === 'function') { | |
| 89 // Assume this is a continuation | |
| 90 var continuation = result; | |
| 91 var continuationController = new TaskController(); | |
| 92 var continuationOptions = { | |
| 93 priority: postTaskPriority, | |
| 94 signal: continuationController.signal | |
| 95 }; // Update the original callback node's controller, since even though we're | |
| 96 // posting a new task, conceptually it's the same one. | |
| 97 | |
| 98 node._controller = continuationController; | |
| 99 scheduler.postTask(runTask.bind(null, priorityLevel, postTaskPriority, node, continuation), continuationOptions).catch(handleAbortError); | |
| 100 } | |
| 101 } catch (error) { | |
| 102 // We're inside a `postTask` promise. If we don't handle this error, then it | |
| 103 // will trigger an "Unhandled promise rejection" error. We don't want that, | |
| 104 // but we do want the default error reporting behavior that normal | |
| 105 // (non-Promise) tasks get for unhandled errors. | |
| 106 // | |
| 107 // So we'll re-throw the error inside a regular browser task. | |
| 108 setTimeout(function () { | |
| 109 throw error; | |
| 110 }); | |
| 111 } finally { | |
| 112 currentPriorityLevel_DEPRECATED = NormalPriority; | |
| 113 } | |
| 114 } | |
| 115 | |
| 116 function handleAbortError(error) {// Abort errors are an implementation detail. We don't expose the | |
| 117 // TaskController to the user, nor do we expose the promise that is returned | |
| 118 // from `postTask`. So we should suppress them, since there's no way for the | |
| 119 // user to handle them. | |
| 120 } | |
| 121 | |
| 122 function unstable_cancelCallback(node) { | |
| 123 var controller = node._controller; | |
| 124 controller.abort(); | |
| 125 } | |
| 126 function unstable_runWithPriority(priorityLevel, callback) { | |
| 127 var previousPriorityLevel = currentPriorityLevel_DEPRECATED; | |
| 128 currentPriorityLevel_DEPRECATED = priorityLevel; | |
| 129 | |
| 130 try { | |
| 131 return callback(); | |
| 132 } finally { | |
| 133 currentPriorityLevel_DEPRECATED = previousPriorityLevel; | |
| 134 } | |
| 135 } | |
| 136 function unstable_getCurrentPriorityLevel() { | |
| 137 return currentPriorityLevel_DEPRECATED; | |
| 138 } | |
| 139 function unstable_next(callback) { | |
| 140 var priorityLevel; | |
| 141 | |
| 142 switch (currentPriorityLevel_DEPRECATED) { | |
| 143 case ImmediatePriority: | |
| 144 case UserBlockingPriority: | |
| 145 case NormalPriority: | |
| 146 // Shift down to normal priority | |
| 147 priorityLevel = NormalPriority; | |
| 148 break; | |
| 149 | |
| 150 default: | |
| 151 // Anything lower than normal priority should remain at the current level. | |
| 152 priorityLevel = currentPriorityLevel_DEPRECATED; | |
| 153 break; | |
| 154 } | |
| 155 | |
| 156 var previousPriorityLevel = currentPriorityLevel_DEPRECATED; | |
| 157 currentPriorityLevel_DEPRECATED = priorityLevel; | |
| 158 | |
| 159 try { | |
| 160 return callback(); | |
| 161 } finally { | |
| 162 currentPriorityLevel_DEPRECATED = previousPriorityLevel; | |
| 163 } | |
| 164 } | |
| 165 function unstable_wrapCallback(callback) { | |
| 166 var parentPriorityLevel = currentPriorityLevel_DEPRECATED; | |
| 167 return function () { | |
| 168 var previousPriorityLevel = currentPriorityLevel_DEPRECATED; | |
| 169 currentPriorityLevel_DEPRECATED = parentPriorityLevel; | |
| 170 | |
| 171 try { | |
| 172 return callback(); | |
| 173 } finally { | |
| 174 currentPriorityLevel_DEPRECATED = previousPriorityLevel; | |
| 175 } | |
| 176 }; | |
| 177 } | |
| 178 function unstable_forceFrameRate() {} | |
| 179 function unstable_pauseExecution() {} | |
| 180 function unstable_continueExecution() {} | |
| 181 function unstable_getFirstCallbackNode() { | |
| 182 return null; | |
| 183 } // Currently no profiling build | |
| 184 | |
| 185 var unstable_Profiling = null; | |
| 186 | |
| 187 exports.unstable_IdlePriority = IdlePriority; | |
| 188 exports.unstable_ImmediatePriority = ImmediatePriority; | |
| 189 exports.unstable_LowPriority = LowPriority; | |
| 190 exports.unstable_NormalPriority = NormalPriority; | |
| 191 exports.unstable_Profiling = unstable_Profiling; | |
| 192 exports.unstable_UserBlockingPriority = UserBlockingPriority; | |
| 193 exports.unstable_cancelCallback = unstable_cancelCallback; | |
| 194 exports.unstable_continueExecution = unstable_continueExecution; | |
| 195 exports.unstable_forceFrameRate = unstable_forceFrameRate; | |
| 196 exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | |
| 197 exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | |
| 198 exports.unstable_next = unstable_next; | |
| 199 exports.unstable_now = unstable_now; | |
| 200 exports.unstable_pauseExecution = unstable_pauseExecution; | |
| 201 exports.unstable_requestPaint = unstable_requestPaint; | |
| 202 exports.unstable_runWithPriority = unstable_runWithPriority; | |
| 203 exports.unstable_scheduleCallback = unstable_scheduleCallback; | |
| 204 exports.unstable_shouldYield = unstable_shouldYield; | |
| 205 exports.unstable_wrapCallback = unstable_wrapCallback; | |
| 206 })(); | |
| 207 } |