"Fossies" - the Fresh Open Source Software Archive 
Member "node-v19.8.1-win-x64/node_modules/npm/node_modules/abort-controller/dist/abort-controller.mjs" (16 Feb 2023, 3429 Bytes) of package /windows/www/node-v19.8.1-win-x64.zip:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1 /**
2 * @author Toru Nagashima <https://github.com/mysticatea>
3 * See LICENSE file in root directory for full license.
4 */
5 import { EventTarget, defineEventAttribute } from 'event-target-shim';
6
7 /**
8 * The signal class.
9 * @see https://dom.spec.whatwg.org/#abortsignal
10 */
11 class AbortSignal extends EventTarget {
12 /**
13 * AbortSignal cannot be constructed directly.
14 */
15 constructor() {
16 super();
17 throw new TypeError("AbortSignal cannot be constructed directly");
18 }
19 /**
20 * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.
21 */
22 get aborted() {
23 const aborted = abortedFlags.get(this);
24 if (typeof aborted !== "boolean") {
25 throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? "null" : typeof this}`);
26 }
27 return aborted;
28 }
29 }
30 defineEventAttribute(AbortSignal.prototype, "abort");
31 /**
32 * Create an AbortSignal object.
33 */
34 function createAbortSignal() {
35 const signal = Object.create(AbortSignal.prototype);
36 EventTarget.call(signal);
37 abortedFlags.set(signal, false);
38 return signal;
39 }
40 /**
41 * Abort a given signal.
42 */
43 function abortSignal(signal) {
44 if (abortedFlags.get(signal) !== false) {
45 return;
46 }
47 abortedFlags.set(signal, true);
48 signal.dispatchEvent({ type: "abort" });
49 }
50 /**
51 * Aborted flag for each instances.
52 */
53 const abortedFlags = new WeakMap();
54 // Properties should be enumerable.
55 Object.defineProperties(AbortSignal.prototype, {
56 aborted: { enumerable: true },
57 });
58 // `toString()` should return `"[object AbortSignal]"`
59 if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
60 Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {
61 configurable: true,
62 value: "AbortSignal",
63 });
64 }
65
66 /**
67 * The AbortController.
68 * @see https://dom.spec.whatwg.org/#abortcontroller
69 */
70 class AbortController {
71 /**
72 * Initialize this controller.
73 */
74 constructor() {
75 signals.set(this, createAbortSignal());
76 }
77 /**
78 * Returns the `AbortSignal` object associated with this object.
79 */
80 get signal() {
81 return getSignal(this);
82 }
83 /**
84 * Abort and signal to any observers that the associated activity is to be aborted.
85 */
86 abort() {
87 abortSignal(getSignal(this));
88 }
89 }
90 /**
91 * Associated signals.
92 */
93 const signals = new WeakMap();
94 /**
95 * Get the associated signal of a given controller.
96 */
97 function getSignal(controller) {
98 const signal = signals.get(controller);
99 if (signal == null) {
100 throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? "null" : typeof controller}`);
101 }
102 return signal;
103 }
104 // Properties should be enumerable.
105 Object.defineProperties(AbortController.prototype, {
106 signal: { enumerable: true },
107 abort: { enumerable: true },
108 });
109 if (typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol") {
110 Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {
111 configurable: true,
112 value: "AbortController",
113 });
114 }
115
116 export default AbortController;
117 export { AbortController, AbortSignal };
118 //# sourceMappingURL=abort-controller.mjs.map