mphttpx 2.2.1 → 2.3.1

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 (95) hide show
  1. package/README.md +994 -994
  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 -0
  9. package/dist/mphttpx.esm.js +6595 -0
  10. package/dist/mphttpx.esm.min.js +1 -0
  11. package/package.json +28 -9
  12. package/dist/cjs/encoding/TextDecoderP.js +0 -174
  13. package/dist/cjs/encoding/TextEncoderP.js +0 -121
  14. package/dist/cjs/event-system/AbortControllerP.js +0 -28
  15. package/dist/cjs/event-system/AbortSignalP.js +0 -120
  16. package/dist/cjs/event-system/CloseEventP.js +0 -36
  17. package/dist/cjs/event-system/CustomEventP.js +0 -35
  18. package/dist/cjs/event-system/EventP.js +0 -127
  19. package/dist/cjs/event-system/EventTargetP.js +0 -155
  20. package/dist/cjs/event-system/MessageEventP.js +0 -61
  21. package/dist/cjs/event-system/ProgressEventP.js +0 -42
  22. package/dist/cjs/fetch-api/BodyImpl.js +0 -167
  23. package/dist/cjs/fetch-api/HeadersP.js +0 -155
  24. package/dist/cjs/fetch-api/RequestP.js +0 -163
  25. package/dist/cjs/fetch-api/ResponseP.js +0 -93
  26. package/dist/cjs/fetch-api/fetchP.js +0 -118
  27. package/dist/cjs/file-system/BlobP.js +0 -111
  28. package/dist/cjs/file-system/FileP.js +0 -34
  29. package/dist/cjs/file-system/FileReaderP.js +0 -173
  30. package/dist/cjs/helpers/Payload.js +0 -96
  31. package/dist/cjs/helpers/decode.js +0 -11
  32. package/dist/cjs/helpers/emitEvent.js +0 -14
  33. package/dist/cjs/helpers/emitProgressEvent.js +0 -19
  34. package/dist/cjs/helpers/encode.js +0 -11
  35. package/dist/cjs/helpers/handlers.js +0 -23
  36. package/dist/cjs/helpers/isArrayBuffer.js +0 -11
  37. package/dist/cjs/helpers/isBlob.js +0 -20
  38. package/dist/cjs/helpers/isEventTarget.js +0 -18
  39. package/dist/cjs/helpers/isSequence.js +0 -13
  40. package/dist/cjs/helpers/isURLSearchParams.js +0 -10
  41. package/dist/cjs/helpers/normalizeMethod.js +0 -11
  42. package/dist/cjs/helpers/statusTextMap.js +0 -68
  43. package/dist/cjs/helpers/toBase64.js +0 -28
  44. package/dist/cjs/mini-program/WebSocketImpl.js +0 -197
  45. package/dist/cjs/mini-program/XMLHttpRequestImpl.js +0 -493
  46. package/dist/cjs/mini-program/connectSocket.js +0 -28
  47. package/dist/cjs/mini-program/platform.js +0 -29
  48. package/dist/cjs/mini-program/request.js +0 -36
  49. package/dist/cjs/network/FormDataP.js +0 -160
  50. package/dist/cjs/network/URLSearchParamsP.js +0 -226
  51. package/dist/cjs/network/XMLHttpRequestEventTargetP.js +0 -64
  52. package/dist/cjs/network/XMLHttpRequestUploadP.js +0 -28
  53. package/dist/cjs/utils.js +0 -56
  54. package/dist/esm/encoding/TextDecoderP.js +0 -171
  55. package/dist/esm/encoding/TextEncoderP.js +0 -118
  56. package/dist/esm/event-system/AbortControllerP.js +0 -25
  57. package/dist/esm/event-system/AbortSignalP.js +0 -115
  58. package/dist/esm/event-system/CloseEventP.js +0 -34
  59. package/dist/esm/event-system/CustomEventP.js +0 -32
  60. package/dist/esm/event-system/EventP.js +0 -122
  61. package/dist/esm/event-system/EventTargetP.js +0 -150
  62. package/dist/esm/event-system/MessageEventP.js +0 -59
  63. package/dist/esm/event-system/ProgressEventP.js +0 -40
  64. package/dist/esm/fetch-api/BodyImpl.js +0 -164
  65. package/dist/esm/fetch-api/HeadersP.js +0 -149
  66. package/dist/esm/fetch-api/RequestP.js +0 -160
  67. package/dist/esm/fetch-api/ResponseP.js +0 -90
  68. package/dist/esm/fetch-api/fetchP.js +0 -114
  69. package/dist/esm/file-system/BlobP.js +0 -108
  70. package/dist/esm/file-system/FileP.js +0 -31
  71. package/dist/esm/file-system/FileReaderP.js +0 -170
  72. package/dist/esm/helpers/Payload.js +0 -94
  73. package/dist/esm/helpers/decode.js +0 -9
  74. package/dist/esm/helpers/emitEvent.js +0 -12
  75. package/dist/esm/helpers/emitProgressEvent.js +0 -17
  76. package/dist/esm/helpers/encode.js +0 -9
  77. package/dist/esm/helpers/handlers.js +0 -20
  78. package/dist/esm/helpers/isArrayBuffer.js +0 -9
  79. package/dist/esm/helpers/isBlob.js +0 -18
  80. package/dist/esm/helpers/isEventTarget.js +0 -16
  81. package/dist/esm/helpers/isSequence.js +0 -11
  82. package/dist/esm/helpers/isURLSearchParams.js +0 -8
  83. package/dist/esm/helpers/normalizeMethod.js +0 -9
  84. package/dist/esm/helpers/statusTextMap.js +0 -66
  85. package/dist/esm/helpers/toBase64.js +0 -26
  86. package/dist/esm/mini-program/WebSocketImpl.js +0 -193
  87. package/dist/esm/mini-program/XMLHttpRequestImpl.js +0 -489
  88. package/dist/esm/mini-program/connectSocket.js +0 -26
  89. package/dist/esm/mini-program/platform.js +0 -27
  90. package/dist/esm/mini-program/request.js +0 -34
  91. package/dist/esm/network/FormDataP.js +0 -157
  92. package/dist/esm/network/URLSearchParamsP.js +0 -223
  93. package/dist/esm/network/XMLHttpRequestEventTargetP.js +0 -61
  94. package/dist/esm/network/XMLHttpRequestUploadP.js +0 -25
  95. package/dist/esm/utils.js +0 -48
