fetch-xhr-shim 0.0.1-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/cjs/dev.js +55 -0
  2. package/dist/cjs/encoding/TextDecoderP.js +179 -0
  3. package/dist/cjs/encoding/TextEncoderP.js +121 -0
  4. package/dist/cjs/event-system/AbortControllerP.js +28 -0
  5. package/dist/cjs/event-system/AbortSignalP.js +117 -0
  6. package/dist/cjs/event-system/CustomEventP.js +35 -0
  7. package/dist/cjs/event-system/EventP.js +125 -0
  8. package/dist/cjs/event-system/EventTargetP.js +181 -0
  9. package/dist/cjs/event-system/ProgressEventP.js +54 -0
  10. package/dist/cjs/fetch-api/BodyImpl.js +176 -0
  11. package/dist/cjs/fetch-api/HeadersP.js +184 -0
  12. package/dist/cjs/fetch-api/RequestP.js +188 -0
  13. package/dist/cjs/fetch-api/ResponseP.js +93 -0
  14. package/dist/cjs/fetch-api/fetchP.js +129 -0
  15. package/dist/cjs/file-system/BlobP.js +171 -0
  16. package/dist/cjs/file-system/FileP.js +53 -0
  17. package/dist/cjs/file-system/FileReaderP.js +201 -0
  18. package/dist/cjs/fixes.js +243 -0
  19. package/dist/cjs/index.js +59 -0
  20. package/dist/cjs/network/FormDataP.js +308 -0
  21. package/dist/cjs/network/URLSearchParamsP.js +235 -0
  22. package/dist/cjs/polyfill.js +87 -0
  23. package/dist/cjs/utils.js +70 -0
  24. package/dist/dev.d.ts +145 -0
  25. package/dist/esm/dev.js +13 -0
  26. package/dist/esm/encoding/TextDecoderP.js +175 -0
  27. package/dist/esm/encoding/TextEncoderP.js +118 -0
  28. package/dist/esm/event-system/AbortControllerP.js +25 -0
  29. package/dist/esm/event-system/AbortSignalP.js +112 -0
  30. package/dist/esm/event-system/CustomEventP.js +32 -0
  31. package/dist/esm/event-system/EventP.js +121 -0
  32. package/dist/esm/event-system/EventTargetP.js +174 -0
  33. package/dist/esm/event-system/ProgressEventP.js +51 -0
  34. package/dist/esm/fetch-api/BodyImpl.js +172 -0
  35. package/dist/esm/fetch-api/HeadersP.js +176 -0
  36. package/dist/esm/fetch-api/RequestP.js +184 -0
  37. package/dist/esm/fetch-api/ResponseP.js +90 -0
  38. package/dist/esm/fetch-api/fetchP.js +125 -0
  39. package/dist/esm/file-system/BlobP.js +164 -0
  40. package/dist/esm/file-system/FileP.js +50 -0
  41. package/dist/esm/file-system/FileReaderP.js +197 -0
  42. package/dist/esm/fixes.js +239 -0
  43. package/dist/esm/index.js +17 -0
  44. package/dist/esm/network/FormDataP.js +301 -0
  45. package/dist/esm/network/URLSearchParamsP.js +231 -0
  46. package/dist/esm/polyfill.js +85 -0
  47. package/dist/esm/utils.js +60 -0
  48. package/dist/fetch-xhr-shim.cjs.min.js +1 -0
  49. package/dist/fetch-xhr-shim.esm.min.js +1 -0
  50. package/dist/index.d.ts +300 -0
  51. package/package.json +59 -0
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ var TextDecoderP = require('./encoding/TextDecoderP.js');
4
+ var EventTargetP = require('./event-system/EventTargetP.js');
5
+ var EventP = require('./event-system/EventP.js');
6
+ var ProgressEventP = require('./event-system/ProgressEventP.js');
7
+ var AbortSignalP = require('./event-system/AbortSignalP.js');
8
+ var BlobP = require('./file-system/BlobP.js');
9
+ var FileReaderP = require('./file-system/FileReaderP.js');
10
+ var URLSearchParamsP = require('./network/URLSearchParamsP.js');
11
+ var FormDataP = require('./network/FormDataP.js');
12
+ var HeadersP = require('./fetch-api/HeadersP.js');
13
+ var BodyImpl = require('./fetch-api/BodyImpl.js');
14
+ var RequestP = require('./fetch-api/RequestP.js');
15
+ var utils = require('./utils.js');
16
+
17
+
18
+
19
+ exports.isArrayBuffer = TextDecoderP.isArrayBuffer;
20
+ exports.EventTarget_dispatchEvent = EventTargetP.EventTarget_dispatchEvent;
21
+ exports.attachFn = EventTargetP.attachFn;
22
+ exports.executeFn = EventTargetP.executeFn;
23
+ exports.isEventTarget = EventTargetP.isEventTarget;
24
+ exports.Event_setTrusted = EventP.Event_setTrusted;
25
+ exports.ProgressEventP = ProgressEventP.ProgressEventP;
26
+ exports.emitProgressEvent = ProgressEventP.emitProgressEvent;
27
+ exports.AbortSignal_abort = AbortSignalP.AbortSignal_abort;
28
+ exports.createAbortSignal = AbortSignalP.createAbortSignal;
29
+ exports.decode = BlobP.decode;
30
+ exports.encode = BlobP.encode;
31
+ exports.isBlob = BlobP.isBlob;
32
+ exports.Uint8Array_toBase64 = FileReaderP.Uint8Array_toBase64;
33
+ exports.isURLSearchParams = URLSearchParamsP.isURLSearchParams;
34
+ exports.FormData_toBlob = FormDataP.FormData_toBlob;
35
+ exports.createFormDataFromBinaryText = FormDataP.createFormDataFromBinaryText;
36
+ exports.extractBoundary = FormDataP.extractBoundary;
37
+ exports.isFormData = FormDataP.isFormData;
38
+ exports.createHeaders = HeadersP.createHeaders;
39
+ exports.isHeaders = HeadersP.isHeaders;
40
+ exports.normalizeName = HeadersP.normalizeName;
41
+ exports.normalizeValue = HeadersP.normalizeValue;
42
+ exports.parseHeaders = HeadersP.parseHeaders;
43
+ exports.BodyImpl = BodyImpl.BodyImpl;
44
+ exports.Payload = BodyImpl.Payload;
45
+ exports.initBody = BodyImpl.initBody;
46
+ exports.normalizeMethod = RequestP.normalizeMethod;
47
+ exports.DOMException = utils.DOMException;
48
+ exports.DOMExceptionP = utils.DOMExceptionP;
49
+ exports._Symbol = utils._Symbol;
50
+ exports.checkArgsLength = utils.checkArgsLength;
51
+ exports.className = utils.className;
52
+ exports.isObjectType = utils.isObjectType;
53
+ exports.isPolyfillType = utils.isPolyfillType;
54
+ exports.isSequence = utils.isSequence;
55
+ exports.setState = utils.setState;
@@ -0,0 +1,179 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.js');
4
+
5
+ const validLabels = ["utf-8", "utf8", "unicode-1-1-utf-8"];
6
+ class TextDecoderP {
7
+ constructor(label = "utf-8", options) {
8
+ if (validLabels.indexOf((typeof label === "string" ? label : ("" + label)).toLowerCase()) === -1) {
9
+ throw new RangeError(`Failed to construct 'TextDecoder': encoding ('${label}') not implemented.`);
10
+ }
11
+ utils.setState(this, "__TextDecoder__", new TextDecoderState(options));
12
+ }
13
+ get encoding() { return "utf-8"; }
14
+ get fatal() { return state(this).fatal; }
15
+ get ignoreBOM() { return state(this).ignoreBOM; }
16
+ decode(input, options) {
17
+ return decodeText(input, options, state(this));
18
+ }
19
+ /** @internal */ toString() { return "[object TextDecoder]"; }
20
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "TextDecoder"; }
21
+ /** @internal */ get __MPHTTPX__() { return { chain: ["TextDecoder"] }; }
22
+ }
23
+ /** @internal */
24
+ class TextDecoderState {
25
+ constructor({ fatal = false, ignoreBOM = false } = {}) {
26
+ this.partial = [];
27
+ this.fatal = !!fatal;
28
+ this.ignoreBOM = !!ignoreBOM;
29
+ }
30
+ }
31
+ function state(target) {
32
+ return target.__TextDecoder__;
33
+ }
34
+ function decodeText(input, { stream = false } = {}, settings = { fatal: false, ignoreBOM: false, partial: [] }) {
35
+ if (input === undefined) {
36
+ if (settings.partial.length > 0) {
37
+ if (settings.fatal) {
38
+ settings.partial = [];
39
+ throw new TypeError("Incomplete UTF-8 sequence.");
40
+ }
41
+ }
42
+ return "";
43
+ }
44
+ let bytes = isArrayBuffer(input)
45
+ ? new Uint8Array(input)
46
+ : ArrayBuffer.isView(input)
47
+ ? new Uint8Array(input.buffer, input.byteOffset, input.byteLength)
48
+ : (() => { throw new TypeError("Input could not be converted to any of: ArrayBufferView, ArrayBuffer."); })();
49
+ if (settings.partial.length > 0) {
50
+ let merged = new Uint8Array(settings.partial.length + bytes.length);
51
+ merged.set(settings.partial, 0);
52
+ merged.set(bytes, settings.partial.length);
53
+ bytes = merged;
54
+ settings.partial = [];
55
+ }
56
+ if (!settings.ignoreBOM && bytes.length >= 3) {
57
+ if (bytes[0] === 0xEF && bytes[1] === 0xBB && bytes[2] === 0xBF) {
58
+ bytes = bytes.subarray(3); // × WeChat 2.5.0
59
+ }
60
+ }
61
+ let end = bytes.length;
62
+ let res = [];
63
+ if (stream && bytes.length > 0) {
64
+ let i = bytes.length;
65
+ while (i > 0 && i > bytes.length - 4) {
66
+ let byte = bytes[i - 1];
67
+ if ((byte & 0b11000000) !== 0b10000000) {
68
+ let len = (byte > 0xEF) ? 4 : (byte > 0xDF) ? 3 : (byte > 0xBF) ? 2 : 1;
69
+ if (len > bytes.length - (i - 1)) {
70
+ end = i - 1;
71
+ }
72
+ break;
73
+ }
74
+ --i;
75
+ }
76
+ settings.partial = Array.from(bytes.slice(end)); // save tail // × WeChat 2.5.0
77
+ bytes = bytes.slice(0, end); // × WeChat 2.5.0
78
+ }
79
+ let codePoint = 0;
80
+ let tempCodePoint = 0;
81
+ let bytesPerSequence = 0;
82
+ let firstByte = 0, secondByte = 0, thirdByte = 0, fourthByte = 0;
83
+ let i = 0;
84
+ while (i < end) {
85
+ codePoint = 0;
86
+ firstByte = bytes[i];
87
+ bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1;
88
+ if (i + bytesPerSequence <= end) {
89
+ switch (bytesPerSequence) {
90
+ case 1:
91
+ if (firstByte < 0x80) {
92
+ codePoint = firstByte;
93
+ }
94
+ break;
95
+ case 2:
96
+ secondByte = bytes[i + 1];
97
+ if ((secondByte & 0xC0) === 0x80) {
98
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
99
+ if (tempCodePoint > 0x7F) {
100
+ codePoint = tempCodePoint;
101
+ }
102
+ }
103
+ break;
104
+ case 3:
105
+ secondByte = bytes[i + 1];
106
+ thirdByte = bytes[i + 2];
107
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
108
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
109
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
110
+ codePoint = tempCodePoint;
111
+ }
112
+ }
113
+ break;
114
+ case 4:
115
+ secondByte = bytes[i + 1];
116
+ thirdByte = bytes[i + 2];
117
+ fourthByte = bytes[i + 3];
118
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
119
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
120
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
121
+ codePoint = tempCodePoint;
122
+ }
123
+ }
124
+ break;
125
+ }
126
+ }
127
+ if (codePoint === 0 && ((bytesPerSequence === 1 && firstByte !== 0) || bytesPerSequence > 1)) {
128
+ if (settings.fatal) {
129
+ settings.partial = [];
130
+ throw new TypeError("Decoding failed.");
131
+ }
132
+ let skip = 1;
133
+ while (i + skip < end && (bytes[i + skip] & 0b11000000) === 0b10000000) {
134
+ skip += 1;
135
+ }
136
+ // we did not generate a valid codePoint so insert a replacement char (U+FFFD)
137
+ res.push(0xFFFD);
138
+ i += skip;
139
+ continue;
140
+ }
141
+ else if (codePoint > 0xFFFF) {
142
+ // encode to utf16 (surrogate pair dance)
143
+ codePoint -= 0x10000;
144
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800);
145
+ codePoint = 0xDC00 | codePoint & 0x3FF;
146
+ }
147
+ res.push(codePoint);
148
+ i += bytesPerSequence;
149
+ }
150
+ return res.length > 0x4000 ? buildString(res) : concatString(res);
151
+ }
152
+ function buildString(val) {
153
+ let arr = [];
154
+ for (let i = 0, len = val.length; i < len; i += 0x1000) {
155
+ arr.push(String.fromCharCode.apply(String, val.slice(i, i + 0x1000)));
156
+ }
157
+ return arr.join("");
158
+ }
159
+ function concatString(val) {
160
+ let str = "";
161
+ for (let i = 0, len = val.length; i < len; i += 0x1000) {
162
+ str += String.fromCharCode.apply(String, val.slice(i, i + 0x1000));
163
+ }
164
+ return str;
165
+ }
166
+ // Mini Program
167
+ function isOtherArrayBuffer(value) {
168
+ return (utils.isObjectType("ArrayBuffer", value) || String(value) === "[object ArrayBuffer]")
169
+ && "byteLength" in value
170
+ && typeof value.byteLength === "number";
171
+ }
172
+ function isArrayBuffer(value) {
173
+ return (!!value && typeof value === "object" && ArrayBuffer.prototype.isPrototypeOf(value)) || isOtherArrayBuffer(value);
174
+ }
175
+ const TextDecoderE = (typeof TextDecoder !== "undefined" && TextDecoder) || TextDecoderP;
176
+
177
+ exports.TextDecoder = TextDecoderE;
178
+ exports.TextDecoderP = TextDecoderP;
179
+ exports.isArrayBuffer = isArrayBuffer;
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.js');
4
+
5
+ class TextEncoderP {
6
+ get encoding() { return "utf-8"; }
7
+ encode(input = "") {
8
+ return encodeText(typeof input === "string" ? input : ("" + input)).encoded;
9
+ }
10
+ encodeInto(source, destination) {
11
+ utils.checkArgsLength(arguments.length, 2, "TextEncoder", "encodeInto");
12
+ if (!(Uint8Array.prototype.isPrototypeOf(destination) || utils.isObjectType("Uint8Array", destination) /* Mini Program */)) {
13
+ throw new TypeError("Failed to execute 'encodeInto' on 'TextEncoder': parameter 2 is not of type 'Uint8Array'.");
14
+ }
15
+ let result = encodeText(typeof source === "string" ? source : ("" + source), destination);
16
+ return { read: result.read, written: result.written };
17
+ }
18
+ /** @internal */ toString() { return "[object TextEncoder]"; }
19
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "TextEncoder"; }
20
+ /** @internal */ get __MPHTTPX__() { return { chain: ["TextEncoder"] }; }
21
+ }
22
+ function encodeText(input, destination) {
23
+ const HAS_DESTINATION = destination !== undefined;
24
+ let pos = 0;
25
+ let read = 0;
26
+ let len = input.length;
27
+ let at = 0; // output position
28
+ let tlen = Math.max(32, len + (len >> 1) + 7); // 1.5x size
29
+ let target = HAS_DESTINATION ? destination : new Uint8Array((tlen >> 3) << 3); // ... but at 8 byte offset
30
+ let value = 0;
31
+ let codeUnitCount = 0;
32
+ let byteCount = 0;
33
+ while (pos < len) {
34
+ value = input.charCodeAt(pos);
35
+ codeUnitCount = 1;
36
+ if (value >= 0xd800 && value <= 0xdbff) {
37
+ // high surrogate
38
+ if (pos + 1 < len) {
39
+ let extra = input.charCodeAt(pos + 1);
40
+ if ((extra & 0xfc00) === 0xdc00) {
41
+ codeUnitCount = 2;
42
+ pos += 2;
43
+ value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;
44
+ }
45
+ else {
46
+ pos += 1;
47
+ value = 0xfffd;
48
+ }
49
+ }
50
+ else {
51
+ pos += 1;
52
+ value = 0xfffd;
53
+ }
54
+ }
55
+ else if (value >= 0xdc00 && value <= 0xdfff) {
56
+ pos += 1;
57
+ value = 0xfffd;
58
+ }
59
+ else {
60
+ pos += 1;
61
+ }
62
+ // expand the buffer if we couldn't write 4 bytes
63
+ if (!HAS_DESTINATION && at + 4 > target.length) {
64
+ tlen += 8; // minimum extra
65
+ tlen *= (1.0 + (pos / input.length) * 2); // take 2x the remaining
66
+ tlen = (tlen >> 3) << 3; // 8 byte offset
67
+ let update = new Uint8Array(tlen);
68
+ update.set(target);
69
+ target = update;
70
+ }
71
+ if ((value & 0xffffff80) === 0) { // 1-byte
72
+ byteCount = 1;
73
+ }
74
+ else if ((value & 0xfffff800) === 0) { // 2-byte
75
+ byteCount = 2;
76
+ }
77
+ else if ((value & 0xffff0000) === 0) { // 3-byte
78
+ byteCount = 3;
79
+ }
80
+ else if ((value & 0xffe00000) === 0) { // 4-byte
81
+ byteCount = 4;
82
+ }
83
+ else {
84
+ value = 0xfffd;
85
+ byteCount = 3;
86
+ }
87
+ if (HAS_DESTINATION && at + byteCount > target.length) {
88
+ break;
89
+ }
90
+ switch (byteCount) {
91
+ case 1: // 1-byte
92
+ target[at++] = value; // ASCII
93
+ break;
94
+ case 2: // 2-byte
95
+ target[at++] = ((value >> 6) & 0x1f) | 0xc0;
96
+ target[at++] = (value & 0x3f) | 0x80;
97
+ break;
98
+ case 3: // 3-byte
99
+ target[at++] = ((value >> 12) & 0x0f) | 0xe0;
100
+ target[at++] = ((value >> 6) & 0x3f) | 0x80;
101
+ target[at++] = (value & 0x3f) | 0x80;
102
+ break;
103
+ case 4: // 4-byte
104
+ target[at++] = ((value >> 18) & 0x07) | 0xf0;
105
+ target[at++] = ((value >> 12) & 0x3f) | 0x80;
106
+ target[at++] = ((value >> 6) & 0x3f) | 0x80;
107
+ target[at++] = (value & 0x3f) | 0x80;
108
+ break;
109
+ }
110
+ read += codeUnitCount;
111
+ }
112
+ return {
113
+ encoded: !HAS_DESTINATION ? target.slice(0, at) : destination,
114
+ read: read,
115
+ written: at,
116
+ };
117
+ }
118
+ const TextEncoderE = (typeof TextEncoder !== "undefined" && TextEncoder) || TextEncoderP;
119
+
120
+ exports.TextEncoder = TextEncoderE;
121
+ exports.TextEncoderP = TextEncoderP;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.js');
4
+ var AbortSignalP = require('./AbortSignalP.js');
5
+
6
+ class AbortControllerP {
7
+ constructor() {
8
+ utils.setState(this, "__AbortController__", new AbortControllerState());
9
+ }
10
+ get signal() { return state(this).signal; }
11
+ abort(reason) { AbortSignalP.AbortSignal_abort(this.signal, true, reason); }
12
+ /** @internal */ toString() { return "[object AbortController]"; }
13
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "AbortController"; }
14
+ /** @internal */ get __MPHTTPX__() { return { chain: ["AbortController"] }; }
15
+ }
16
+ /** @internal */
17
+ class AbortControllerState {
18
+ constructor() {
19
+ this.signal = AbortSignalP.createAbortSignal();
20
+ }
21
+ }
22
+ function state(target) {
23
+ return target.__AbortController__;
24
+ }
25
+ const AbortControllerE = (typeof AbortController !== "undefined" && AbortController) || AbortControllerP;
26
+
27
+ exports.AbortController = AbortControllerE;
28
+ exports.AbortControllerP = AbortControllerP;
@@ -0,0 +1,117 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.js');
4
+ var EventP = require('./EventP.js');
5
+ var EventTargetP = require('./EventTargetP.js');
6
+
7
+ class AbortSignalP extends EventTargetP.EventTargetP {
8
+ static abort(reason) {
9
+ let signal = createAbortSignal();
10
+ AbortSignal_abort(signal, false, reason);
11
+ return signal;
12
+ }
13
+ static any(signals) {
14
+ utils.checkArgsLength(arguments.length, 1, "AbortSignal", "any");
15
+ if (!utils.isSequence(signals)) {
16
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': The provided value cannot be converted to a sequence.");
17
+ }
18
+ let _signals = Array.isArray(signals) ? signals : Array.from(signals);
19
+ _signals.forEach(sig => { if (!EventTargetP.isEventTarget(sig))
20
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': Failed to convert value to 'AbortSignal'."); });
21
+ let signal = createAbortSignal();
22
+ let abortedSignal = (() => { for (let i = 0; i < _signals.length; ++i) {
23
+ let sig = _signals[i];
24
+ if (sig.aborted)
25
+ return sig;
26
+ } })();
27
+ if (abortedSignal) {
28
+ AbortSignal_abort(signal, false, abortedSignal.reason);
29
+ }
30
+ else {
31
+ function abortFn() {
32
+ for (let i = 0; i < _signals.length; ++i) {
33
+ let sig = _signals[i];
34
+ sig.removeEventListener("abort", abortFn);
35
+ }
36
+ AbortSignal_abort(signal, true, this.reason);
37
+ }
38
+ for (let i = 0; i < _signals.length; ++i) {
39
+ let sig = _signals[i];
40
+ sig.addEventListener("abort", abortFn);
41
+ }
42
+ }
43
+ return signal;
44
+ }
45
+ static timeout(milliseconds) {
46
+ utils.checkArgsLength(arguments.length, 1, "AbortSignal", "timeout");
47
+ if (!(milliseconds >= 0)) {
48
+ throw new TypeError("Failed to execute 'timeout' on 'AbortSignal': Value is outside the 'unsigned long long' value range.");
49
+ }
50
+ const signal = createAbortSignal();
51
+ const execTimeout = () => AbortSignal_abort(signal, true, new utils.DOMException("signal timed out", "TimeoutError"));
52
+ setTimeout(execTimeout, milliseconds);
53
+ return signal;
54
+ }
55
+ /** @internal */
56
+ constructor() {
57
+ if (new.target === AbortSignalP) {
58
+ throw new TypeError("Failed to construct 'AbortSignal': Illegal constructor");
59
+ }
60
+ super();
61
+ utils.setState(this, "__AbortSignal__", new AbortSignalState(this));
62
+ }
63
+ get aborted() { return state(this).aborted; }
64
+ get reason() { return state(this).reason; }
65
+ throwIfAborted() {
66
+ if (this.aborted) {
67
+ throw this.reason;
68
+ }
69
+ }
70
+ get onabort() { return state(this).onabort; }
71
+ set onabort(value) { state(this).onabort = value; state(this).attach("abort"); }
72
+ /** @internal */ toString() { return "[object AbortSignal]"; }
73
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "AbortSignal"; }
74
+ /** @internal */ get __MPHTTPX__() { return { chain: ["AbortSignal", "EventTarget"] }; }
75
+ }
76
+ /** @internal */
77
+ class AbortSignalState {
78
+ constructor(target) {
79
+ this.aborted = false;
80
+ this.reason = undefined;
81
+ this.onabort = null;
82
+ this.attach = EventTargetP.attachFn(target, getHandlers(target));
83
+ }
84
+ }
85
+ function getHandlers(t) {
86
+ return {
87
+ onabort: (ev) => { EventTargetP.executeFn(t, t.onabort, ev); },
88
+ };
89
+ }
90
+ function state(target) {
91
+ return target.__AbortSignal__;
92
+ }
93
+ function createAbortSignal() {
94
+ let signal = Object.create(AbortSignalP.prototype);
95
+ utils.setState(signal, "__EventTarget__", { executors: [] });
96
+ utils.setState(signal, "__AbortSignal__", new AbortSignalState(signal));
97
+ return signal;
98
+ }
99
+ function AbortSignal_abort(signal, notify = true, reason) {
100
+ if (!signal.aborted) {
101
+ let s = state(signal) || {};
102
+ s.aborted = true;
103
+ s.reason = reason !== undefined ? reason : new utils.DOMException("signal is aborted without reason", "AbortError");
104
+ if (notify) {
105
+ let event = new EventP.EventP("abort");
106
+ event.__Event__.target = signal;
107
+ EventP.Event_setTrusted(event, true);
108
+ EventTargetP.EventTarget_dispatchEvent(signal, event);
109
+ }
110
+ }
111
+ }
112
+ const AbortSignalE = (typeof AbortSignal !== "undefined" && AbortSignal) || AbortSignalP;
113
+
114
+ exports.AbortSignal = AbortSignalE;
115
+ exports.AbortSignalP = AbortSignalP;
116
+ exports.AbortSignal_abort = AbortSignal_abort;
117
+ exports.createAbortSignal = createAbortSignal;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var EventP = require('./EventP.js');
4
+ var utils = require('../utils.js');
5
+
6
+ class CustomEventP extends EventP.EventP {
7
+ constructor(type, eventInitDict) {
8
+ var _a;
9
+ utils.checkArgsLength(arguments.length, 1, "CustomEvent");
10
+ super(type, eventInitDict);
11
+ utils.setState(this, "__CustomEvent__", new CustomEventState());
12
+ state(this).detail = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.detail) !== null && _a !== void 0 ? _a : null;
13
+ }
14
+ get detail() { return state(this).detail; }
15
+ initCustomEvent(type, bubbles, cancelable, detail) {
16
+ utils.checkArgsLength(arguments.length, 1, "CustomEvent", "initCustomEvent");
17
+ if (this.__Event__.eventDispatched)
18
+ return;
19
+ this.initEvent(type, bubbles, cancelable);
20
+ state(this).detail = detail !== null && detail !== void 0 ? detail : null;
21
+ }
22
+ /** @internal */ toString() { return "[object CustomEvent]"; }
23
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "CustomEvent"; }
24
+ /** @internal */ get __MPHTTPX__() { return { chain: ["CustomEvent", "Event"] }; }
25
+ }
26
+ /** @internal */
27
+ class CustomEventState {
28
+ }
29
+ function state(target) {
30
+ return target.__CustomEvent__;
31
+ }
32
+ const CustomEventE = (typeof CustomEvent !== "undefined" && CustomEvent) || CustomEventP;
33
+
34
+ exports.CustomEvent = CustomEventE;
35
+ exports.CustomEventP = CustomEventP;
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.js');
4
+
5
+ class EventP {
6
+ static get NONE() { return 0; }
7
+ static get CAPTURING_PHASE() { return 1; }
8
+ static get AT_TARGET() { return 2; }
9
+ static get BUBBLING_PHASE() { return 3; }
10
+ constructor(type, eventInitDict) {
11
+ utils.checkArgsLength(arguments.length, 1, "Event");
12
+ utils.setState(this, "__Event__", new EventState());
13
+ const s = state(this);
14
+ s.type = "" + type;
15
+ s.bubbles = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.bubbles);
16
+ s.cancelable = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.cancelable);
17
+ s.composed = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.composed);
18
+ Object.defineProperty(this, "isTrusted", {
19
+ enumerable: true,
20
+ get: function isTrusted() { return s.isTrusted === "YES"; },
21
+ });
22
+ }
23
+ get NONE() { return 0; }
24
+ get CAPTURING_PHASE() { return 1; }
25
+ get AT_TARGET() { return 2; }
26
+ get BUBBLING_PHASE() { return 3; }
27
+ get bubbles() { return state(this).bubbles; }
28
+ get cancelBubble() { return state(this).cancelBubble; }
29
+ set cancelBubble(value) { if (value) {
30
+ state(this).cancelBubble = true;
31
+ } }
32
+ get cancelable() { return state(this).cancelable; }
33
+ get composed() { return state(this).composed; }
34
+ get currentTarget() { return state(this).currentTarget; }
35
+ get defaultPrevented() { return state(this).defaultPrevented; }
36
+ get eventPhase() { return state(this).eventPhase; }
37
+ get returnValue() { return state(this).returnValue; }
38
+ set returnValue(value) { if (!value) {
39
+ this.preventDefault();
40
+ } }
41
+ get srcElement() { return state(this).target; }
42
+ get target() { return state(this).target; }
43
+ get timeStamp() { return state(this).timeStamp; }
44
+ get type() { return state(this).type; }
45
+ composedPath() {
46
+ let path = this.target ? [this.target] : [];
47
+ if (this.currentTarget && this.currentTarget !== this.target)
48
+ path.push(this.currentTarget);
49
+ return path;
50
+ }
51
+ initEvent(type, bubbles, cancelable) {
52
+ utils.checkArgsLength(arguments.length, 1, utils.className(this), "initEvent");
53
+ let s = state(this);
54
+ if (s.eventDispatched)
55
+ return;
56
+ s.type = "" + type;
57
+ s.bubbles = !!bubbles;
58
+ s.cancelable = !!cancelable;
59
+ }
60
+ preventDefault() {
61
+ let s = state(this);
62
+ if (s.passive)
63
+ return console.warn(`Ignoring 'preventDefault()' call on event of type '${this.type}' from a listener registered as 'passive'.`);
64
+ if (this.cancelable) {
65
+ s.defaultPrevented = true;
66
+ s.returnValue = false;
67
+ }
68
+ }
69
+ stopImmediatePropagation() {
70
+ state(this).immediatePropagationStopped = true;
71
+ this.cancelBubble = true;
72
+ }
73
+ stopPropagation() {
74
+ this.cancelBubble = true;
75
+ }
76
+ /** @internal */ toString() { return "[object Event]"; }
77
+ /** @internal */ get [utils._Symbol.toStringTag]() { return "Event"; }
78
+ /** @internal */ get __MPHTTPX__() { return { chain: ["Event"] }; }
79
+ }
80
+ /** @internal */
81
+ class EventState {
82
+ constructor() {
83
+ this.bubbles = false;
84
+ this.cancelBubble = false;
85
+ this.cancelable = false;
86
+ this.composed = false;
87
+ this.currentTarget = null;
88
+ this.defaultPrevented = false;
89
+ this.eventPhase = 0 /* NONE */;
90
+ this.returnValue = true;
91
+ this.target = null;
92
+ this.timeStamp = (new Date()).getTime() - timeStamp;
93
+ this.type = "";
94
+ this.passive = false;
95
+ this.eventDispatched = false;
96
+ this.immediatePropagationStopped = false;
97
+ Object.defineProperty(this, "isTrusted", createTrustedPropertyDescriptor());
98
+ }
99
+ }
100
+ function state(target) {
101
+ return target.__Event__;
102
+ }
103
+ const timeStamp = (new Date()).getTime();
104
+ function createTrustedPropertyDescriptor() {
105
+ let name = createTrustedPropertyDescriptor.name;
106
+ let idx = name.length;
107
+ let isTrusted = "NO";
108
+ return {
109
+ configurable: false,
110
+ enumerable: true,
111
+ get: function () { return isTrusted; },
112
+ set: function (value) { if (name === value.slice(0, idx)) {
113
+ isTrusted = value.slice(idx + 1);
114
+ } },
115
+ };
116
+ }
117
+ function Event_setTrusted(event, isTrusted) {
118
+ let s = state(event) || {};
119
+ s.isTrusted = `${createTrustedPropertyDescriptor.name}:${isTrusted ? "YES" : "NO"}`;
120
+ }
121
+ const EventE = (typeof Event !== "undefined" && Event) || EventP;
122
+
123
+ exports.Event = EventE;
124
+ exports.EventP = EventP;
125
+ exports.Event_setTrusted = Event_setTrusted;