mphttpx 2.3.0 → 2.4.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.
Files changed (96) hide show
  1. package/README.md +69 -953
  2. package/dist/cjs/fetchP.js +22 -0
  3. package/dist/cjs/index.js +197 -55
  4. package/dist/esm/fetchP.js +12 -0
  5. package/dist/esm/index.js +5 -18
  6. package/dist/index.d.ts +8 -394
  7. package/dist/mphttpx.cjs.js +6646 -0
  8. package/dist/mphttpx.cjs.min.js +1 -1
  9. package/dist/mphttpx.esm.js +6595 -0
  10. package/dist/mphttpx.esm.min.js +1 -1
  11. package/package.json +27 -9
  12. package/README.zh-CN.md +0 -983
  13. package/dist/cjs/encoding/TextDecoderP.js +0 -174
  14. package/dist/cjs/encoding/TextEncoderP.js +0 -121
  15. package/dist/cjs/event-system/AbortControllerP.js +0 -28
  16. package/dist/cjs/event-system/AbortSignalP.js +0 -120
  17. package/dist/cjs/event-system/CloseEventP.js +0 -36
  18. package/dist/cjs/event-system/CustomEventP.js +0 -35
  19. package/dist/cjs/event-system/EventP.js +0 -127
  20. package/dist/cjs/event-system/EventTargetP.js +0 -155
  21. package/dist/cjs/event-system/MessageEventP.js +0 -61
  22. package/dist/cjs/event-system/ProgressEventP.js +0 -42
  23. package/dist/cjs/fetch-api/BodyImpl.js +0 -167
  24. package/dist/cjs/fetch-api/HeadersP.js +0 -155
  25. package/dist/cjs/fetch-api/RequestP.js +0 -163
  26. package/dist/cjs/fetch-api/ResponseP.js +0 -93
  27. package/dist/cjs/fetch-api/fetchP.js +0 -125
  28. package/dist/cjs/file-system/BlobP.js +0 -111
  29. package/dist/cjs/file-system/FileP.js +0 -34
  30. package/dist/cjs/file-system/FileReaderP.js +0 -173
  31. package/dist/cjs/helpers/Payload.js +0 -96
  32. package/dist/cjs/helpers/decode.js +0 -11
  33. package/dist/cjs/helpers/emitEvent.js +0 -14
  34. package/dist/cjs/helpers/emitProgressEvent.js +0 -19
  35. package/dist/cjs/helpers/encode.js +0 -11
  36. package/dist/cjs/helpers/handlers.js +0 -23
  37. package/dist/cjs/helpers/isArrayBuffer.js +0 -11
  38. package/dist/cjs/helpers/isBlob.js +0 -20
  39. package/dist/cjs/helpers/isEventTarget.js +0 -18
  40. package/dist/cjs/helpers/isSequence.js +0 -13
  41. package/dist/cjs/helpers/isURLSearchParams.js +0 -10
  42. package/dist/cjs/helpers/normalizeMethod.js +0 -11
  43. package/dist/cjs/helpers/statusTextMap.js +0 -68
  44. package/dist/cjs/helpers/toBase64.js +0 -28
  45. package/dist/cjs/mini-program/WebSocketImpl.js +0 -197
  46. package/dist/cjs/mini-program/XMLHttpRequestImpl.js +0 -493
  47. package/dist/cjs/mini-program/connectSocket.js +0 -28
  48. package/dist/cjs/mini-program/platform.js +0 -29
  49. package/dist/cjs/mini-program/request.js +0 -36
  50. package/dist/cjs/network/FormDataP.js +0 -160
  51. package/dist/cjs/network/URLSearchParamsP.js +0 -226
  52. package/dist/cjs/network/XMLHttpRequestEventTargetP.js +0 -64
  53. package/dist/cjs/network/XMLHttpRequestUploadP.js +0 -28
  54. package/dist/cjs/utils.js +0 -56
  55. package/dist/esm/encoding/TextDecoderP.js +0 -171
  56. package/dist/esm/encoding/TextEncoderP.js +0 -118
  57. package/dist/esm/event-system/AbortControllerP.js +0 -25
  58. package/dist/esm/event-system/AbortSignalP.js +0 -115
  59. package/dist/esm/event-system/CloseEventP.js +0 -34
  60. package/dist/esm/event-system/CustomEventP.js +0 -32
  61. package/dist/esm/event-system/EventP.js +0 -122
  62. package/dist/esm/event-system/EventTargetP.js +0 -150
  63. package/dist/esm/event-system/MessageEventP.js +0 -59
  64. package/dist/esm/event-system/ProgressEventP.js +0 -40
  65. package/dist/esm/fetch-api/BodyImpl.js +0 -164
  66. package/dist/esm/fetch-api/HeadersP.js +0 -149
  67. package/dist/esm/fetch-api/RequestP.js +0 -160
  68. package/dist/esm/fetch-api/ResponseP.js +0 -90
  69. package/dist/esm/fetch-api/fetchP.js +0 -121
  70. package/dist/esm/file-system/BlobP.js +0 -108
  71. package/dist/esm/file-system/FileP.js +0 -31
  72. package/dist/esm/file-system/FileReaderP.js +0 -170
  73. package/dist/esm/helpers/Payload.js +0 -94
  74. package/dist/esm/helpers/decode.js +0 -9
  75. package/dist/esm/helpers/emitEvent.js +0 -12
  76. package/dist/esm/helpers/emitProgressEvent.js +0 -17
  77. package/dist/esm/helpers/encode.js +0 -9
  78. package/dist/esm/helpers/handlers.js +0 -20
  79. package/dist/esm/helpers/isArrayBuffer.js +0 -9
  80. package/dist/esm/helpers/isBlob.js +0 -18
  81. package/dist/esm/helpers/isEventTarget.js +0 -16
  82. package/dist/esm/helpers/isSequence.js +0 -11
  83. package/dist/esm/helpers/isURLSearchParams.js +0 -8
  84. package/dist/esm/helpers/normalizeMethod.js +0 -9
  85. package/dist/esm/helpers/statusTextMap.js +0 -66
  86. package/dist/esm/helpers/toBase64.js +0 -26
  87. package/dist/esm/mini-program/WebSocketImpl.js +0 -193
  88. package/dist/esm/mini-program/XMLHttpRequestImpl.js +0 -489
  89. package/dist/esm/mini-program/connectSocket.js +0 -26
  90. package/dist/esm/mini-program/platform.js +0 -27
  91. package/dist/esm/mini-program/request.js +0 -34
  92. package/dist/esm/network/FormDataP.js +0 -157
  93. package/dist/esm/network/URLSearchParamsP.js +0 -223
  94. package/dist/esm/network/XMLHttpRequestEventTargetP.js +0 -61
  95. package/dist/esm/network/XMLHttpRequestUploadP.js +0 -25
  96. package/dist/esm/utils.js +0 -48
@@ -1,197 +0,0 @@
1
- 'use strict';
2
-
3
- var BlobP = require('../file-system/BlobP.js');
4
- var Payload = require('../helpers/Payload.js');
5
- var HeadersP = require('../fetch-api/HeadersP.js');
6
- var CloseEventP = require('../event-system/CloseEventP.js');
7
- var MessageEventP = require('../event-system/MessageEventP.js');
8
- var emitEvent = require('../helpers/emitEvent.js');
9
- var handlers = require('../helpers/handlers.js');
10
- var EventP = require('../event-system/EventP.js');
11
- var EventTargetP = require('../event-system/EventTargetP.js');
12
- var isSequence = require('../helpers/isSequence.js');
13
- var isArrayBuffer = require('../helpers/isArrayBuffer.js');
14
- var connectSocket = require('./connectSocket.js');
15
- var utils = require('../utils.js');
16
-
17
- const mp = { connectSocket: connectSocket.getConnectSocket() };
18
- function setConnectSocket(connectSocket) { mp.connectSocket = connectSocket; }
19
- class WebSocketImpl extends EventTargetP.EventTargetP {
20
- static get CONNECTING() { return 0; }
21
- static get OPEN() { return 1; }
22
- static get CLOSING() { return 2; }
23
- static get CLOSED() { return 3; }
24
- constructor(url, protocols) {
25
- utils.checkArgsLength(arguments.length, 1, "WebSocket");
26
- super();
27
- const targetURL = "" + url;
28
- const socketTask = mp.connectSocket({
29
- url: targetURL,
30
- protocols: protocols !== undefined
31
- ? isSequence.isSequence(protocols)
32
- ? Array.isArray(protocols) ? protocols : Array.from(protocols)
33
- : ["" + protocols]
34
- : [],
35
- multiple: true, // Alipay Mini Program
36
- fail(err) { console.error(err); },
37
- });
38
- utils.setState(this, "__WebSocket__", new WebSocketState(this, socketTask));
39
- state(this).url = targetURL;
40
- if (socketTask && typeof socketTask === "object") {
41
- onOpen(this);
42
- onClose(this);
43
- onError(this);
44
- onMessage(this);
45
- }
46
- else {
47
- throw new Error(`connectSocket can't establish a connection to the server at ${"" + url}.`);
48
- }
49
- }
50
- get CONNECTING() { return 0; }
51
- get OPEN() { return 1; }
52
- get CLOSING() { return 2; }
53
- get CLOSED() { return 3; }
54
- get binaryType() { return state(this).binaryType; }
55
- set binaryType(value) { if (value === "blob" || value === "arraybuffer") {
56
- state(this).binaryType = value;
57
- } }
58
- get bufferedAmount() { return state(this).bufferedAmount; }
59
- get extensions() { return ""; }
60
- get protocol() { return state(this).protocol; }
61
- get readyState() { return state(this).readyState; }
62
- get url() { return state(this).url; }
63
- close(code, reason) {
64
- let s = state(this);
65
- if (this.readyState === 2 /* CLOSING */ || this.readyState === 3 /* CLOSED */)
66
- return;
67
- s.readyState = 2 /* CLOSING */;
68
- s.socketTask.close({
69
- code: code,
70
- reason: reason,
71
- fail(err) { console.error(err); },
72
- complete: () => { s.readyState = 3 /* CLOSED */; },
73
- });
74
- }
75
- send(data) {
76
- utils.checkArgsLength(arguments.length, 1, "WebSocket", "send");
77
- if (this.readyState === 0 /* CONNECTING */) {
78
- throw new utils.DOMExceptionP("Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.", "InvalidStateError");
79
- }
80
- if (this.readyState === 2 /* CLOSING */ || this.readyState === 3 /* CLOSED */) {
81
- return console.error("WebSocket is already in CLOSING or CLOSED state.");
82
- }
83
- const transfer = (function (data) {
84
- if (this.readyState !== 1 /* OPEN */)
85
- return;
86
- state(this).socketTask.send({ data, fail(err) { console.error(err); } });
87
- }).bind(this);
88
- let payload = new Payload.Payload(data !== null && data !== void 0 ? data : "" + data);
89
- payload.promise.then(transfer);
90
- }
91
- get onclose() { return state(this).onclose; }
92
- set onclose(value) { state(this).onclose = value; state(this).attach("close"); }
93
- get onerror() { return state(this).onerror; }
94
- set onerror(value) { state(this).onerror = value; state(this).attach("error"); }
95
- get onmessage() { return state(this).onmessage; }
96
- set onmessage(value) { state(this).onmessage = value; state(this).attach("message"); }
97
- get onopen() { return state(this).onopen; }
98
- set onopen(value) { state(this).onopen = value; state(this).attach("open"); }
99
- /** @internal */ toString() { return "[object WebSocket]"; }
100
- /** @internal */ get [utils.SymbolP.toStringTag]() { return "WebSocket"; }
101
- /** @internal */ get __MPHTTPX__() { return { chain: ["WebSocket", "EventTarget"] }; }
102
- }
103
- /** @internal */
104
- class WebSocketState {
105
- constructor(target, socketTask) {
106
- this.binaryType = "blob";
107
- this.bufferedAmount = 0;
108
- this.protocol = "";
109
- this.readyState = 0;
110
- this.url = "";
111
- this.error = null;
112
- this.onclose = null;
113
- this.onerror = null;
114
- this.onmessage = null;
115
- this.onopen = null;
116
- this.socketTask = socketTask;
117
- this.attach = handlers.attachFn(target, getHandlers(target));
118
- }
119
- }
120
- function getHandlers(t) {
121
- return {
122
- onclose: (ev) => { handlers.executeFn(t, t.onclose, ev); },
123
- onerror: (ev) => { handlers.executeFn(t, t.onerror, ev); },
124
- onmessage: (ev) => { handlers.executeFn(t, t.onmessage, ev); },
125
- onopen: (ev) => { handlers.executeFn(t, t.onopen, ev); },
126
- };
127
- }
128
- function state(target) {
129
- return target.__WebSocket__;
130
- }
131
- function onOpen(socket) {
132
- let s = state(socket);
133
- s.socketTask.onOpen(res => {
134
- if ("header" in res && res.header && typeof res.header === "object") {
135
- let headers = new HeadersP.HeadersP(res.header);
136
- s.protocol = headers.get("Sec-WebSocket-Protocol") || "";
137
- }
138
- s.readyState = 1 /* OPEN */;
139
- emitEvent.emitEvent(socket, "open");
140
- });
141
- }
142
- function onClose(socket) {
143
- let s = state(socket);
144
- s.socketTask.onClose(res => {
145
- s.readyState = 3 /* CLOSED */;
146
- let event = new CloseEventP.CloseEventP("close", {
147
- wasClean: !s.error,
148
- code: res.code,
149
- reason: res.reason,
150
- });
151
- EventP.Event_setTrusted(event, true);
152
- EventTargetP.EventTarget_fire(socket, event);
153
- });
154
- }
155
- function onError(socket) {
156
- let s = state(socket);
157
- s.socketTask.onError(res => {
158
- console.error(res);
159
- s.error = res;
160
- s.readyState = 3 /* CLOSED */;
161
- emitEvent.emitEvent(socket, "error");
162
- });
163
- }
164
- function onMessage(socket) {
165
- state(socket).socketTask.onMessage(res => {
166
- let data = res.data;
167
- let _data;
168
- // Alipay Mini Program
169
- if (data && typeof data === "object" && "data" in data) {
170
- _data = data.data;
171
- if ("isBuffer" in data && data.isBuffer && typeof _data === "string") {
172
- // @ts-ignore
173
- try {
174
- _data = my.base64ToArrayBuffer(_data);
175
- }
176
- catch (e) { }
177
- }
178
- }
179
- else {
180
- _data = data;
181
- }
182
- if (isArrayBuffer.isArrayBuffer(_data) && socket.binaryType === "blob") {
183
- _data = new BlobP.BlobP([_data]);
184
- }
185
- let event = new MessageEventP.MessageEventP("message", {
186
- data: _data,
187
- origin: socket.url,
188
- });
189
- EventP.Event_setTrusted(event, true);
190
- EventTargetP.EventTarget_fire(socket, event);
191
- });
192
- }
193
- const WebSocketE = (typeof WebSocket !== "undefined" && WebSocket) || WebSocketImpl;
194
-
195
- exports.WebSocket = WebSocketE;
196
- exports.WebSocketImpl = WebSocketImpl;
197
- exports.setConnectSocket = setConnectSocket;
@@ -1,493 +0,0 @@
1
- 'use strict';
2
-
3
- var BlobP = require('../file-system/BlobP.js');
4
- var HeadersP = require('../fetch-api/HeadersP.js');
5
- var encode = require('../helpers/encode.js');
6
- var decode = require('../helpers/decode.js');
7
- var Payload = require('../helpers/Payload.js');
8
- var isArrayBuffer = require('../helpers/isArrayBuffer.js');
9
- var statusTextMap = require('../helpers/statusTextMap.js');
10
- var toBase64 = require('../helpers/toBase64.js');
11
- var handlers = require('../helpers/handlers.js');
12
- var normalizeMethod = require('../helpers/normalizeMethod.js');
13
- var emitEvent = require('../helpers/emitEvent.js');
14
- var emitProgressEvent = require('../helpers/emitProgressEvent.js');
15
- var request = require('./request.js');
16
- var utils = require('../utils.js');
17
- var XMLHttpRequestUploadP = require('../network/XMLHttpRequestUploadP.js');
18
- var XMLHttpRequestEventTargetP = require('../network/XMLHttpRequestEventTargetP.js');
19
-
20
- const mp = { request: request.getRequest() };
21
- function setRequest(request) { mp.request = request; }
22
- class XMLHttpRequestImpl extends XMLHttpRequestEventTargetP.XMLHttpRequestEventTargetP {
23
- static get UNSENT() { return 0; }
24
- static get OPENED() { return 1; }
25
- static get HEADERS_RECEIVED() { return 2; }
26
- static get LOADING() { return 3; }
27
- static get DONE() { return 4; }
28
- constructor() {
29
- super();
30
- utils.setState(this, "__XMLHttpRequest__", new XMLHttpRequestState(this));
31
- }
32
- get UNSENT() { return 0; }
33
- get OPENED() { return 1; }
34
- get HEADERS_RECEIVED() { return 2; }
35
- get LOADING() { return 3; }
36
- get DONE() { return 4; }
37
- get readyState() { return state(this).readyState; }
38
- get response() { return state(this).response; }
39
- get responseText() { return state(this).responseText; }
40
- get responseType() { return state(this).responseType; }
41
- set responseType(value) {
42
- if (state(this).pos > 9 /* XHRCycle.HEADERS_RECEIVED */)
43
- throw new utils.DOMExceptionP("Failed to set the 'responseType' property on 'XMLHttpRequest': The response type cannot be set if the object's state is LOADING or DONE.", "InvalidStateError");
44
- if (responseTypes.indexOf(value) > -1)
45
- state(this).responseType = value;
46
- }
47
- get responseURL() { return state(this).responseURL; }
48
- get responseXML() { return null; }
49
- get status() { return state(this).status; }
50
- get statusText() {
51
- if (state(this).pos < 9 /* XHRCycle.HEADERS_RECEIVED */)
52
- return "";
53
- return state(this).statusText || statusTextMap.statusTextMap[this.status] || "unknown";
54
- }
55
- get timeout() { return state(this).timeout; }
56
- set timeout(value) { state(this).timeout = value >= 0 ? value : 0; }
57
- get upload() {
58
- if (!state(this).upload)
59
- state(this).upload = XMLHttpRequestUploadP.createXMLHttpRequestUpload();
60
- return state(this).upload;
61
- }
62
- get withCredentials() { return state(this).withCredentials; }
63
- set withCredentials(value) {
64
- if (state(this).pos < 2 /* XHRCycle.LOADSTART */)
65
- state(this).withCredentials = !!value;
66
- else
67
- throw new TypeError("Failed to set the 'withCredentials' property on 'XMLHttpRequest': The value may only be set if the object's state is UNSENT or OPENED.");
68
- }
69
- abort() {
70
- const s = state(this);
71
- const requestTask = s.requestTask;
72
- switch (s.pos) {
73
- case 1 /* XHRCycle.OPENED */:
74
- s.requestHeaders = new HeadersP.HeadersP();
75
- break;
76
- case 2 /* XHRCycle.LOADSTART */:
77
- case 3 /* XHRCycle.UPLOAD_LOADSTART */:
78
- execUploadAbort(this);
79
- execUnset(this);
80
- break;
81
- case 4 /* XHRCycle.UPLOAD_LOAD */:
82
- case 8 /* XHRCycle.UPLOAD_LOADEND */:
83
- case 9 /* XHRCycle.HEADERS_RECEIVED */:
84
- case 10 /* XHRCycle.LOADING */:
85
- execAbort(this);
86
- case 11 /* XHRCycle.DONE */:
87
- execUnset(this);
88
- break;
89
- }
90
- clearRequest(s);
91
- safeAbort(requestTask);
92
- }
93
- getAllResponseHeaders() {
94
- const headers = state(this).responseHeaders;
95
- if (!headers)
96
- return "";
97
- let result = [];
98
- headers.forEach((value, name) => { result.push(`${name}: ${value}\r\n`); });
99
- return result.join("");
100
- }
101
- getResponseHeader(name) {
102
- utils.checkArgsLength(arguments.length, 1, "XMLHttpRequest", "getResponseHeader");
103
- if (!state(this).responseHeaders)
104
- return null;
105
- return state(this).responseHeaders.get(name);
106
- }
107
- open(method, url, async = true, username = null, password = null) {
108
- utils.checkArgsLength(arguments.length, 2, "XMLHttpRequest", "open");
109
- if (!async) {
110
- console.warn("Synchronous XMLHttpRequest is not supported because of its detrimental effects to the end user's experience.");
111
- }
112
- let _method = normalizeMethod.normalizeMethod(method);
113
- let _url = "" + url;
114
- let _username = "" + (username !== null && username !== void 0 ? username : "");
115
- let _password = "" + (password !== null && password !== void 0 ? password : "");
116
- const s = state(this);
117
- clearRequest(s);
118
- s.method = _method;
119
- s.requestURL = _url;
120
- s.requestHeaders = new HeadersP.HeadersP();
121
- if (_username.length > 0 || _password.length > 0) {
122
- let auth = `Basic ${toBase64.Uint8Array_toBase64(encode.encode(_username + ":" + _password))}`;
123
- this.setRequestHeader("Authorization", auth);
124
- }
125
- execOpened(this);
126
- }
127
- overrideMimeType(mime) {
128
- utils.checkArgsLength(arguments.length, 1, "XMLHttpRequest", "overrideMimeType");
129
- if (state(this).pos === 1 /* XHRCycle.OPENED */) {
130
- console.error(`TypeError: Failed to execute 'overrideMimeType' on 'XMLHttpRequest': mimeType ('${mime}') not implemented.`);
131
- }
132
- }
133
- send(body) {
134
- const s = state(this);
135
- const requestId = s.requestId;
136
- if (s.pos !== 1 /* XHRCycle.OPENED */) {
137
- throw new utils.DOMExceptionP("Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.", "InvalidStateError");
138
- }
139
- const options = {
140
- url: s.requestURL,
141
- method: s.method,
142
- header: Headers_toDict(s.requestHeaders),
143
- dataType: this.responseType === "json" ? "json" : normalizeDataType(this.responseType),
144
- responseType: normalizeDataType(this.responseType),
145
- withCredentials: this.withCredentials,
146
- success: requestSuccess.bind(this, requestId),
147
- fail: requestFail.bind(this, requestId),
148
- };
149
- const payload = (s.method !== "GET" && s.method !== "HEAD" && body !== null && body !== undefined) && new Payload.Payload(body);
150
- if (payload && payload.type && !s.requestHeaders.has("Content-Type")) {
151
- options.header["Content-Type"] = payload.type;
152
- }
153
- const request = (function (data) {
154
- if (requestId !== s.requestId)
155
- return;
156
- if (s.pos !== 2 /* XHRCycle.LOADSTART */ && s.pos !== 8 /* XHRCycle.UPLOAD_LOADEND */)
157
- return;
158
- options.data = data !== "" ? data : undefined;
159
- options.headers = options.header; // Alipay Mini Program
160
- s.requestTask = mp.request(options);
161
- }).bind(this);
162
- checkRequestTimeout(this);
163
- const task = execLoadstart(this, payload || undefined);
164
- if (!task)
165
- request();
166
- else
167
- task.then(data => { if (data !== undefined)
168
- request(data); });
169
- }
170
- setRequestHeader(name, value) {
171
- utils.checkArgsLength(arguments.length, 2, "XMLHttpRequest", "setRequestHeader");
172
- if (state(this).pos !== 1 /* XHRCycle.OPENED */) {
173
- throw new utils.DOMExceptionP("Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.", "InvalidStateError");
174
- }
175
- let _name = "" + name;
176
- let _value = "" + value;
177
- try {
178
- state(this).requestHeaders.append(_name, _value);
179
- }
180
- catch (e) {
181
- throw new SyntaxError(`Failed to execute 'setRequestHeader' on 'XMLHttpRequest': '${_name}' is not a valid HTTP header field name.`);
182
- }
183
- }
184
- get onreadystatechange() { return state(this).onreadystatechange; }
185
- set onreadystatechange(value) { state(this).onreadystatechange = value; state(this).attach("readystatechange"); }
186
- /** @internal */ toString() { return "[object XMLHttpRequest]"; }
187
- /** @internal */ get [utils.SymbolP.toStringTag]() { return "XMLHttpRequest"; }
188
- /** @internal */ get __MPHTTPX__() { return { chain: ["XMLHttpRequest", "XMLHttpRequestEventTarget", "EventTarget"] }; }
189
- }
190
- class XMLHttpRequestState {
191
- constructor(target) {
192
- this.pos = 0 /* XHRCycle.UNSET */;
193
- this.readyState = 0 /* UNSENT */;
194
- this.response = "";
195
- this.responseText = "";
196
- this.responseType = "";
197
- this.responseURL = "";
198
- this.status = 0;
199
- this.statusText = "";
200
- this.timeout = 0;
201
- this.withCredentials = false;
202
- this.method = "GET";
203
- this.requestURL = "";
204
- this.requestHeaders = null;
205
- this.responseHeaders = null;
206
- this.timeoutId = 0;
207
- this.requestId = 0;
208
- this.requestTask = null;
209
- this.onreadystatechange = null;
210
- this.attach = handlers.attachFn(target, getHandlers(target));
211
- }
212
- }
213
- function getHandlers(t) {
214
- return {
215
- onreadystatechange: (ev) => { handlers.executeFn(t, t.onreadystatechange, ev); },
216
- };
217
- }
218
- function state(target) {
219
- return target.__XMLHttpRequest__;
220
- }
221
- function Headers_toDict(headers) {
222
- let dict = {};
223
- headers.forEach((value, name) => { dict[name] = value; });
224
- return dict;
225
- }
226
- const responseTypes = ["", "arraybuffer", "blob", "document", "json", "text"];
227
- function normalizeDataType(responseType) {
228
- return (responseType === "blob" || responseType === "arraybuffer") ? "arraybuffer" : "text";
229
- }
230
- function clearRequest(state) {
231
- state.requestTask = null;
232
- clearRequestTimeout(state);
233
- state.response = "";
234
- state.responseText = "";
235
- state.responseURL = "";
236
- state.status = 0;
237
- state.statusText = "";
238
- state.requestHeaders = null;
239
- state.responseHeaders = null;
240
- }
241
- function clearRequestTimeout(state) {
242
- if (state.timeoutId) {
243
- clearTimeout(state.timeoutId);
244
- state.timeoutId = 0;
245
- }
246
- }
247
- function checkRequestTimeout(xhr) {
248
- if (!xhr.timeout)
249
- return;
250
- const s = state(xhr);
251
- const whenTimeout = () => {
252
- switch (s.pos) {
253
- case 2 /* XHRCycle.LOADSTART */:
254
- case 3 /* XHRCycle.UPLOAD_LOADSTART */:
255
- execUploadTimeout(xhr);
256
- break;
257
- case 8 /* XHRCycle.UPLOAD_LOADEND */:
258
- execTimeout(xhr);
259
- break;
260
- }
261
- };
262
- s.timeoutId = setTimeout(() => { let task = s.requestTask; whenTimeout(); safeAbort(task); }, xhr.timeout);
263
- }
264
- function requestSuccess(requestId, res) {
265
- if (requestId !== state(this).requestId)
266
- return;
267
- execHeadersReceived(this, res);
268
- }
269
- function requestFail(requestId, err) {
270
- // Alipay Mini Program
271
- if (("header" in err && "statusCode" in err) || ("headers" in err && "status" in err)) {
272
- return requestSuccess.call(this, requestId, {
273
- statusCode: "statusCode" in err ? err.statusCode : err.status || 0,
274
- header: "header" in err ? err.header : err.headers || {},
275
- data: "data" in err ? err.data || "" : "",
276
- });
277
- }
278
- if (requestId !== state(this).requestId)
279
- return;
280
- execError(this, err);
281
- }
282
- function setReadyStateAndNotify(xhr, value) {
283
- if (xhr.readyState !== value) {
284
- state(xhr).readyState = value;
285
- emitEvent.emitEvent(xhr, "readystatechange");
286
- }
287
- }
288
- function getResponse(type, data) {
289
- let temp = (typeof data === "string" || isArrayBuffer.isArrayBuffer(data))
290
- ? data
291
- : JSON.stringify(data);
292
- switch (type) {
293
- case "":
294
- case "text":
295
- return typeof temp === "string" ? temp : decode.decode(temp);
296
- case "arraybuffer":
297
- return isArrayBuffer.isArrayBuffer(temp) ? temp : encode.encode(temp).buffer;
298
- case "json":
299
- return typeof data === "string"
300
- ? JSON.parse(data)
301
- : isArrayBuffer.isArrayBuffer(data)
302
- ? JSON.parse(decode.decode(data))
303
- : data;
304
- case "blob":
305
- return new BlobP.BlobP([temp]);
306
- default:
307
- return temp;
308
- }
309
- }
310
- // Alipay Mini Program
311
- function safeAbort(task) {
312
- if (task && typeof task === "object") {
313
- if ("abort" in task && typeof task.abort === "function")
314
- task.abort();
315
- }
316
- }
317
- function execUnset(xhr) {
318
- state(xhr).pos = 0 /* XHRCycle.UNSET */;
319
- state(xhr).readyState = 0 /* UNSENT */;
320
- }
321
- function execOpened(xhr) {
322
- state(xhr).pos = 1 /* XHRCycle.OPENED */;
323
- state(xhr).requestId += 1;
324
- setReadyStateAndNotify(xhr, 1 /* OPENED */);
325
- }
326
- function execLoadstart(xhr, payload) {
327
- state(xhr).pos = 2 /* XHRCycle.LOADSTART */;
328
- emitProgressEvent.emitProgressEvent(xhr, "loadstart");
329
- return payload && execUploadLoadstart(xhr, payload);
330
- }
331
- function execUploadLoadstart(xhr, payload) {
332
- let s = state(xhr);
333
- let requestId = s.requestId;
334
- if (s.pos !== 2 /* XHRCycle.LOADSTART */)
335
- return;
336
- s.pos = 3 /* XHRCycle.UPLOAD_LOADSTART */;
337
- if (s.upload)
338
- emitProgressEvent.emitProgressEvent(xhr.upload, "loadstart", 0, payload.size);
339
- return payload.promise
340
- .then(r => { if (requestId === s.requestId) {
341
- return execUploadLoad(xhr, payload, r);
342
- } })
343
- .catch(e => { if (requestId === s.requestId) {
344
- execUploadError(xhr);
345
- console.error(e);
346
- } });
347
- }
348
- function execUploadLoad(xhr, payload, data) {
349
- let s = state(xhr);
350
- if (s.pos !== 3 /* XHRCycle.UPLOAD_LOADSTART */)
351
- return;
352
- s.pos = 4 /* XHRCycle.UPLOAD_LOAD */;
353
- if (s.upload && payload.size > 0)
354
- emitProgressEvent.emitProgressEvent(xhr.upload, "load", payload.size, payload.size);
355
- return execUploadLoadend(xhr, "load", { payload, data });
356
- }
357
- function execUploadAbort(xhr) {
358
- state(xhr).pos = 5 /* XHRCycle.UPLOAD_ABORT */;
359
- setReadyStateAndNotify(xhr, 4 /* DONE */);
360
- if (state(xhr).upload)
361
- emitProgressEvent.emitProgressEvent(xhr.upload, "abort");
362
- execUploadLoadend(xhr, "abort");
363
- }
364
- function execUploadError(xhr) {
365
- let s = state(xhr);
366
- if (s.pos !== 3 /* XHRCycle.UPLOAD_LOADSTART */)
367
- return;
368
- s.pos = 6 /* XHRCycle.UPLOAD_ERROR */;
369
- setReadyStateAndNotify(xhr, 4 /* DONE */);
370
- if (s.upload)
371
- emitProgressEvent.emitProgressEvent(xhr.upload, "error");
372
- execUploadLoadend(xhr, "error");
373
- }
374
- function execUploadTimeout(xhr) {
375
- state(xhr).pos = 7 /* XHRCycle.UPLOAD_TIMEOUT */;
376
- setReadyStateAndNotify(xhr, 4 /* DONE */);
377
- if (state(xhr).upload)
378
- emitProgressEvent.emitProgressEvent(xhr.upload, "timeout");
379
- execUploadLoadend(xhr, "timeout");
380
- }
381
- function execUploadLoadend(xhr, type, ctx) {
382
- let s = state(xhr);
383
- if ((type === "load" && s.pos === 4 /* XHRCycle.UPLOAD_LOAD */) || type !== "load")
384
- s.pos = 8 /* XHRCycle.UPLOAD_LOADEND */;
385
- if (s.upload) {
386
- let l = ctx ? ctx.payload.size : 0;
387
- emitProgressEvent.emitProgressEvent(xhr.upload, "loadend", l, l);
388
- }
389
- switch (type) {
390
- case "load": return ctx && ctx.data;
391
- case "abort":
392
- execAbort(xhr);
393
- break;
394
- case "error":
395
- execError(xhr);
396
- break;
397
- case "timeout":
398
- execTimeout(xhr);
399
- break;
400
- }
401
- }
402
- function execHeadersReceived(xhr, res) {
403
- let s = state(xhr);
404
- if (s.pos !== 2 /* XHRCycle.LOADSTART */ && s.pos !== 8 /* XHRCycle.UPLOAD_LOADEND */)
405
- return;
406
- s.pos = 9 /* XHRCycle.HEADERS_RECEIVED */;
407
- s.responseURL = s.requestURL;
408
- s.status = "statusCode" in res ? res.statusCode : "status" in res ? res.status : 200;
409
- s.responseHeaders = new HeadersP.HeadersP(("header" in res ? res.header : "headers" in res ? res.headers : {}));
410
- setReadyStateAndNotify(xhr, 2 /* HEADERS_RECEIVED */);
411
- execLoading(xhr, res);
412
- }
413
- function execLoading(xhr, res) {
414
- if (state(xhr).pos !== 9 /* XHRCycle.HEADERS_RECEIVED */)
415
- return;
416
- state(xhr).pos = 10 /* XHRCycle.LOADING */;
417
- setReadyStateAndNotify(xhr, 3 /* LOADING */);
418
- execDone(xhr, res);
419
- }
420
- function execDone(xhr, res) {
421
- let s = state(xhr);
422
- if (s.pos !== 10 /* XHRCycle.LOADING */)
423
- return;
424
- s.pos = 11 /* XHRCycle.DONE */;
425
- const setResponse = () => {
426
- var _a;
427
- s.response = getResponse(xhr.responseType, (_a = res.data) !== null && _a !== void 0 ? _a : "");
428
- if (!xhr.responseType || xhr.responseType === "text")
429
- s.responseText = xhr.response;
430
- setReadyStateAndNotify(xhr, 4 /* DONE */);
431
- execLoad(xhr);
432
- };
433
- try {
434
- setResponse();
435
- }
436
- catch (e) {
437
- execError(xhr);
438
- console.error(e);
439
- }
440
- }
441
- function execLoad(xhr) {
442
- let s = state(xhr);
443
- if (s.pos !== 11 /* XHRCycle.DONE */)
444
- return;
445
- s.pos = 12 /* XHRCycle.LOAD */;
446
- let lstr = s.responseHeaders.get("Content-Length");
447
- let contentLength = lstr ? (parseInt(lstr) || 0) : 0;
448
- emitProgressEvent.emitProgressEvent(xhr, "load", contentLength, contentLength);
449
- execLoadend(xhr, contentLength);
450
- }
451
- function execAbort(xhr) {
452
- state(xhr).pos = 13 /* XHRCycle.ABORT */;
453
- setReadyStateAndNotify(xhr, 4 /* DONE */);
454
- emitProgressEvent.emitProgressEvent(xhr, "abort");
455
- execLoadend(xhr);
456
- }
457
- function execError(xhr, err) {
458
- let s = state(xhr);
459
- switch (s.pos) {
460
- case 2 /* XHRCycle.LOADSTART */:
461
- case 8 /* XHRCycle.UPLOAD_LOADEND */:
462
- case 11 /* XHRCycle.DONE */:
463
- break;
464
- default:
465
- return;
466
- }
467
- s.pos = 14 /* XHRCycle.ERROR */;
468
- if (err) {
469
- s.status = 0;
470
- s.statusText = "errMsg" in err ? err.errMsg : "errorMessage" in err ? err.errorMessage : "";
471
- }
472
- setReadyStateAndNotify(xhr, 4 /* DONE */);
473
- emitProgressEvent.emitProgressEvent(xhr, "error");
474
- execLoadend(xhr);
475
- }
476
- function execTimeout(xhr) {
477
- state(xhr).pos = 15 /* XHRCycle.TIMEOUT */;
478
- setReadyStateAndNotify(xhr, 4 /* DONE */);
479
- emitProgressEvent.emitProgressEvent(xhr, "timeout");
480
- execLoadend(xhr);
481
- }
482
- function execLoadend(xhr, contentLength = 0) {
483
- let s = state(xhr);
484
- s.pos = 16 /* XHRCycle.LOADEND */;
485
- s.requestTask = null;
486
- clearRequestTimeout(s);
487
- emitProgressEvent.emitProgressEvent(xhr, "loadend", contentLength, contentLength);
488
- }
489
- const XMLHttpRequestE = (typeof XMLHttpRequest !== "undefined" && XMLHttpRequest) || XMLHttpRequestImpl;
490
-
491
- exports.XMLHttpRequest = XMLHttpRequestE;
492
- exports.XMLHttpRequestImpl = XMLHttpRequestImpl;
493
- exports.setRequest = setRequest;