| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 64b6777 commit 818c10e
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,7 +6,6 @@ | |||
| 6 | 6 | const { | |
| 7 | 7 | ObjectAssign, | |
| 8 | 8 | ObjectDefineProperties, | |
| 9 | - ObjectSetPrototypeOf, | ||
| 10 | 9 | ObjectDefineProperty, | |
| 11 | 10 | PromiseResolve, | |
| 12 | 11 | SafeFinalizationRegistry, | |
@@ -69,6 +68,8 @@ const { | |||
| 69 | 68 | let _MessageChannel; | |
| 70 | 69 | let markTransferMode; | |
| 71 | 70 | ||
| 71 | + const kDontThrowSymbol = Symbol('kDontThrowSymbol'); | ||
| 72 | + | ||
| 72 | 73 | // Loading the MessageChannel and markTransferable have to be done lazily | |
| 73 | 74 | // because otherwise we'll end up with a require cycle that ends up with | |
| 74 | 75 | // an incomplete initialization of abort_controller. | |
@@ -137,8 +138,35 @@ function setWeakAbortSignalTimeout(weakRef, delay) { | |||
| 137 | 138 | } | |
| 138 | 139 | ||
| 139 | 140 | class AbortSignal extends EventTarget { | |
| 140 | - constructor() { | ||
| 141 | - throw new ERR_ILLEGAL_CONSTRUCTOR(); | ||
| 141 | + | ||
| 142 | + /** | ||
| 143 | + * @param {symbol | undefined} dontThrowSymbol | ||
| 144 | + * @param {{ | ||
| 145 | + * aborted? : boolean, | ||
| 146 | + * reason? : any, | ||
| 147 | + * transferable? : boolean, | ||
| 148 | + * composite? : boolean, | ||
| 149 | + * }} [init] | ||
| 150 | + * @private | ||
| 151 | + */ | ||
| 152 | + constructor(dontThrowSymbol = undefined, init = kEmptyObject) { | ||
| 153 | + if (dontThrowSymbol !== kDontThrowSymbol) { | ||
| 154 | + throw new ERR_ILLEGAL_CONSTRUCTOR(); | ||
| 155 | + } | ||
| 156 | + super(); | ||
| 157 | + | ||
| 158 | + const { | ||
| 159 | + aborted = false, | ||
| 160 | + reason = undefined, | ||
| 161 | + transferable = false, | ||
| 162 | + composite = false, | ||
| 163 | + } = init; | ||
| 164 | + this[kAborted] = aborted; | ||
| 165 | + this[kReason] = reason; | ||
| 166 | + this[kComposite] = composite; | ||
| 167 | + if (transferable) { | ||
| 168 | + lazyMarkTransferMode(this, false, true); | ||
| 169 | + } | ||
| 142 | 170 | } | |
| 143 | 171 | ||
| 144 | 172 | /** | |
@@ -176,7 +204,7 @@ class AbortSignal extends EventTarget { | |||
| 176 | 204 | */ | |
| 177 | 205 | static abort( | |
| 178 | 206 | reason = new DOMException('This operation was aborted', 'AbortError')) { | |
| 179 | - return createAbortSignal({ aborted: true, reason }); | ||
| 207 | + return new AbortSignal(kDontThrowSymbol, { aborted: true, reason }); | ||
| 180 | 208 | } | |
| 181 | 209 | ||
| 182 | 210 | /** | |
@@ -185,7 +213,7 @@ class AbortSignal extends EventTarget { | |||
| 185 | 213 | */ | |
| 186 | 214 | static timeout(delay) { | |
| 187 | 215 | validateUint32(delay, 'delay', false); | |
| 188 | - const signal = createAbortSignal(); | ||
| 216 | + const signal = new AbortSignal(kDontThrowSymbol); | ||
| 189 | 217 | signal[kTimeout] = true; | |
| 190 | 218 | clearTimeoutRegistry.register( | |
| 191 | 219 | signal, | |
@@ -199,7 +227,7 @@ class AbortSignal extends EventTarget { | |||
| 199 | 227 | */ | |
| 200 | 228 | static any(signals) { | |
| 201 | 229 | validateAbortSignalArray(signals, 'signals'); | |
| 202 | - const resultSignal = createAbortSignal({ composite: true }); | ||
| 230 | + const resultSignal = new AbortSignal(kDontThrowSymbol, { composite: true }); | ||
| 203 | 231 | if (!signals.length) { | |
| 204 | 232 | return resultSignal; | |
| 205 | 233 | } | |
@@ -319,7 +347,7 @@ class AbortSignal extends EventTarget { | |||
| 319 | 347 | } | |
| 320 | 348 | ||
| 321 | 349 | function ClonedAbortSignal() { | |
| 322 | - return createAbortSignal({ transferable: true }); | ||
| 350 | + return new AbortSignal(kDontThrowSymbol, { transferable: true }); | ||
| 323 | 351 | } | |
| 324 | 352 | ClonedAbortSignal.prototype[kDeserialize] = () => {}; | |
| 325 | 353 | ||
@@ -337,33 +365,6 @@ ObjectDefineProperty(AbortSignal.prototype, SymbolToStringTag, { | |||
| 337 | 365 | ||
| 338 | 366 | defineEventHandler(AbortSignal.prototype, 'abort'); | |
| 339 | 367 | ||
| 340 | - /** | ||
| 341 | - * @param {{ | ||
| 342 | - * aborted? : boolean, | ||
| 343 | - * reason? : any, | ||
| 344 | - * transferable? : boolean, | ||
| 345 | - * composite? : boolean, | ||
| 346 | - * }} [init] | ||
| 347 | - * @returns {AbortSignal} | ||
| 348 | - */ | ||
| 349 | - function createAbortSignal(init = kEmptyObject) { | ||
| 350 | - const { | ||
| 351 | - aborted = false, | ||
| 352 | - reason = undefined, | ||
| 353 | - transferable = false, | ||
| 354 | - composite = false, | ||
| 355 | - } = init; | ||
| 356 | - const signal = new EventTarget(); | ||
| 357 | - ObjectSetPrototypeOf(signal, AbortSignal.prototype); | ||
| 358 | - signal[kAborted] = aborted; | ||
| 359 | - signal[kReason] = reason; | ||
| 360 | - signal[kComposite] = composite; | ||
| 361 | - if (transferable) { | ||
| 362 | - lazyMarkTransferMode(signal, false, true); | ||
| 363 | - } | ||
| 364 | - return signal; | ||
| 365 | - } | ||
| 366 | - | ||
| 367 | 368 | function abortSignal(signal, reason) { | |
| 368 | 369 | if (signal[kAborted]) return; | |
| 369 | 370 | signal[kAborted] = true; | |
@@ -385,15 +386,15 @@ class AbortController { | |||
| 385 | 386 | * @type {AbortSignal} | |
| 386 | 387 | */ | |
| 387 | 388 | get signal() { | |
| 388 | - this.#signal ??= createAbortSignal(); | ||
| 389 | + this.#signal ??= new AbortSignal(kDontThrowSymbol); | ||
| 389 | 390 | return this.#signal; | |
| 390 | 391 | } | |
| 391 | 392 | ||
| 392 | 393 | /** | |
| 393 | 394 | * @param {any} [reason] | |
| 394 | 395 | */ | |
| 395 | 396 | abort(reason = new DOMException('This operation was aborted', 'AbortError')) { | |
| 396 | - abortSignal(this.#signal ??= createAbortSignal(), reason); | ||
| 397 | + abortSignal(this.#signal ??= new AbortSignal(kDontThrowSymbol), reason); | ||
| 397 | 398 | } | |
| 398 | 399 | ||
| 399 | 400 | [customInspectSymbol](depth, options) { | |
@@ -404,7 +405,7 @@ class AbortController { | |||
| 404 | 405 | ||
| 405 | 406 | static [kMakeTransferable]() { | |
| 406 | 407 | const controller = new AbortController(); | |
| 407 | - controller.#signal = createAbortSignal({ transferable: true }); | ||
| 408 | + controller.#signal = new AbortSignal(kDontThrowSymbol, { transferable: true }); | ||
| 408 | 409 | return controller; | |
| 409 | 410 | } | |
| 410 | 411 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments