mphttpx 2.0.0 → 2.1.0
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.
- package/dist/cjs/encoding/TextDecoderP.js +182 -0
- package/dist/cjs/{TextEncoderP.js → encoding/TextEncoderP.js} +10 -13
- package/dist/cjs/event-system/AbortControllerP.js +30 -0
- package/dist/cjs/{AbortSignalP.js → event-system/AbortSignalP.js} +45 -50
- package/dist/cjs/{CloseEventP.js → event-system/CloseEventP.js} +11 -12
- package/dist/cjs/event-system/CustomEventP.js +34 -0
- package/dist/cjs/event-system/EventP.js +125 -0
- package/dist/cjs/event-system/EventTargetP.js +151 -0
- package/dist/cjs/{MessageEventP.js → event-system/MessageEventP.js} +18 -21
- package/dist/cjs/event-system/ProgressEventP.js +41 -0
- package/dist/cjs/fetch-api/BodyImpl.js +167 -0
- package/dist/cjs/fetch-api/HeadersP.js +154 -0
- package/dist/cjs/fetch-api/RequestP.js +161 -0
- package/dist/cjs/{ResponseP.js → fetch-api/ResponseP.js} +47 -55
- package/dist/cjs/{fetchP.js → fetch-api/fetchP.js} +55 -38
- package/dist/cjs/file-system/BlobP.js +118 -0
- package/dist/cjs/file-system/FileP.js +34 -0
- package/dist/cjs/file-system/FileReaderP.js +176 -0
- package/dist/cjs/helpers/Method.js +13 -0
- package/dist/cjs/helpers/Payload.js +96 -0
- package/dist/cjs/helpers/decode.js +11 -0
- package/dist/cjs/helpers/emitEvent.js +14 -0
- package/dist/cjs/helpers/emitProgressEvent.js +19 -0
- package/dist/cjs/helpers/encode.js +11 -0
- package/dist/cjs/helpers/handlers.js +21 -0
- package/dist/cjs/helpers/isArrayBuffer.js +11 -0
- package/dist/cjs/helpers/isBlob.js +20 -0
- package/dist/cjs/helpers/isEventTarget.js +18 -0
- package/dist/cjs/helpers/isSequence.js +13 -0
- package/dist/cjs/helpers/isURLSearchParams.js +10 -0
- package/dist/cjs/helpers/statusTextMap.js +68 -0
- package/dist/cjs/helpers/toBase64.js +28 -0
- package/dist/cjs/index.js +24 -42
- package/dist/cjs/mini-program/WebSocketImpl.js +197 -0
- package/dist/cjs/mini-program/XMLHttpRequestImpl.js +539 -0
- package/dist/cjs/mini-program/connectSocket.js +28 -0
- package/dist/{esm → cjs/mini-program}/platform.js +4 -6
- package/dist/cjs/mini-program/request.js +36 -0
- package/dist/cjs/network/FormDataP.js +160 -0
- package/dist/cjs/{URLSearchParamsP.js → network/URLSearchParamsP.js} +50 -54
- package/dist/cjs/network/XMLHttpRequestEventTargetP.js +66 -0
- package/dist/cjs/network/XMLHttpRequestUploadP.js +28 -0
- package/dist/cjs/utils.js +56 -0
- package/dist/esm/encoding/TextDecoderP.js +179 -0
- package/dist/esm/{TextEncoderP.js → encoding/TextEncoderP.js} +10 -13
- package/dist/esm/event-system/AbortControllerP.js +27 -0
- package/dist/esm/event-system/AbortSignalP.js +116 -0
- package/dist/esm/{CloseEventP.js → event-system/CloseEventP.js} +12 -12
- package/dist/esm/event-system/CustomEventP.js +31 -0
- package/dist/esm/event-system/EventP.js +120 -0
- package/dist/esm/event-system/EventTargetP.js +146 -0
- package/dist/esm/{MessageEventP.js → event-system/MessageEventP.js} +20 -22
- package/dist/esm/event-system/ProgressEventP.js +39 -0
- package/dist/esm/fetch-api/BodyImpl.js +164 -0
- package/dist/esm/fetch-api/HeadersP.js +148 -0
- package/dist/esm/fetch-api/RequestP.js +158 -0
- package/dist/esm/{ResponseP.js → fetch-api/ResponseP.js} +49 -56
- package/dist/esm/fetch-api/fetchP.js +128 -0
- package/dist/esm/file-system/BlobP.js +115 -0
- package/dist/esm/file-system/FileP.js +31 -0
- package/dist/esm/file-system/FileReaderP.js +173 -0
- package/dist/esm/helpers/Method.js +11 -0
- package/dist/esm/helpers/Payload.js +94 -0
- package/dist/esm/helpers/decode.js +9 -0
- package/dist/esm/helpers/emitEvent.js +12 -0
- package/dist/esm/helpers/emitProgressEvent.js +17 -0
- package/dist/esm/helpers/encode.js +9 -0
- package/dist/esm/helpers/handlers.js +18 -0
- package/dist/esm/helpers/isArrayBuffer.js +9 -0
- package/dist/esm/helpers/isBlob.js +18 -0
- package/dist/esm/helpers/isEventTarget.js +16 -0
- package/dist/esm/helpers/isSequence.js +11 -0
- package/dist/esm/helpers/isURLSearchParams.js +8 -0
- package/dist/esm/helpers/statusTextMap.js +66 -0
- package/dist/esm/helpers/toBase64.js +26 -0
- package/dist/esm/index.js +18 -25
- package/dist/esm/mini-program/WebSocketImpl.js +193 -0
- package/dist/esm/mini-program/XMLHttpRequestImpl.js +535 -0
- package/dist/esm/mini-program/connectSocket.js +26 -0
- package/dist/{cjs → esm/mini-program}/platform.js +3 -9
- package/dist/esm/mini-program/request.js +34 -0
- package/dist/esm/network/FormDataP.js +157 -0
- package/dist/esm/{URLSearchParamsP.js → network/URLSearchParamsP.js} +50 -54
- package/dist/esm/network/XMLHttpRequestEventTargetP.js +63 -0
- package/dist/esm/network/XMLHttpRequestUploadP.js +25 -0
- package/dist/esm/utils.js +48 -0
- package/dist/index.d.ts +109 -114
- package/package.json +51 -50
- package/dist/cjs/AbortControllerP.js +0 -31
- package/dist/cjs/BlobP.js +0 -131
- package/dist/cjs/BodyImpl.js +0 -142
- package/dist/cjs/CustomEventP.js +0 -35
- package/dist/cjs/EventP.js +0 -173
- package/dist/cjs/EventTargetP.js +0 -176
- package/dist/cjs/FileP.js +0 -36
- package/dist/cjs/FileReaderP.js +0 -151
- package/dist/cjs/FormDataP.js +0 -250
- package/dist/cjs/HeadersP.js +0 -184
- package/dist/cjs/ProgressEventP.js +0 -69
- package/dist/cjs/RequestP.js +0 -150
- package/dist/cjs/TextDecoderP.js +0 -186
- package/dist/cjs/WebSocketP.js +0 -238
- package/dist/cjs/XMLHttpRequestP.js +0 -563
- package/dist/cjs/convertor.js +0 -83
- package/dist/cjs/isPolyfill.js +0 -56
- package/dist/esm/AbortControllerP.js +0 -28
- package/dist/esm/AbortSignalP.js +0 -121
- package/dist/esm/BlobP.js +0 -124
- package/dist/esm/BodyImpl.js +0 -137
- package/dist/esm/CustomEventP.js +0 -32
- package/dist/esm/EventP.js +0 -165
- package/dist/esm/EventTargetP.js +0 -168
- package/dist/esm/FileP.js +0 -33
- package/dist/esm/FileReaderP.js +0 -148
- package/dist/esm/FormDataP.js +0 -245
- package/dist/esm/HeadersP.js +0 -177
- package/dist/esm/ProgressEventP.js +0 -65
- package/dist/esm/RequestP.js +0 -146
- package/dist/esm/TextDecoderP.js +0 -183
- package/dist/esm/WebSocketP.js +0 -234
- package/dist/esm/XMLHttpRequestP.js +0 -559
- package/dist/esm/convertor.js +0 -80
- package/dist/esm/fetchP.js +0 -111
- package/dist/esm/isPolyfill.js +0 -48
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('../utils.js');
|
|
4
|
+
var isArrayBuffer = require('../helpers/isArrayBuffer.js');
|
|
5
|
+
|
|
6
|
+
class TextDecoderP {
|
|
7
|
+
constructor(label = "utf-8", options) {
|
|
8
|
+
if (["utf-8", "utf8", "unicode-1-1-utf-8"].indexOf(("" + label).toLowerCase()) === -1) {
|
|
9
|
+
throw new RangeError(`Failed to construct 'TextDecoder': encoding ('${label}') not implemented.`);
|
|
10
|
+
}
|
|
11
|
+
utils.setState(this, "__TextDecoder__", new TextDecoderState());
|
|
12
|
+
state(this).fatal = !!(options === null || options === void 0 ? void 0 : options.fatal);
|
|
13
|
+
state(this).ignoreBOM = !!(options === null || options === void 0 ? void 0 : options.ignoreBOM);
|
|
14
|
+
}
|
|
15
|
+
get encoding() { return "utf-8"; }
|
|
16
|
+
get fatal() { return state(this).fatal; }
|
|
17
|
+
get ignoreBOM() { return state(this).ignoreBOM; }
|
|
18
|
+
decode(input, options) {
|
|
19
|
+
return decodeText(state(this), input, options);
|
|
20
|
+
}
|
|
21
|
+
/** @internal */ toString() { return "[object TextDecoder]"; }
|
|
22
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "TextDecoder"; }
|
|
23
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["TextDecoder"] }; }
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
class TextDecoderState {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.fatal = false;
|
|
29
|
+
this.ignoreBOM = false;
|
|
30
|
+
this.initial = 0;
|
|
31
|
+
this.partial = [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function state(target) {
|
|
35
|
+
return target.__TextDecoder__;
|
|
36
|
+
}
|
|
37
|
+
function decodeText(settings, input, options) {
|
|
38
|
+
let bytes;
|
|
39
|
+
if (input !== undefined) {
|
|
40
|
+
if (isArrayBuffer.isArrayBuffer(input)) {
|
|
41
|
+
bytes = new Uint8Array(input);
|
|
42
|
+
}
|
|
43
|
+
else if (ArrayBuffer.isView(input)) {
|
|
44
|
+
bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw new TypeError("Input could not be converted to any of: ArrayBufferView, ArrayBuffer.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (settings.partial.length > 0) {
|
|
52
|
+
if (settings.fatal) {
|
|
53
|
+
settings.partial = [];
|
|
54
|
+
throw new TypeError("Incomplete UTF-8 sequence.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return "";
|
|
58
|
+
}
|
|
59
|
+
if (settings.initial < 3) {
|
|
60
|
+
settings.initial += bytes.length;
|
|
61
|
+
if (bytes.length >= 3) {
|
|
62
|
+
if (bytes[0] === 0xef && bytes[1] === 0xbb && bytes[2] === 0xbf) {
|
|
63
|
+
bytes = bytes.subarray(3); // × WeChat 2.5.0
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (settings.partial.length > 0) {
|
|
68
|
+
let merged = new Uint8Array(settings.partial.length + bytes.length);
|
|
69
|
+
merged.set(settings.partial, 0);
|
|
70
|
+
merged.set(bytes, settings.partial.length);
|
|
71
|
+
bytes = merged;
|
|
72
|
+
settings.partial = [];
|
|
73
|
+
}
|
|
74
|
+
let end = bytes.length;
|
|
75
|
+
let res = [];
|
|
76
|
+
if (!!(options === null || options === void 0 ? void 0 : options.stream) && bytes.length > 0) {
|
|
77
|
+
let i = bytes.length;
|
|
78
|
+
while (i > 0 && i > bytes.length - 4) {
|
|
79
|
+
let byte = bytes[i - 1];
|
|
80
|
+
if ((byte & 0b11000000) !== 0b10000000) {
|
|
81
|
+
let len = getBytesPerSequence(byte);
|
|
82
|
+
if (len > bytes.length - (i - 1)) {
|
|
83
|
+
end = i - 1;
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
i--;
|
|
88
|
+
}
|
|
89
|
+
settings.partial = Array.from(bytes.slice(end)); // save tail // × WeChat 2.5.0
|
|
90
|
+
bytes = bytes.slice(0, end); // × WeChat 2.5.0
|
|
91
|
+
}
|
|
92
|
+
let i = 0;
|
|
93
|
+
while (i < end) {
|
|
94
|
+
let codePoint = null;
|
|
95
|
+
let firstByte = bytes[i];
|
|
96
|
+
let bytesPerSequence = getBytesPerSequence(firstByte);
|
|
97
|
+
if (i + bytesPerSequence <= end) {
|
|
98
|
+
let secondByte, thirdByte, fourthByte, tempCodePoint;
|
|
99
|
+
switch (bytesPerSequence) {
|
|
100
|
+
case 1:
|
|
101
|
+
if (firstByte < 0x80) {
|
|
102
|
+
codePoint = firstByte;
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case 2:
|
|
106
|
+
secondByte = bytes[i + 1];
|
|
107
|
+
if ((secondByte & 0xC0) === 0x80) {
|
|
108
|
+
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
|
|
109
|
+
if (tempCodePoint > 0x7F) {
|
|
110
|
+
codePoint = tempCodePoint;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
case 3:
|
|
115
|
+
secondByte = bytes[i + 1];
|
|
116
|
+
thirdByte = bytes[i + 2];
|
|
117
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
|
|
118
|
+
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
|
|
119
|
+
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
|
|
120
|
+
codePoint = tempCodePoint;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
case 4:
|
|
125
|
+
secondByte = bytes[i + 1];
|
|
126
|
+
thirdByte = bytes[i + 2];
|
|
127
|
+
fourthByte = bytes[i + 3];
|
|
128
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
|
|
129
|
+
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
|
|
130
|
+
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
|
|
131
|
+
codePoint = tempCodePoint;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (codePoint === null) {
|
|
138
|
+
if (settings.fatal) {
|
|
139
|
+
settings.partial = [];
|
|
140
|
+
throw new TypeError("Decoding failed.");
|
|
141
|
+
}
|
|
142
|
+
let skip = 1;
|
|
143
|
+
while (i + skip < end && (bytes[i + skip] & 0b11000000) === 0b10000000) {
|
|
144
|
+
skip += 1;
|
|
145
|
+
}
|
|
146
|
+
// we did not generate a valid codePoint so insert a replacement char (U+FFFD)
|
|
147
|
+
res.push(0xFFFD);
|
|
148
|
+
i += skip;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
else if (codePoint > 0xFFFF) {
|
|
152
|
+
// encode to utf16 (surrogate pair dance)
|
|
153
|
+
codePoint -= 0x10000;
|
|
154
|
+
res.push(codePoint >>> 10 & 0x3FF | 0xD800);
|
|
155
|
+
codePoint = 0xDC00 | codePoint & 0x3FF;
|
|
156
|
+
}
|
|
157
|
+
res.push(codePoint);
|
|
158
|
+
i += bytesPerSequence;
|
|
159
|
+
}
|
|
160
|
+
return res.length > 0x4000 ? buildString(res) : concatString(res);
|
|
161
|
+
}
|
|
162
|
+
function getBytesPerSequence(byte) {
|
|
163
|
+
return (byte > 0xEF) ? 4 : (byte > 0xDF) ? 3 : (byte > 0xBF) ? 2 : 1;
|
|
164
|
+
}
|
|
165
|
+
function buildString(val) {
|
|
166
|
+
let arr = [];
|
|
167
|
+
for (let i = 0, len = val.length; i < len; i += 0x1000) {
|
|
168
|
+
arr.push(String.fromCharCode.apply(String, val.slice(i, i + 0x1000)));
|
|
169
|
+
}
|
|
170
|
+
return arr.join("");
|
|
171
|
+
}
|
|
172
|
+
function concatString(val) {
|
|
173
|
+
let str = "";
|
|
174
|
+
for (let i = 0, len = val.length; i < len; i += 0x1000) {
|
|
175
|
+
str += String.fromCharCode.apply(String, val.slice(i, i + 0x1000));
|
|
176
|
+
}
|
|
177
|
+
return str;
|
|
178
|
+
}
|
|
179
|
+
const TextDecoderE = (typeof TextDecoder !== "undefined" && TextDecoder) || TextDecoderP;
|
|
180
|
+
|
|
181
|
+
exports.TextDecoder = TextDecoderE;
|
|
182
|
+
exports.TextDecoderP = TextDecoderP;
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var utils = require('../utils.js');
|
|
4
4
|
|
|
5
5
|
class TextEncoderP {
|
|
6
6
|
get encoding() { return "utf-8"; }
|
|
7
7
|
encode(input = "") {
|
|
8
|
-
|
|
9
|
-
return encodeText(_input).encoded;
|
|
8
|
+
return encodeText("" + input).encoded;
|
|
10
9
|
}
|
|
11
|
-
encodeInto(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
let _source = "" + source;
|
|
15
|
-
if (!(destination instanceof Uint8Array || isPolyfill.isObjectType("Uint8Array", destination))) {
|
|
10
|
+
encodeInto(source, destination) {
|
|
11
|
+
utils.checkArgsLength(arguments.length, 2, "TextEncoder", "encodeInto");
|
|
12
|
+
if (!(destination instanceof Uint8Array || utils.isObjectType("Uint8Array", destination) /* Mini Program */)) {
|
|
16
13
|
throw new TypeError("Failed to execute 'encodeInto' on 'TextEncoder': parameter 2 is not of type 'Uint8Array'.");
|
|
17
14
|
}
|
|
18
|
-
let result = encodeText(
|
|
15
|
+
let result = encodeText("" + source, destination);
|
|
19
16
|
return { read: result.read, written: result.written };
|
|
20
17
|
}
|
|
21
18
|
/** @internal */ toString() { return "[object TextEncoder]"; }
|
|
22
|
-
/** @internal */ get [
|
|
23
|
-
/** @internal */ get
|
|
19
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "TextEncoder"; }
|
|
20
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["TextEncoder"] }; }
|
|
24
21
|
}
|
|
25
22
|
function encodeText(input, destination) {
|
|
26
|
-
const HAS_DESTINATION =
|
|
23
|
+
const HAS_DESTINATION = destination !== undefined;
|
|
27
24
|
let pos = 0;
|
|
28
25
|
let read = 0;
|
|
29
26
|
let len = input.length;
|
|
@@ -116,7 +113,7 @@ function encodeText(input, destination) {
|
|
|
116
113
|
written: at,
|
|
117
114
|
};
|
|
118
115
|
}
|
|
119
|
-
const TextEncoderE =
|
|
116
|
+
const TextEncoderE = (typeof TextEncoder !== "undefined" && TextEncoder) || TextEncoderP;
|
|
120
117
|
|
|
121
118
|
exports.TextEncoder = TextEncoderE;
|
|
122
119
|
exports.TextEncoderP = TextEncoderP;
|
|
@@ -0,0 +1,30 @@
|
|
|
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) {
|
|
12
|
+
AbortSignalP.AbortSignal_abort(this.signal, true, reason);
|
|
13
|
+
}
|
|
14
|
+
/** @internal */ toString() { return "[object AbortController]"; }
|
|
15
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "AbortController"; }
|
|
16
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["AbortController"] }; }
|
|
17
|
+
}
|
|
18
|
+
/** @internal */
|
|
19
|
+
class AbortControllerState {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.signal = AbortSignalP.createAbortSignal();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function state(target) {
|
|
25
|
+
return target.__AbortController__;
|
|
26
|
+
}
|
|
27
|
+
const AbortControllerE = (typeof AbortController !== "undefined" && AbortController) || AbortControllerP;
|
|
28
|
+
|
|
29
|
+
exports.AbortController = AbortControllerE;
|
|
30
|
+
exports.AbortControllerP = AbortControllerP;
|
|
@@ -1,42 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var emitEvent = require('../helpers/emitEvent.js');
|
|
4
|
+
var handlers = require('../helpers/handlers.js');
|
|
5
5
|
var EventTargetP = require('./EventTargetP.js');
|
|
6
|
+
var isSequence = require('../helpers/isSequence.js');
|
|
7
|
+
var isEventTarget = require('../helpers/isEventTarget.js');
|
|
8
|
+
var utils = require('../utils.js');
|
|
6
9
|
|
|
7
|
-
var _a;
|
|
8
|
-
/** @internal */
|
|
9
|
-
const state = Symbol( /* "AbortSignalState" */);
|
|
10
10
|
class AbortSignalP extends EventTargetP.EventTargetP {
|
|
11
11
|
static abort(reason) {
|
|
12
12
|
let signal = createAbortSignal();
|
|
13
|
-
AbortSignal_abort(signal,
|
|
13
|
+
AbortSignal_abort(signal, false, reason);
|
|
14
14
|
return signal;
|
|
15
15
|
}
|
|
16
|
-
static any(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (!(Array.isArray(signals) || (signals && typeof signals === "object" && Symbol.iterator in signals))) {
|
|
16
|
+
static any(signals) {
|
|
17
|
+
utils.checkArgsLength(arguments.length, 1, "AbortSignal", "any");
|
|
18
|
+
if (!isSequence.isSequence(signals)) {
|
|
20
19
|
throw new TypeError("Failed to execute 'any' on 'AbortSignal': The provided value cannot be converted to a sequence.");
|
|
21
20
|
}
|
|
22
21
|
let _signals = Array.isArray(signals) ? signals : Array.from(signals);
|
|
23
22
|
_signals.forEach(sig => {
|
|
24
|
-
if (!
|
|
23
|
+
if (!isEventTarget.isEventTarget(sig)) {
|
|
25
24
|
throw new TypeError("Failed to execute 'any' on 'AbortSignal': Failed to convert value to 'AbortSignal'.");
|
|
26
25
|
}
|
|
27
26
|
});
|
|
28
27
|
let signal = createAbortSignal();
|
|
29
28
|
let abortedSignal = _signals.find(x => x.aborted);
|
|
30
29
|
if (abortedSignal) {
|
|
31
|
-
AbortSignal_abort(signal, abortedSignal.reason
|
|
30
|
+
AbortSignal_abort(signal, false, abortedSignal.reason);
|
|
32
31
|
}
|
|
33
32
|
else {
|
|
34
|
-
function abortFn(
|
|
33
|
+
function abortFn() {
|
|
35
34
|
for (let i = 0; i < _signals.length; ++i) {
|
|
36
35
|
let sig = _signals[i];
|
|
37
36
|
sig.removeEventListener("abort", abortFn);
|
|
38
37
|
}
|
|
39
|
-
AbortSignal_abort(signal,
|
|
38
|
+
AbortSignal_abort(signal, true, this.reason);
|
|
40
39
|
}
|
|
41
40
|
for (let i = 0; i < _signals.length; ++i) {
|
|
42
41
|
let sig = _signals[i];
|
|
@@ -45,16 +44,14 @@ class AbortSignalP extends EventTargetP.EventTargetP {
|
|
|
45
44
|
}
|
|
46
45
|
return signal;
|
|
47
46
|
}
|
|
48
|
-
static timeout(
|
|
49
|
-
|
|
50
|
-
isPolyfill.checkArgsLength(args, 1, "AbortSignal", "timeout");
|
|
47
|
+
static timeout(milliseconds) {
|
|
48
|
+
utils.checkArgsLength(arguments.length, 1, "AbortSignal", "timeout");
|
|
51
49
|
if (!(milliseconds >= 0)) {
|
|
52
50
|
throw new TypeError("Failed to execute 'timeout' on 'AbortSignal': Value is outside the 'unsigned long long' value range.");
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}, milliseconds);
|
|
52
|
+
const signal = createAbortSignal();
|
|
53
|
+
const whenTimeout = () => AbortSignal_abort(signal, true, new utils.DOMExceptionP("signal timed out", "TimeoutError"));
|
|
54
|
+
setTimeout(whenTimeout, milliseconds);
|
|
58
55
|
return signal;
|
|
59
56
|
}
|
|
60
57
|
/** @internal */
|
|
@@ -63,62 +60,60 @@ class AbortSignalP extends EventTargetP.EventTargetP {
|
|
|
63
60
|
throw new TypeError("Failed to construct 'AbortSignal': Illegal constructor");
|
|
64
61
|
}
|
|
65
62
|
super();
|
|
66
|
-
this
|
|
63
|
+
utils.setState(this, "__AbortSignal__", new AbortSignalState(this));
|
|
67
64
|
}
|
|
68
|
-
get aborted() { return this
|
|
69
|
-
get reason() { return this
|
|
65
|
+
get aborted() { return state(this).aborted; }
|
|
66
|
+
get reason() { return state(this).reason; }
|
|
70
67
|
throwIfAborted() {
|
|
71
68
|
if (this.aborted) {
|
|
72
69
|
throw this.reason;
|
|
73
70
|
}
|
|
74
71
|
}
|
|
75
|
-
get onabort() { return this
|
|
76
|
-
set onabort(value) {
|
|
77
|
-
this[state].onabort = value;
|
|
78
|
-
EventTargetP.attachFn(this, "abort", value, this[state][_handlers].onabort);
|
|
79
|
-
}
|
|
72
|
+
get onabort() { return state(this).onabort; }
|
|
73
|
+
set onabort(value) { state(this).onabort = value; state(this).attach("abort"); }
|
|
80
74
|
/** @internal */ toString() { return "[object AbortSignal]"; }
|
|
81
|
-
/** @internal */ get [
|
|
82
|
-
/** @internal */ get
|
|
75
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "AbortSignal"; }
|
|
76
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["AbortSignal", "EventTarget"] }; }
|
|
83
77
|
}
|
|
84
78
|
/** @internal */
|
|
85
|
-
const _handlers = Symbol();
|
|
86
|
-
/** @internal */
|
|
87
79
|
class AbortSignalState {
|
|
88
80
|
constructor(target) {
|
|
89
81
|
this.aborted = false;
|
|
90
82
|
this.reason = undefined;
|
|
91
|
-
this[_a] = getHandlers(this);
|
|
92
83
|
this.onabort = null;
|
|
93
|
-
this.
|
|
84
|
+
this.attach = handlers.attachFn(target, getHandlers(target));
|
|
94
85
|
}
|
|
95
86
|
}
|
|
96
|
-
|
|
87
|
+
function getHandlers(t) {
|
|
88
|
+
return {
|
|
89
|
+
onabort: (ev) => { handlers.executeFn(t, t.onabort, ev); },
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function state(target) {
|
|
93
|
+
return target.__AbortSignal__;
|
|
94
|
+
}
|
|
97
95
|
/** @internal */
|
|
98
|
-
function AbortSignal_abort(signal,
|
|
99
|
-
const s = signal
|
|
100
|
-
|
|
96
|
+
function AbortSignal_abort(signal, notify = true, reason) {
|
|
97
|
+
const s = state(signal);
|
|
98
|
+
const whenAbort = () => {
|
|
101
99
|
s.aborted = true;
|
|
102
|
-
s.reason = reason !== null && reason !== void 0 ? reason : (new
|
|
100
|
+
s.reason = reason !== null && reason !== void 0 ? reason : (new utils.DOMExceptionP("signal is aborted without reason", "AbortError"));
|
|
103
101
|
if (notify) {
|
|
104
|
-
|
|
105
|
-
EventTargetP.EventTarget_fire(signal, evt);
|
|
102
|
+
emitEvent.emitEvent(signal, "abort");
|
|
106
103
|
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
function getHandlers(s) {
|
|
110
|
-
return {
|
|
111
|
-
onabort: (ev) => { EventTargetP.executeFn(s.target, s.onabort, ev); },
|
|
112
104
|
};
|
|
105
|
+
if (!signal.aborted) {
|
|
106
|
+
whenAbort();
|
|
107
|
+
}
|
|
113
108
|
}
|
|
114
109
|
/** @internal */
|
|
115
110
|
function createAbortSignal() {
|
|
116
111
|
let signal = Object.create(AbortSignalP.prototype);
|
|
117
|
-
signal
|
|
118
|
-
signal
|
|
112
|
+
utils.setState(signal, "__EventTarget__", new EventTargetP.EventTargetState());
|
|
113
|
+
utils.setState(signal, "__AbortSignal__", new AbortSignalState(signal));
|
|
119
114
|
return signal;
|
|
120
115
|
}
|
|
121
|
-
const AbortSignalE =
|
|
116
|
+
const AbortSignalE = (typeof AbortSignal !== "undefined" && AbortSignal) || AbortSignalP;
|
|
122
117
|
|
|
123
118
|
exports.AbortSignal = AbortSignalE;
|
|
124
119
|
exports.AbortSignalP = AbortSignalP;
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var EventP = require('./EventP.js');
|
|
4
|
-
var
|
|
4
|
+
var utils = require('../utils.js');
|
|
5
5
|
|
|
6
|
-
/** @internal */
|
|
7
|
-
const state = Symbol( /* "CloseEventState" */);
|
|
8
6
|
class CloseEventP extends EventP.EventP {
|
|
9
7
|
constructor(type, eventInitDict) {
|
|
10
8
|
var _a;
|
|
11
9
|
super(type, eventInitDict);
|
|
12
|
-
this
|
|
13
|
-
const s = this
|
|
10
|
+
utils.setState(this, "__CloseEvent__", new CloseEventState());
|
|
11
|
+
const s = state(this);
|
|
14
12
|
let _code = Number((_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.code) !== null && _a !== void 0 ? _a : 0);
|
|
15
13
|
s.code = isNaN(_code) ? 0 : _code;
|
|
16
14
|
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.reason) !== undefined)
|
|
17
15
|
s.reason = "" + eventInitDict.reason;
|
|
18
16
|
s.wasClean = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.wasClean);
|
|
19
17
|
}
|
|
20
|
-
get code() { return this
|
|
21
|
-
get reason() { return this
|
|
22
|
-
get wasClean() { return this
|
|
18
|
+
get code() { return state(this).code; }
|
|
19
|
+
get reason() { return state(this).reason; }
|
|
20
|
+
get wasClean() { return state(this).wasClean; }
|
|
23
21
|
/** @internal */ toString() { return "[object CloseEvent]"; }
|
|
24
|
-
/** @internal */ get [
|
|
25
|
-
/** @internal */ get
|
|
22
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "CloseEvent"; }
|
|
23
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["CloseEvent", "Event"] }; }
|
|
26
24
|
}
|
|
27
25
|
/** @internal */
|
|
28
26
|
class CloseEventState {
|
|
@@ -32,7 +30,8 @@ class CloseEventState {
|
|
|
32
30
|
this.wasClean = false;
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
|
-
|
|
33
|
+
function state(target) {
|
|
34
|
+
return target.__CloseEvent__;
|
|
35
|
+
}
|
|
36
36
|
|
|
37
|
-
exports.CloseEvent = CloseEventE;
|
|
38
37
|
exports.CloseEventP = CloseEventP;
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
super(type, eventInitDict);
|
|
10
|
+
utils.setState(this, "__CustomEvent__", new CustomEventState());
|
|
11
|
+
state(this).detail = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.detail) !== null && _a !== void 0 ? _a : null;
|
|
12
|
+
}
|
|
13
|
+
get detail() { return state(this).detail; }
|
|
14
|
+
initCustomEvent(type, bubbles, cancelable, detail) {
|
|
15
|
+
utils.checkArgsLength(arguments.length, 1, "CustomEvent", "initCustomEvent");
|
|
16
|
+
if (this.__Event__.eventDispatched)
|
|
17
|
+
return;
|
|
18
|
+
this.initEvent(type, bubbles, cancelable);
|
|
19
|
+
state(this).detail = detail !== null && detail !== void 0 ? detail : null;
|
|
20
|
+
}
|
|
21
|
+
/** @internal */ toString() { return "[object CustomEvent]"; }
|
|
22
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "CustomEvent"; }
|
|
23
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["CustomEvent", "Event"] }; }
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
class CustomEventState {
|
|
27
|
+
}
|
|
28
|
+
function state(target) {
|
|
29
|
+
return target.__CustomEvent__;
|
|
30
|
+
}
|
|
31
|
+
const CustomEventE = (typeof CustomEvent !== "undefined" && CustomEvent) || CustomEventP;
|
|
32
|
+
|
|
33
|
+
exports.CustomEvent = CustomEventE;
|
|
34
|
+
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
|
+
state(this).type = "" + type;
|
|
14
|
+
state(this).bubbles = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.bubbles);
|
|
15
|
+
state(this).cancelable = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.cancelable);
|
|
16
|
+
state(this).composed = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.composed);
|
|
17
|
+
Object.defineProperty(this, "isTrusted", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: (function isTrusted() { return state(this).isTrusted === "YES"; }).bind(this),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
get NONE() { return 0; }
|
|
23
|
+
get CAPTURING_PHASE() { return 1; }
|
|
24
|
+
get AT_TARGET() { return 2; }
|
|
25
|
+
get BUBBLING_PHASE() { return 3; }
|
|
26
|
+
get bubbles() { return state(this).bubbles; }
|
|
27
|
+
get cancelBubble() { return state(this).cancelBubble; }
|
|
28
|
+
set cancelBubble(value) { if (value) {
|
|
29
|
+
state(this).cancelBubble = true;
|
|
30
|
+
} }
|
|
31
|
+
get cancelable() { return state(this).cancelable; }
|
|
32
|
+
get composed() { return state(this).composed; }
|
|
33
|
+
get currentTarget() { return state(this).currentTarget; }
|
|
34
|
+
get defaultPrevented() { return state(this).defaultPrevented; }
|
|
35
|
+
get eventPhase() { return state(this).eventPhase; }
|
|
36
|
+
get returnValue() { return state(this).returnValue; }
|
|
37
|
+
set returnValue(value) { if (!value) {
|
|
38
|
+
this.preventDefault();
|
|
39
|
+
} }
|
|
40
|
+
get srcElement() { return state(this).target; }
|
|
41
|
+
get target() { return state(this).target; }
|
|
42
|
+
get timeStamp() { return state(this).timeStamp; }
|
|
43
|
+
get type() { return state(this).type; }
|
|
44
|
+
composedPath() {
|
|
45
|
+
let path = this.target ? [this.target] : [];
|
|
46
|
+
if (this.currentTarget && this.currentTarget !== this.target)
|
|
47
|
+
path.push(this.currentTarget);
|
|
48
|
+
return path;
|
|
49
|
+
}
|
|
50
|
+
initEvent(type, bubbles, cancelable) {
|
|
51
|
+
utils.checkArgsLength(arguments.length, 1, utils.className(this), "initEvent");
|
|
52
|
+
if (state(this).eventDispatched)
|
|
53
|
+
return;
|
|
54
|
+
state(this).type = "" + type;
|
|
55
|
+
state(this).bubbles = !!bubbles;
|
|
56
|
+
state(this).cancelable = !!cancelable;
|
|
57
|
+
}
|
|
58
|
+
preventDefault() {
|
|
59
|
+
if (state(this).passive) {
|
|
60
|
+
return console.warn(`Ignoring 'preventDefault()' call on event of type '${this.type}' from a listener registered as 'passive'.`);
|
|
61
|
+
}
|
|
62
|
+
if (this.cancelable) {
|
|
63
|
+
state(this).defaultPrevented = true;
|
|
64
|
+
state(this).returnValue = false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
stopImmediatePropagation() {
|
|
68
|
+
state(this).immediatePropagationStopped = true;
|
|
69
|
+
this.cancelBubble = true;
|
|
70
|
+
}
|
|
71
|
+
stopPropagation() {
|
|
72
|
+
this.cancelBubble = true;
|
|
73
|
+
}
|
|
74
|
+
/** @internal */ toString() { return "[object Event]"; }
|
|
75
|
+
/** @internal */ get [utils.SymbolP.toStringTag]() { return "Event"; }
|
|
76
|
+
/** @internal */ get __MPHTTPX__() { return { chain: ["Event"] }; }
|
|
77
|
+
}
|
|
78
|
+
/** @internal */
|
|
79
|
+
class EventState {
|
|
80
|
+
constructor() {
|
|
81
|
+
this.bubbles = false;
|
|
82
|
+
this.cancelBubble = false;
|
|
83
|
+
this.cancelable = false;
|
|
84
|
+
this.composed = false;
|
|
85
|
+
this.currentTarget = null;
|
|
86
|
+
this.defaultPrevented = false;
|
|
87
|
+
this.eventPhase = 0 /* NONE */;
|
|
88
|
+
this.returnValue = true;
|
|
89
|
+
this.target = null;
|
|
90
|
+
this.timeStamp = (new Date()).getTime() - EventState.timeStamp;
|
|
91
|
+
this.type = "";
|
|
92
|
+
this.passive = false;
|
|
93
|
+
this.eventDispatched = false;
|
|
94
|
+
this.immediatePropagationStopped = false;
|
|
95
|
+
Object.defineProperty(this, "isTrusted", createTrustedPropertyDescriptor());
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
EventState.timeStamp = (new Date()).getTime();
|
|
99
|
+
/** @internal */
|
|
100
|
+
function state(target) {
|
|
101
|
+
return target.__Event__;
|
|
102
|
+
}
|
|
103
|
+
function createTrustedPropertyDescriptor() {
|
|
104
|
+
let name = createTrustedPropertyDescriptor.name;
|
|
105
|
+
let idx = name.length;
|
|
106
|
+
let isTrusted = "NO";
|
|
107
|
+
return {
|
|
108
|
+
configurable: false,
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () { return isTrusted; },
|
|
111
|
+
set: function (value) { if (name === value.slice(0, idx)) {
|
|
112
|
+
isTrusted = value.slice(idx + 1);
|
|
113
|
+
} },
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** @internal */
|
|
117
|
+
function Event_setTrusted(event, isTrusted) {
|
|
118
|
+
state(event).isTrusted = `${createTrustedPropertyDescriptor.name}:${isTrusted ? "YES" : "NO"}`;
|
|
119
|
+
}
|
|
120
|
+
const EventE = (typeof Event !== "undefined" && Event) || EventP;
|
|
121
|
+
|
|
122
|
+
exports.Event = EventE;
|
|
123
|
+
exports.EventP = EventP;
|
|
124
|
+
exports.Event_setTrusted = Event_setTrusted;
|
|
125
|
+
exports.state = state;
|