@@ -1,118 +0,0 @@
1
- 'use strict';
2
-
3
- var RequestP = require('./RequestP.js');
4
- var ResponseP = require('./ResponseP.js');
5
- var utils = require('../utils.js');
6
- var XMLHttpRequestImpl = require('../mini-program/XMLHttpRequestImpl.js');
7
- var HeadersP = require('./HeadersP.js');
8
-
9
- const mp = { XMLHttpRequest: XMLHttpRequestImpl.XMLHttpRequest };
10
- function setXMLHttpRequest(XHR) { mp.XMLHttpRequest = XHR; }
11
- function fetchP(input, init) {
12
- utils.checkArgsLength(arguments.length, 1, "Window", "fetch");
13
- if (new.target === fetchP) {
14
- throw new TypeError("fetch is not a constructor");
15
- }
16
- return new Promise((resolve, reject) => {
17
- const request = new RequestP.RequestP(input, init);
18
- const signal = request.__Request__.signal;
19
- if (signal && signal.aborted) {
20
- return reject(signal.reason);
21
- }
22
- let xhr = new mp.XMLHttpRequest();
23
- let aborted = false;
24
- let payload = request.__Body__.payload;
25
- xhr.onload = () => {
26
- let options = {
27
- headers: parseHeaders(xhr.getAllResponseHeaders() || ""),
28
- status: xhr.status,
29
- statusText: xhr.statusText,
30
- };
31
- // This check if specifically for when a user fetches a file locally from the file system
32
- // Only if the status is out of a normal range
33
- if (request.url.indexOf("file://") === 0 && (xhr.status < 200 || xhr.status > 599)) {
34
- options.status = 200;
35
- }
36
- setTimeout(() => {
37
- let response = new ResponseP.ResponseP("response" in xhr ? xhr.response : xhr.responseText, options);
38
- response.__Response__.url = "responseURL" in xhr ? xhr.responseURL : (options.headers.get("X-Request-URL") || "");
39
- resolve(response);
40
- });
41
- };
42
- xhr.onerror = () => { setTimeout(() => { reject(new TypeError("Failed to fetch")); }); };
43
- xhr.ontimeout = () => { setTimeout(() => { reject(new utils.DOMExceptionP("request:fail timeout", "TimeoutError")); }); };
44
- xhr.onabort = () => { setTimeout(() => { reject(new utils.DOMExceptionP("The user aborted a request.", "AbortError")); }); };
45
- xhr.open(request.method, request.url, true);
46
- if (request.credentials === "include") {
47
- xhr.withCredentials = true;
48
- }
49
- else if (request.credentials === "omit") {
50
- xhr.withCredentials = false;
51
- }
52
- if ("responseType" in xhr) {
53
- xhr.responseType = "arraybuffer";
54
- }
55
- if (init && typeof init === "object" && init.headers && typeof init.headers === "object" && !HeadersP.isHeaders(init.headers)) {
56
- let headers = init.headers;
57
- let names = [];
58
- Object.getOwnPropertyNames(headers).forEach(name => {
59
- names.push(HeadersP.normalizeName(name));
60
- xhr.setRequestHeader(name, HeadersP.normalizeValue(headers[name]));
61
- });
62
- request.headers.forEach((value, name) => {
63
- if (names.indexOf(name) === -1) {
64
- xhr.setRequestHeader(name, value);
65
- }
66
- });
67
- }
68
- else {
69
- request.headers.forEach((value, name) => {
70
- xhr.setRequestHeader(name, value);
71
- });
72
- }
73
- if (signal) {
74
- const abortFn = () => { aborted = true; xhr.abort(); removeFn(); };
75
- const removeFn = () => { signal.removeEventListener("abort", abortFn); };
76
- signal.addEventListener("abort", abortFn);
77
- xhr.onreadystatechange = () => { if (xhr.readyState === 4)
78
- removeFn(); };
79
- }
80
- Promise.resolve(payload ? payload.promise : undefined)
81
- .then(body => {
82
- if (!aborted)
83
- xhr.send(body !== "" ? body : undefined);
84
- else
85
- reject(new utils.DOMExceptionP("The user aborted a request.", "AbortError"));
86
- })
87
- .catch(e => {
88
- console.error(e);
89
- reject(new TypeError("Failed to fetch"));
90
- });
91
- });
92
- }
93
- function parseHeaders(rawHeaders) {
94
- let headers = new HeadersP.HeadersP();
95
- let preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " ");
96
- preProcessedHeaders
97
- .split("\r")
98
- .map(header => header.indexOf("\n") === 0 ? header.substring(1, header.length) : header)
99
- .forEach(line => {
100
- let parts = line.split(":");
101
- let name = parts.shift().trim();
102
- if (name) {
103
- let value = parts.join(":").trim();
104
- try {
105
- headers.append(name, value);
106
- }
107
- catch (e) {
108
- console.warn(`SyntaxError: Response.headers: '${name}' is not a valid HTTP header field name.`);
109
- }
110
- }
111
- });
112
- return headers;
113
- }
114
- const fetchE = (typeof fetch !== "undefined" && fetch) || fetchP;
115
-
116
- exports.fetch = fetchE;
117
- exports.fetchP = fetchP;
118
- exports.setXMLHttpRequest = setXMLHttpRequest;
@@ -1,111 +0,0 @@
1
- 'use strict';
2
-
3
- var encode = require('../helpers/encode.js');
4
- var decode = require('../helpers/decode.js');
5
- var utils = require('../utils.js');
6
- var isBlob = require('../helpers/isBlob.js');
7
- var isSequence = require('../helpers/isSequence.js');
8
- var isArrayBuffer = require('../helpers/isArrayBuffer.js');
9
-
10
- class BlobP {
11
- constructor(blobParts = [], options) {
12
- if (!isSequence.isSequence(blobParts)) {
13
- throw new TypeError(`Failed to construct 'Blob/File': The provided value cannot be converted to a sequence.`);
14
- }
15
- let _blobParts = Array.isArray(blobParts) ? blobParts : Array.from(blobParts);
16
- let tasks = [];
17
- let size = 0;
18
- for (let i = 0; i < _blobParts.length; ++i) {
19
- let chunk = _blobParts[i];
20
- if (isBlob.isBlob(chunk)) {
21
- size += chunk.size;
22
- tasks.push(chunk.arrayBuffer().then(r => new Uint8Array(r)));
23
- }
24
- else {
25
- let bytes = (isArrayBuffer.isArrayBuffer(chunk) || ArrayBuffer.isView(chunk))
26
- ? BufferSource_toUint8Array(chunk)
27
- : encode.encode(chunk);
28
- size += bytes.length;
29
- tasks.push(Promise.resolve(bytes));
30
- }
31
- }
32
- utils.setState(this, "__Blob__", new BlobState(Promise.all(tasks).then(chunks => concat(chunks))));
33
- state(this).size = size;
34
- state(this).type = normalizeType(options === null || options === void 0 ? void 0 : options.type);
35
- }
36
- get size() { return state(this).size; }
37
- get type() { return state(this).type; }
38
- arrayBuffer() {
39
- return state(this).promise.then(r => clone(r.buffer).buffer);
40
- }
41
- bytes() {
42
- return state(this).promise.then(r => clone(r.buffer));
43
- }
44
- slice(start, end, contentType) {
45
- let _start = start !== null && start !== void 0 ? start : 0, _end = end !== null && end !== void 0 ? end : this.size;
46
- let blob = Object.create(BlobP.prototype);
47
- utils.setState(blob, "__Blob__", new BlobState(state(this).promise.then(r => clone(r.slice(_start, _end)))));
48
- state(blob).size = calcSlicedSize(this.size, _start, _end);
49
- state(blob).type = normalizeType(contentType);
50
- return blob;
51
- }
52
- stream() {
53
- throw new TypeError(`Failed to execute 'stream' on '${utils.className(this)}': method not implemented.`);
54
- }
55
- text() {
56
- return state(this).promise.then(r => decode.decode(r));
57
- }
58
- /** @internal */ toString() { return "[object Blob]"; }
59
- /** @internal */ get [utils.SymbolP.toStringTag]() { return "Blob"; }
60
- /** @internal */ get __MPHTTPX__() { return { chain: ["Blob"] }; }
61
- }
62
- class BlobState {
63
- constructor(promise) {
64
- this.size = 0;
65
- this.type = "";
66
- this.promise = promise;
67
- }
68
- }
69
- function state(target) {
70
- return target.__Blob__;
71
- }
72
- function BufferSource_toUint8Array(buf) {
73
- return isArrayBuffer.isArrayBuffer(buf)
74
- ? new Uint8Array(buf)
75
- : new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
76
- }
77
- function normalizeType(type) {
78
- let rawType = "" + (type !== undefined ? type : "");
79
- return /[^\u0020-\u007E]/.test(rawType) ? "" : rawType.toLowerCase();
80
- }
81
- function clone(buf) {
82
- let sourceArray = BufferSource_toUint8Array(buf);
83
- let cloneArray = new Uint8Array(new ArrayBuffer(sourceArray.byteLength));
84
- cloneArray.set(sourceArray);
85
- return cloneArray;
86
- }
87
- function concat(chunks) {
88
- let totalByteLength = chunks.reduce((acc, cur) => acc + cur.byteLength, 0);
89
- let result = new Uint8Array(totalByteLength);
90
- chunks.reduce((offset, chunk) => { result.set(chunk, offset); return offset + chunk.byteLength; }, 0);
91
- return result;
92
- }
93
- function calcSlicedSize(size, start, end) {
94
- const normalizeNumer = (n) => {
95
- let num = Number(n);
96
- if (isNaN(num))
97
- num = 0;
98
- if (num >= 0) {
99
- num = Math.min(num, size);
100
- }
101
- else {
102
- num = Math.max(0, num + size);
103
- }
104
- return num;
105
- };
106
- return Math.max(0, normalizeNumer(end) - normalizeNumer(start));
107
- }
108
- const BlobE = (typeof Blob !== "undefined" && Blob) || BlobP;
109
-
110
- exports.Blob = BlobE;
111
- exports.BlobP = BlobP;
@@ -1,34 +0,0 @@
1
- 'use strict';
2
-
3
- var BlobP = require('./BlobP.js');
4
- var utils = require('../utils.js');
5
-
6
- class FileP extends BlobP.BlobP {
7
- constructor(fileBits, fileName, options) {
8
- utils.checkArgsLength(arguments.length, 2, "File");
9
- super(fileBits, options);
10
- utils.setState(this, "__File__", new FileState());
11
- state(this).lastModified = +((options === null || options === void 0 ? void 0 : options.lastModified) ? new Date(options.lastModified) : new Date()) || 0;
12
- state(this).name = "" + fileName;
13
- }
14
- get lastModified() { return state(this).lastModified; }
15
- get name() { return state(this).name; }
16
- get webkitRelativePath() { return ""; }
17
- /** @internal */ toString() { return "[object File]"; }
18
- /** @internal */ get [utils.SymbolP.toStringTag]() { return "File"; }
19
- /** @internal */ get __MPHTTPX__() { return { chain: ["File", "Blob"] }; }
20
- }
21
- /** @internal */
22
- class FileState {
23
- constructor() {
24
- this.lastModified = 0;
25
- this.name = "";
26
- }
27
- }
28
- function state(target) {
29
- return target.__File__;
30
- }
31
- const FileE = (typeof File !== "undefined" && File) || FileP;
32
-
33
- exports.File = FileE;
34
- exports.FileP = FileP;
@@ -1,173 +0,0 @@
1
- 'use strict';
2
-
3
- var isBlob = require('../helpers/isBlob.js');
4
- var handlers = require('../helpers/handlers.js');
5
- var toBase64 = require('../helpers/toBase64.js');
6
- var EventTargetP = require('../event-system/EventTargetP.js');
7
- var emitProgressEvent = require('../helpers/emitProgressEvent.js');
8
- var utils = require('../utils.js');
9
-
10
- class FileReaderP extends EventTargetP.EventTargetP {
11
- static get EMPTY() { return 0; }
12
- static get LOADING() { return 1; }
13
- static get DONE() { return 2; }
14
- constructor() {
15
- super();
16
- utils.setState(this, "__FileReader__", new FileReaderState(this));
17
- }
18
- get EMPTY() { return 0; }
19
- get LOADING() { return 1; }
20
- get DONE() { return 2; }
21
- get error() { return state(this).error; }
22
- get readyState() { return state(this).readyState; }
23
- get result() { return state(this).result; }
24
- abort() {
25
- if (state(this).pos === 2 /* FRCycle.LOADING */)
26
- execAbort(this);
27
- }
28
- readAsArrayBuffer(blob) {
29
- check(this, "readAsArrayBuffer", arguments.length, blob);
30
- read(this, blob.size, () => blob.arrayBuffer());
31
- }
32
- readAsBinaryString(blob) {
33
- check(this, "readAsBinaryString", arguments.length, blob);
34
- read(this, blob.size, () => blob.arrayBuffer().then(res => {
35
- let str = [];
36
- let buf = new Uint8Array(res);
37
- for (let i = 0; i < buf.length; ++i) {
38
- str.push(String.fromCharCode(buf[i]));
39
- }
40
- return str.join("");
41
- }));
42
- }
43
- readAsDataURL(blob) {
44
- check(this, "readAsDataURL", arguments.length, blob);
45
- read(this, blob.size, () => blob.arrayBuffer().then(res => {
46
- return "data:" + (blob.type || "application/octet-stream") + ";base64," + toBase64.Uint8Array_toBase64(new Uint8Array(res));
47
- }));
48
- }
49
- readAsText(blob, encoding) {
50
- check(this, "readAsText", arguments.length, blob);
51
- if (encoding !== undefined) {
52
- let _encoding = "" + encoding;
53
- if (["utf-8", "utf8", "unicode-1-1-utf-8"].indexOf(_encoding.toLowerCase()) === -1) {
54
- console.warn(`Ignoring the execution of 'readAsText' on 'FileReader': encoding ('${_encoding}') not implemented.`);
55
- }
56
- }
57
- read(this, blob.size, () => blob.text());
58
- }
59
- get onabort() { return state(this).onabort; }
60
- set onabort(value) { state(this).onabort = value; state(this).attach("abort"); }
61
- get onerror() { return state(this).onerror; }
62
- set onerror(value) { state(this).onerror = value; state(this).attach("error"); }
63
- get onload() { return state(this).onload; }
64
- set onload(value) { state(this).onload = value; state(this).attach("load"); }
65
- get onloadend() { return state(this).onloadend; }
66
- set onloadend(value) { state(this).onloadend = value; state(this).attach("loadend"); }
67
- get onloadstart() { return state(this).onloadstart; }
68
- set onloadstart(value) { state(this).onloadstart = value; state(this).attach("loadstart"); }
69
- get onprogress() { return state(this).onprogress; }
70
- set onprogress(value) { state(this).onprogress = value; state(this).attach("progress"); }
71
- /** @internal */ toString() { return "[object FileReader]"; }
72
- /** @internal */ get [utils.SymbolP.toStringTag]() { return "FileReader"; }
73
- /** @internal */ get __MPHTTPX__() { return { chain: ["FileReader", "EventTarget"] }; }
74
- }
75
- /** @internal */
76
- class FileReaderState {
77
- constructor(target) {
78
- this.pos = 0 /* FRCycle.EMPTY */;
79
- this.readyState = 0 /* EMPTY */;
80
- this.result = null;
81
- this.error = null;
82
- this.onabort = null;
83
- this.onerror = null;
84
- this.onload = null;
85
- this.onloadend = null;
86
- this.onloadstart = null;
87
- this.onprogress = null;
88
- this.attach = handlers.attachFn(target, getHandlers(target));
89
- }
90
- }
91
- function getHandlers(t) {
92
- return {
93
- onabort: (ev) => { handlers.executeFn(t, t.onabort, ev); },
94
- onerror: (ev) => { handlers.executeFn(t, t.onerror, ev); },
95
- onload: (ev) => { handlers.executeFn(t, t.onload, ev); },
96
- onloadend: (ev) => { handlers.executeFn(t, t.onloadend, ev); },
97
- onloadstart: (ev) => { handlers.executeFn(t, t.onloadstart, ev); },
98
- onprogress: (ev) => { handlers.executeFn(t, t.onprogress, ev); },
99
- };
100
- }
101
- function state(target) {
102
- return target.__FileReader__;
103
- }
104
- function check(reader, kind, actual, blob) {
105
- utils.checkArgsLength(actual, 1, "FileReader", kind);
106
- if (!isBlob.isBlob(blob))
107
- throw new TypeError("Failed to execute '" + kind + "' on 'FileReader': parameter 1 is not of type 'Blob'.");
108
- if (reader.readyState === 1 /* LOADING */)
109
- throw new utils.DOMExceptionP(`Failed to execute '${kind}' on 'FileReader': The object is already busy reading Blobs.`, "InvalidStateError");
110
- }
111
- function read(reader, size, launch) {
112
- execLoadstart(reader, size, launch);
113
- }
114
- function execLoadstart(reader, size, launch) {
115
- let s = state(reader);
116
- s.pos = 1 /* FRCycle.LOADSTART */;
117
- s.error = null;
118
- s.result = null;
119
- const callback = () => { emitProgressEvent.emitProgressEvent(reader, "loadstart", 0, size); return launch(); };
120
- return execLoading(reader, size, callback);
121
- }
122
- function execLoading(reader, size, launch) {
123
- let s = state(reader);
124
- s.pos = 2 /* FRCycle.LOADING */;
125
- s.readyState = 1 /* LOADING */;
126
- return Promise.resolve().then(() => {
127
- if (s.pos !== 2 /* FRCycle.LOADING */)
128
- return;
129
- return launch().then(r => execDone(reader, size, r)).catch(err => execError(reader, err));
130
- });
131
- }
132
- function execDone(reader, size, result) {
133
- let s = state(reader);
134
- if (s.pos !== 2 /* FRCycle.LOADING */)
135
- return;
136
- s.pos = 3 /* FRCycle.DONE */;
137
- s.result = result;
138
- s.readyState = 2; /* DONE */
139
- execLoad(reader, size);
140
- }
141
- function execLoad(reader, size) {
142
- state(reader).pos = 4 /* FRCycle.LOAD */;
143
- emitProgressEvent.emitProgressEvent(reader, "load", size, size);
144
- execLoadend(reader, size);
145
- }
146
- function execAbort(reader) {
147
- let s = state(reader);
148
- s.pos = 5 /* FRCycle.ABORT */;
149
- s.error = new utils.DOMExceptionP("An ongoing operation was aborted, typically with a call to abort().", "AbortError");
150
- s.result = null;
151
- s.readyState = 2 /* DONE */;
152
- emitProgressEvent.emitProgressEvent(reader, "abort");
153
- execLoadend(reader);
154
- }
155
- function execError(reader, err) {
156
- let s = state(reader);
157
- if (s.pos !== 2 /* FRCycle.LOADING */)
158
- return;
159
- s.pos = 6 /* FRCycle.ERROR */;
160
- s.error = err;
161
- s.result = null;
162
- s.readyState = 2 /* DONE */;
163
- emitProgressEvent.emitProgressEvent(reader, "error");
164
- execLoadend(reader);
165
- }
166
- function execLoadend(reader, size = 0) {
167
- state(reader).pos = 7 /* FRCycle.LOADEND */;
168
- emitProgressEvent.emitProgressEvent(reader, "loadend", size, size);
169
- }
170
- const FileReaderE = (typeof FileReader !== "undefined" && FileReader) || FileReaderP;
171
-
172
- exports.FileReader = FileReaderE;
173
- exports.FileReaderP = FileReaderP;
@@ -1,96 +0,0 @@
1
- 'use strict';
2
-
3
- var encode = require('./encode.js');
4
- var decode = require('./decode.js');
5
- var BlobP = require('../file-system/BlobP.js');
6
- var isBlob = require('./isBlob.js');
7
- var utils = require('../utils.js');
8
- var isArrayBuffer = require('./isArrayBuffer.js');
9
- var isURLSearchParams = require('./isURLSearchParams.js');
10
-
11
- /** @internal */
12
- class Payload {
13
- constructor(body) {
14
- this.type = "";
15
- if (typeof body === "string") {
16
- this.promise = Promise.resolve(body);
17
- this.type = "text/plain;charset=UTF-8";
18
- this.calcLength = () => encode.encode(body).length;
19
- }
20
- else if (isURLSearchParams.isURLSearchParams(body)) {
21
- let _body = body.toString();
22
- this.promise = Promise.resolve(_body);
23
- this.type = "application/x-www-form-urlencoded;charset=UTF-8";
24
- this.calcLength = () => encode.encode(_body).length;
25
- }
26
- else if (isArrayBuffer.isArrayBuffer(body)) {
27
- this.promise = Promise.resolve(body.slice(0));
28
- this.length = body.byteLength;
29
- }
30
- else if (ArrayBuffer.isView(body)) {
31
- let _body = body.buffer.slice(body.byteOffset, body.byteOffset + body.byteLength);
32
- this.promise = Promise.resolve(_body);
33
- this.length = _body.byteLength;
34
- }
35
- else if (isBlob.isBlob(body)) {
36
- this.promise = body.arrayBuffer();
37
- this.type = body.type;
38
- this.length = body.size;
39
- }
40
- else if (isFormData(body)) {
41
- let _body = FormData_toBlob(body);
42
- this.promise = _body.arrayBuffer();
43
- this.type = _body.type;
44
- this.length = _body.size;
45
- }
46
- else if (body === null || body === undefined) {
47
- this.promise = Promise.resolve("");
48
- this.length = 0;
49
- }
50
- else {
51
- let _body = "" + body;
52
- this.promise = Promise.resolve(_body);
53
- this.type = "text/plain;charset=UTF-8";
54
- this.calcLength = () => encode.encode(_body).length;
55
- }
56
- }
57
- get size() {
58
- var _a;
59
- if (typeof this.length !== "number" && this.calcLength)
60
- this.length = this.calcLength();
61
- return (_a = this.length) !== null && _a !== void 0 ? _a : 0;
62
- }
63
- text() { return this.promise.then(r => typeof r === "string" ? r : decode.decode(r)); }
64
- arrayBuffer() { return this.promise.then(r => isArrayBuffer.isArrayBuffer(r) ? r : encode.encode(r).buffer); }
65
- }
66
- function isFormData(value) {
67
- return utils.isPolyfillType("FormData", value) || isExternalFormData(value);
68
- }
69
- function isExternalFormData(value) {
70
- let expect = "[object FormData]";
71
- return (Object.prototype.toString.call(value) === expect || String(value) === expect)
72
- && "forEach" in value
73
- && typeof value.forEach === "function";
74
- }
75
- function FormData_toBlob(formData) {
76
- const boundary = "----formdata-mphttpx-" + Math.random();
77
- const p = `--${boundary}\r\nContent-Disposition: form-data; name="`;
78
- let chunks = [];
79
- formData.forEach((value, name) => {
80
- typeof value === "string"
81
- ? chunks.push(p + escape(normalizeLinefeeds(name)) + `"\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
82
- : chunks.push(p + escape(normalizeLinefeeds(name)) + `"; filename="${escape(value.name)}"\r\nContent-Type: ${value.type || "application/octet-stream"}\r\n\r\n`, value, `\r\n`);
83
- });
84
- chunks.push(`--${boundary}--`);
85
- return new BlobP.BlobP(chunks, { type: "multipart/form-data; boundary=" + boundary });
86
- }
87
- // normalize line feeds for textarea
88
- // https://html.spec.whatwg.org/multipage/form-elements.html#textarea-line-break-normalisation-transformation
89
- function normalizeLinefeeds(value) {
90
- return value.replace(/\r?\n|\r/g, "\r\n");
91
- }
92
- function escape(str) {
93
- return str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22');
94
- }
95
-
96
- exports.Payload = Payload;
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var TextDecoderP = require('../encoding/TextDecoderP.js');
4
-
5
- /** @internal */
6
- function decode(buf) {
7
- let decoder = new TextDecoderP.TextDecoderP();
8
- return decoder.decode(buf);
9
- }
10
-
11
- exports.decode = decode;
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- var EventTargetP = require('../event-system/EventTargetP.js');
4
- var EventP = require('../event-system/EventP.js');
5
-
6
- /** @internal */
7
- function emitEvent(target, type) {
8
- let event = new EventP.EventP(type);
9
- event.__Event__.target = target;
10
- EventP.Event_setTrusted(event, true);
11
- EventTargetP.EventTarget_fire(target, event);
12
- }
13
-
14
- exports.emitEvent = emitEvent;
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- var EventP = require('../event-system/EventP.js');
4
- var EventTargetP = require('../event-system/EventTargetP.js');
5
- var ProgressEventP = require('../event-system/ProgressEventP.js');
6
-
7
- /** @internal */
8
- function emitProgressEvent(target, type, loaded = 0, total = 0) {
9
- let event = new ProgressEventP.ProgressEventP(type, {
10
- lengthComputable: total > 0,
11
- loaded,
12
- total,
13
- });
14
- event.__Event__.target = target;
15
- EventP.Event_setTrusted(event, true);
16
- EventTargetP.EventTarget_fire(target, event);
17
- }
18
-
19
- exports.emitProgressEvent = emitProgressEvent;
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var TextEncoderP = require('../encoding/TextEncoderP.js');
4
-
5
- /** @internal */
6
- function encode(str) {
7
- let encoder = new TextEncoderP.TextEncoderP();
8
- return encoder.encode(str);
9
- }
10
-
11
- exports.encode = encode;
@@ -1,23 +0,0 @@
1
- 'use strict';
2
-
3
- var EventTargetP = require('../event-system/EventTargetP.js');
4
-
5
- /** @internal */
6
- function attachFn(target, handlers) {
7
- return function attach(type) {
8
- const fnName = ("on" + type);
9
- const callback = target[fnName];
10
- const listener = handlers[fnName];
11
- typeof callback === "function"
12
- ? EventTargetP.EventTargetP.prototype.addEventListener.call(target, type, listener)
13
- : EventTargetP.EventTargetP.prototype.removeEventListener.call(target, type, listener);
14
- };
15
- }
16
- /** @internal */
17
- function executeFn(target, cb, ev) {
18
- if (typeof cb === "function")
19
- cb.call(target, ev);
20
- }
21
-
22
- exports.attachFn = attachFn;
23
- exports.executeFn = executeFn;
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var utils = require('../utils.js');
4
-
5
- /** @internal */
6
- function isArrayBuffer(value) {
7
- // Mini Program
8
- return utils.isObjectType("ArrayBuffer", value) || (!!value && typeof value === "object" && ArrayBuffer.prototype.isPrototypeOf(value));
9
- }
10
-
11
- exports.isArrayBuffer = isArrayBuffer;
@@ -1,20 +0,0 @@
1
- 'use strict';
2
-
3
- var utils = require('../utils.js');
4
-
5
- /** @internal */
6
- function isBlob(value, strict = false) {
7
- return utils.isPolyfillType("Blob", value, strict) || isExternalBlob(value, strict);
8
- }
9
- function isExternalBlob(value, strict = false) {
10
- let expects = ["[object Blob]"];
11
- if (!strict)
12
- expects.push("[object File]");
13
- return (expects.indexOf(Object.prototype.toString.call(value)) > -1 || expects.indexOf(String(value)) > -1)
14
- && "size" in value
15
- && typeof value.size === "number"
16
- && "arrayBuffer" in value
17
- && typeof value.arrayBuffer === "function";
18
- }
19
-
20
- exports.isBlob = isBlob;
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- var utils = require('../utils.js');
4
-
5
- /** @internal */
6
- function isEventTarget(value) {
7
- return utils.isPolyfillType("EventTarget", value) || isExternalEventTarget(value);
8
- }
9
- function isExternalEventTarget(value) {
10
- return !!value
11
- && typeof value === "object"
12
- && "addEventListener" in value
13
- && typeof value.addEventListener === "function"
14
- && "removeEventListener" in value
15
- && typeof value.removeEventListener === "function";
16
- }
17
-
18
- exports.isEventTarget = isEventTarget;