mphttpx 2.3.0 → 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.
- package/README.md +994 -994
- package/dist/cjs/fetchP.js +22 -0
- package/dist/cjs/index.js +197 -55
- package/dist/esm/fetchP.js +12 -0
- package/dist/esm/index.js +5 -18
- package/dist/index.d.ts +8 -394
- package/dist/mphttpx.cjs.js +6646 -0
- package/dist/mphttpx.cjs.min.js +1 -1
- package/dist/mphttpx.esm.js +6595 -0
- package/dist/mphttpx.esm.min.js +1 -1
- package/package.json +27 -9
- package/dist/cjs/encoding/TextDecoderP.js +0 -174
- package/dist/cjs/encoding/TextEncoderP.js +0 -121
- package/dist/cjs/event-system/AbortControllerP.js +0 -28
- package/dist/cjs/event-system/AbortSignalP.js +0 -120
- package/dist/cjs/event-system/CloseEventP.js +0 -36
- package/dist/cjs/event-system/CustomEventP.js +0 -35
- package/dist/cjs/event-system/EventP.js +0 -127
- package/dist/cjs/event-system/EventTargetP.js +0 -155
- package/dist/cjs/event-system/MessageEventP.js +0 -61
- package/dist/cjs/event-system/ProgressEventP.js +0 -42
- package/dist/cjs/fetch-api/BodyImpl.js +0 -167
- package/dist/cjs/fetch-api/HeadersP.js +0 -155
- package/dist/cjs/fetch-api/RequestP.js +0 -163
- package/dist/cjs/fetch-api/ResponseP.js +0 -93
- package/dist/cjs/fetch-api/fetchP.js +0 -125
- package/dist/cjs/file-system/BlobP.js +0 -111
- package/dist/cjs/file-system/FileP.js +0 -34
- package/dist/cjs/file-system/FileReaderP.js +0 -173
- package/dist/cjs/helpers/Payload.js +0 -96
- package/dist/cjs/helpers/decode.js +0 -11
- package/dist/cjs/helpers/emitEvent.js +0 -14
- package/dist/cjs/helpers/emitProgressEvent.js +0 -19
- package/dist/cjs/helpers/encode.js +0 -11
- package/dist/cjs/helpers/handlers.js +0 -23
- package/dist/cjs/helpers/isArrayBuffer.js +0 -11
- package/dist/cjs/helpers/isBlob.js +0 -20
- package/dist/cjs/helpers/isEventTarget.js +0 -18
- package/dist/cjs/helpers/isSequence.js +0 -13
- package/dist/cjs/helpers/isURLSearchParams.js +0 -10
- package/dist/cjs/helpers/normalizeMethod.js +0 -11
- package/dist/cjs/helpers/statusTextMap.js +0 -68
- package/dist/cjs/helpers/toBase64.js +0 -28
- package/dist/cjs/mini-program/WebSocketImpl.js +0 -197
- package/dist/cjs/mini-program/XMLHttpRequestImpl.js +0 -493
- package/dist/cjs/mini-program/connectSocket.js +0 -28
- package/dist/cjs/mini-program/platform.js +0 -29
- package/dist/cjs/mini-program/request.js +0 -36
- package/dist/cjs/network/FormDataP.js +0 -160
- package/dist/cjs/network/URLSearchParamsP.js +0 -226
- package/dist/cjs/network/XMLHttpRequestEventTargetP.js +0 -64
- package/dist/cjs/network/XMLHttpRequestUploadP.js +0 -28
- package/dist/cjs/utils.js +0 -56
- package/dist/esm/encoding/TextDecoderP.js +0 -171
- package/dist/esm/encoding/TextEncoderP.js +0 -118
- package/dist/esm/event-system/AbortControllerP.js +0 -25
- package/dist/esm/event-system/AbortSignalP.js +0 -115
- package/dist/esm/event-system/CloseEventP.js +0 -34
- package/dist/esm/event-system/CustomEventP.js +0 -32
- package/dist/esm/event-system/EventP.js +0 -122
- package/dist/esm/event-system/EventTargetP.js +0 -150
- package/dist/esm/event-system/MessageEventP.js +0 -59
- package/dist/esm/event-system/ProgressEventP.js +0 -40
- package/dist/esm/fetch-api/BodyImpl.js +0 -164
- package/dist/esm/fetch-api/HeadersP.js +0 -149
- package/dist/esm/fetch-api/RequestP.js +0 -160
- package/dist/esm/fetch-api/ResponseP.js +0 -90
- package/dist/esm/fetch-api/fetchP.js +0 -121
- package/dist/esm/file-system/BlobP.js +0 -108
- package/dist/esm/file-system/FileP.js +0 -31
- package/dist/esm/file-system/FileReaderP.js +0 -170
- package/dist/esm/helpers/Payload.js +0 -94
- package/dist/esm/helpers/decode.js +0 -9
- package/dist/esm/helpers/emitEvent.js +0 -12
- package/dist/esm/helpers/emitProgressEvent.js +0 -17
- package/dist/esm/helpers/encode.js +0 -9
- package/dist/esm/helpers/handlers.js +0 -20
- package/dist/esm/helpers/isArrayBuffer.js +0 -9
- package/dist/esm/helpers/isBlob.js +0 -18
- package/dist/esm/helpers/isEventTarget.js +0 -16
- package/dist/esm/helpers/isSequence.js +0 -11
- package/dist/esm/helpers/isURLSearchParams.js +0 -8
- package/dist/esm/helpers/normalizeMethod.js +0 -9
- package/dist/esm/helpers/statusTextMap.js +0 -66
- package/dist/esm/helpers/toBase64.js +0 -26
- package/dist/esm/mini-program/WebSocketImpl.js +0 -193
- package/dist/esm/mini-program/XMLHttpRequestImpl.js +0 -489
- package/dist/esm/mini-program/connectSocket.js +0 -26
- package/dist/esm/mini-program/platform.js +0 -27
- package/dist/esm/mini-program/request.js +0 -34
- package/dist/esm/network/FormDataP.js +0 -157
- package/dist/esm/network/URLSearchParamsP.js +0 -223
- package/dist/esm/network/XMLHttpRequestEventTargetP.js +0 -61
- package/dist/esm/network/XMLHttpRequestUploadP.js +0 -25
- package/dist/esm/utils.js +0 -48
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var EventP = require('./EventP.js');
|
|
4
|
-
var isEventTarget = require('../helpers/isEventTarget.js');
|
|
5
|
-
var utils = require('../utils.js');
|
|
6
|
-
|
|
7
|
-
class EventTargetP {
|
|
8
|
-
constructor() {
|
|
9
|
-
utils.setState(this, "__EventTarget__", new EventTargetState());
|
|
10
|
-
}
|
|
11
|
-
addEventListener(type, callback, options) {
|
|
12
|
-
utils.checkArgsLength(arguments.length, 2, utils.className(this), "addEventListener");
|
|
13
|
-
if (typeof callback !== "function" && typeof callback !== "object" && callback !== undefined) {
|
|
14
|
-
throw new TypeError(`Failed to execute 'addEventListener' on '${utils.className(this)}': parameter 2 is not of type 'Object'.`);
|
|
15
|
-
}
|
|
16
|
-
let s = state(this);
|
|
17
|
-
let executor = new Executor(type, callback);
|
|
18
|
-
let capture = executor.options.capture = typeof options === "boolean" ? options : !!(options === null || options === void 0 ? void 0 : options.capture);
|
|
19
|
-
if (!s.executors.some(x => x.equals(executor))) {
|
|
20
|
-
s.executors.push(executor);
|
|
21
|
-
if (options && typeof options === "object") {
|
|
22
|
-
executor.options.once = !!options.once;
|
|
23
|
-
executor.options.passive = !!options.passive;
|
|
24
|
-
const signal = options.signal;
|
|
25
|
-
if (signal && isEventTarget.isEventTarget(signal) && !signal.aborted) {
|
|
26
|
-
executor.options.signal = signal;
|
|
27
|
-
whenAbort(this, executor, signal);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (capture) {
|
|
31
|
-
let f = (v) => !!v.options.capture ? 0 : 1;
|
|
32
|
-
s.executors = s.executors.sort((a, b) => f(a) - f(b));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
dispatchEvent(event) {
|
|
37
|
-
utils.checkArgsLength(arguments.length, 1, utils.className(this), "dispatchEvent");
|
|
38
|
-
if (utils.isPolyfillType("Event", event)) {
|
|
39
|
-
EventP.Event_setTrusted(event, false);
|
|
40
|
-
}
|
|
41
|
-
else if (!isEvent(event)) {
|
|
42
|
-
throw new TypeError(`Failed to execute 'dispatchEvent' on '${utils.className(this)}': parameter 1 is not of type 'Event'.`);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
console.warn(`WARNING: undefined behavior when executing 'dispatchEvent' on '${utils.className(this)}': parameter 1 is not of type 'mphttpx.Event'`);
|
|
46
|
-
}
|
|
47
|
-
return EventTarget_fire(this, event);
|
|
48
|
-
}
|
|
49
|
-
removeEventListener(type, callback, options) {
|
|
50
|
-
utils.checkArgsLength(arguments.length, 2, utils.className(this), "removeEventListener");
|
|
51
|
-
if (typeof callback !== "function" && typeof callback !== "object" && callback !== undefined) {
|
|
52
|
-
throw new TypeError(`Failed to execute 'removeEventListener' on '${utils.className(this)}': parameter 2 is not of type 'Object'.`);
|
|
53
|
-
}
|
|
54
|
-
let s = state(this);
|
|
55
|
-
let executor = new Executor(type, callback);
|
|
56
|
-
executor.options.capture = typeof options === "boolean" ? options : !!(options === null || options === void 0 ? void 0 : options.capture);
|
|
57
|
-
if (s.executors.some(x => x.equals(executor))) {
|
|
58
|
-
s.executors = s.executors.filter(x => !x.equals(executor));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/** @internal */ toString() { return "[object EventTarget]"; }
|
|
62
|
-
/** @internal */ get [utils.SymbolP.toStringTag]() { return "EventTarget"; }
|
|
63
|
-
/** @internal */ get __MPHTTPX__() { return { chain: ["EventTarget"] }; }
|
|
64
|
-
}
|
|
65
|
-
/** @internal */
|
|
66
|
-
class EventTargetState {
|
|
67
|
-
constructor() {
|
|
68
|
-
this.executors = [];
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function state(target) {
|
|
72
|
-
return target.__EventTarget__;
|
|
73
|
-
}
|
|
74
|
-
function isEvent(value) {
|
|
75
|
-
const predicate = (str) => {
|
|
76
|
-
return "[object " === str.slice(0, 8) && str.slice(-6) === "Event]";
|
|
77
|
-
};
|
|
78
|
-
return !!value
|
|
79
|
-
&& typeof value === "object"
|
|
80
|
-
&& (predicate(Object.prototype.toString.call(value)) || predicate(String(value)))
|
|
81
|
-
&& "type" in value
|
|
82
|
-
&& typeof value.type === "string";
|
|
83
|
-
}
|
|
84
|
-
/** @internal */
|
|
85
|
-
function EventTarget_fire(target, event) {
|
|
86
|
-
const s = state(target);
|
|
87
|
-
const evs = event.__Event__ || {};
|
|
88
|
-
evs.target = target;
|
|
89
|
-
evs.currentTarget = target;
|
|
90
|
-
evs.eventPhase = 2 /* AT_TARGET */;
|
|
91
|
-
evs.eventDispatched = true;
|
|
92
|
-
let onceIndexes = [];
|
|
93
|
-
for (let i = 0; i < s.executors.length; ++i) {
|
|
94
|
-
if (evs.immediatePropagationStopped)
|
|
95
|
-
break;
|
|
96
|
-
let executor = s.executors[i];
|
|
97
|
-
if (executor.type !== event.type)
|
|
98
|
-
continue;
|
|
99
|
-
if (executor.options.once)
|
|
100
|
-
onceIndexes.push(i);
|
|
101
|
-
evs.passive = !!executor.options.passive;
|
|
102
|
-
try {
|
|
103
|
-
let cb = executor.callback;
|
|
104
|
-
if (typeof cb === "function")
|
|
105
|
-
cb.call(target, event);
|
|
106
|
-
}
|
|
107
|
-
catch (e) {
|
|
108
|
-
console.error(e);
|
|
109
|
-
}
|
|
110
|
-
evs.passive = false;
|
|
111
|
-
}
|
|
112
|
-
if (onceIndexes.length > 0) {
|
|
113
|
-
s.executors = s.executors.reduce((acc, cur, index) => {
|
|
114
|
-
if (onceIndexes.indexOf(index) === -1)
|
|
115
|
-
acc.push(cur);
|
|
116
|
-
return acc;
|
|
117
|
-
}, []);
|
|
118
|
-
}
|
|
119
|
-
evs.currentTarget = null;
|
|
120
|
-
evs.eventPhase = 0 /* NONE */;
|
|
121
|
-
evs.eventDispatched = false;
|
|
122
|
-
return !(event.cancelable && event.defaultPrevented);
|
|
123
|
-
}
|
|
124
|
-
function whenAbort(target, executor, signal) {
|
|
125
|
-
const onAbort = () => {
|
|
126
|
-
state(target).executors = state(target).executors.filter(x => !x.equals(executor));
|
|
127
|
-
signal.removeEventListener("abort", onAbort);
|
|
128
|
-
};
|
|
129
|
-
signal.addEventListener("abort", onAbort);
|
|
130
|
-
}
|
|
131
|
-
/** @internal */
|
|
132
|
-
class Executor {
|
|
133
|
-
constructor(type, callback) {
|
|
134
|
-
this.options = {};
|
|
135
|
-
this.type = "" + type;
|
|
136
|
-
this.callback = extract(callback);
|
|
137
|
-
}
|
|
138
|
-
equals(executor) {
|
|
139
|
-
return Object.is(this.type, executor.type)
|
|
140
|
-
&& Object.is(this.callback, executor.callback)
|
|
141
|
-
&& Object.is(this.options.capture, executor.options.capture);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
function extract(cb) {
|
|
145
|
-
return typeof cb === "function" ? cb : isEventListenerObject(cb) ? cb.handleEvent : cb;
|
|
146
|
-
}
|
|
147
|
-
function isEventListenerObject(cb) {
|
|
148
|
-
return !!cb && typeof cb === "object" && "handleEvent" in cb && typeof cb.handleEvent === "function";
|
|
149
|
-
}
|
|
150
|
-
const EventTargetE = (typeof EventTarget !== "undefined" && EventTarget) || EventTargetP;
|
|
151
|
-
|
|
152
|
-
exports.EventTarget = EventTargetE;
|
|
153
|
-
exports.EventTargetP = EventTargetP;
|
|
154
|
-
exports.EventTargetState = EventTargetState;
|
|
155
|
-
exports.EventTarget_fire = EventTarget_fire;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var EventP = require('./EventP.js');
|
|
4
|
-
var utils = require('../utils.js');
|
|
5
|
-
|
|
6
|
-
class MessageEventP extends EventP.EventP {
|
|
7
|
-
constructor(type, eventInitDict) {
|
|
8
|
-
var _a;
|
|
9
|
-
super(type, eventInitDict);
|
|
10
|
-
utils.setState(this, "__MessageEvent__", new MessageEventState());
|
|
11
|
-
const s = state(this);
|
|
12
|
-
s.data = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.data) !== null && _a !== void 0 ? _a : null;
|
|
13
|
-
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.origin) !== undefined)
|
|
14
|
-
s.origin = "" + eventInitDict.origin;
|
|
15
|
-
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.lastEventId) !== undefined)
|
|
16
|
-
s.lastEventId = "" + eventInitDict.lastEventId;
|
|
17
|
-
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.source) !== undefined)
|
|
18
|
-
s.source = eventInitDict.source;
|
|
19
|
-
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.ports) !== undefined)
|
|
20
|
-
s.ports = eventInitDict.ports;
|
|
21
|
-
}
|
|
22
|
-
get data() { return state(this).data; }
|
|
23
|
-
get lastEventId() { return state(this).lastEventId; }
|
|
24
|
-
get origin() { return state(this).origin; }
|
|
25
|
-
get ports() { return state(this).ports; }
|
|
26
|
-
get source() { return state(this).source; }
|
|
27
|
-
initMessageEvent(type, bubbles, cancelable, data, origin, lastEventId, source, ports) {
|
|
28
|
-
utils.checkArgsLength(arguments.length, 1, "MessageEvent", "initMessageEvent");
|
|
29
|
-
if (this.__Event__.eventDispatched)
|
|
30
|
-
return;
|
|
31
|
-
this.initEvent(type, bubbles, cancelable);
|
|
32
|
-
const s = state(this);
|
|
33
|
-
s.data = data !== null && data !== void 0 ? data : null;
|
|
34
|
-
if (origin !== undefined)
|
|
35
|
-
s.origin = "" + origin;
|
|
36
|
-
if (lastEventId !== undefined)
|
|
37
|
-
s.lastEventId = "" + lastEventId;
|
|
38
|
-
if (source !== undefined)
|
|
39
|
-
s.source = source;
|
|
40
|
-
if (ports !== undefined)
|
|
41
|
-
s.ports = Array.from(ports);
|
|
42
|
-
}
|
|
43
|
-
/** @internal */ toString() { return "[object MessageEvent]"; }
|
|
44
|
-
/** @internal */ get [utils.SymbolP.toStringTag]() { return "MessageEvent"; }
|
|
45
|
-
/** @internal */ get __MPHTTPX__() { return { chain: ["MessageEvent", "Event"] }; }
|
|
46
|
-
}
|
|
47
|
-
/** @internal */
|
|
48
|
-
class MessageEventState {
|
|
49
|
-
constructor() {
|
|
50
|
-
this.data = null;
|
|
51
|
-
this.lastEventId = "";
|
|
52
|
-
this.origin = "";
|
|
53
|
-
this.ports = [];
|
|
54
|
-
this.source = null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function state(target) {
|
|
58
|
-
return target.__MessageEvent__;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
exports.MessageEventP = MessageEventP;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var EventP = require('./EventP.js');
|
|
4
|
-
var utils = require('../utils.js');
|
|
5
|
-
|
|
6
|
-
class ProgressEventP extends EventP.EventP {
|
|
7
|
-
constructor(type, eventInitDict) {
|
|
8
|
-
var _a, _b;
|
|
9
|
-
super(type, eventInitDict);
|
|
10
|
-
utils.setState(this, "__ProgressEvent__", new ProgressEventState());
|
|
11
|
-
const s = state(this);
|
|
12
|
-
s.lengthComputable = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.lengthComputable);
|
|
13
|
-
s.loaded = Number((_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.loaded) !== null && _a !== void 0 ? _a : 0);
|
|
14
|
-
s.total = Number((_b = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.total) !== null && _b !== void 0 ? _b : 0);
|
|
15
|
-
checkNumberField("loaded", this.loaded);
|
|
16
|
-
checkNumberField("total", this.total);
|
|
17
|
-
}
|
|
18
|
-
get lengthComputable() { return state(this).lengthComputable; }
|
|
19
|
-
get loaded() { return state(this).loaded; }
|
|
20
|
-
get total() { return state(this).total; }
|
|
21
|
-
/** @internal */ toString() { return "[object ProgressEvent]"; }
|
|
22
|
-
/** @internal */ get [utils.SymbolP.toStringTag]() { return "ProgressEvent"; }
|
|
23
|
-
/** @internal */ get __MPHTTPX__() { return { chain: ["ProgressEvent", "Event"] }; }
|
|
24
|
-
}
|
|
25
|
-
/** @internal */
|
|
26
|
-
class ProgressEventState {
|
|
27
|
-
constructor() {
|
|
28
|
-
this.lengthComputable = false;
|
|
29
|
-
this.loaded = 0;
|
|
30
|
-
this.total = 0;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function state(target) {
|
|
34
|
-
return target.__ProgressEvent__;
|
|
35
|
-
}
|
|
36
|
-
function checkNumberField(field, value) {
|
|
37
|
-
if (isNaN(value)) {
|
|
38
|
-
throw new TypeError(`Failed to construct 'ProgressEvent': Failed to read the '${field}' property from 'ProgressEventInit': The provided double value is non-finite.`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
exports.ProgressEventP = ProgressEventP;
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var Payload = require('../helpers/Payload.js');
|
|
4
|
-
var BlobP = require('../file-system/BlobP.js');
|
|
5
|
-
var FileP = require('../file-system/FileP.js');
|
|
6
|
-
var FormDataP = require('../network/FormDataP.js');
|
|
7
|
-
var utils = require('../utils.js');
|
|
8
|
-
|
|
9
|
-
class BodyImpl {
|
|
10
|
-
/** @internal */
|
|
11
|
-
constructor() {
|
|
12
|
-
if (new.target === BodyImpl) {
|
|
13
|
-
throw new TypeError("Failed to construct 'Body': Illegal constructor");
|
|
14
|
-
}
|
|
15
|
-
utils.setState(this, "__Body__", new BodyState());
|
|
16
|
-
}
|
|
17
|
-
get bodyUsed() { return state(this).bodyUsed; }
|
|
18
|
-
;
|
|
19
|
-
get body() {
|
|
20
|
-
throw new TypeError(`Failed to access 'body' on '${utils.className(this)}': property not implemented.`);
|
|
21
|
-
}
|
|
22
|
-
arrayBuffer() {
|
|
23
|
-
const kind = "arrayBuffer";
|
|
24
|
-
return consumed(this, kind) || read(this, kind);
|
|
25
|
-
}
|
|
26
|
-
blob() {
|
|
27
|
-
const kind = "blob";
|
|
28
|
-
return consumed(this, kind) || read(this, kind);
|
|
29
|
-
}
|
|
30
|
-
bytes() {
|
|
31
|
-
const kind = "bytes";
|
|
32
|
-
return consumed(this, kind) || read(this, kind);
|
|
33
|
-
}
|
|
34
|
-
formData() {
|
|
35
|
-
const kind = "formData";
|
|
36
|
-
return consumed(this, kind) || read(this, kind);
|
|
37
|
-
}
|
|
38
|
-
json() {
|
|
39
|
-
const kind = "json";
|
|
40
|
-
return consumed(this, kind) || read(this, kind);
|
|
41
|
-
}
|
|
42
|
-
text() {
|
|
43
|
-
const kind = "text";
|
|
44
|
-
return consumed(this, kind) || read(this, kind);
|
|
45
|
-
}
|
|
46
|
-
/** @internal */ toString() { return "[object Body]"; }
|
|
47
|
-
/** @internal */ get [utils.SymbolP.toStringTag]() { return "Body"; }
|
|
48
|
-
/** @internal */ get __MPHTTPX__() { return { chain: ["Body"] }; }
|
|
49
|
-
}
|
|
50
|
-
/** @internal */
|
|
51
|
-
class BodyState {
|
|
52
|
-
constructor() {
|
|
53
|
-
this.bodyUsed = false;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function state(target) {
|
|
57
|
-
return target.__Body__;
|
|
58
|
-
}
|
|
59
|
-
/** @internal */
|
|
60
|
-
function Body_init(instance, body) {
|
|
61
|
-
const b = instance;
|
|
62
|
-
if (utils.isObjectType("ReadableStream", body)) {
|
|
63
|
-
throw new TypeError(`Failed to construct '${utils.className(b)}': ReadableStream not implemented.`);
|
|
64
|
-
}
|
|
65
|
-
if (body !== null && body !== undefined) {
|
|
66
|
-
state(b).payload = new Payload.Payload(body);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function read(body, kind) {
|
|
70
|
-
let payload = state(body).payload || new Payload.Payload();
|
|
71
|
-
if (kind === "json") {
|
|
72
|
-
return payload.text().then(r => JSON.parse(r));
|
|
73
|
-
}
|
|
74
|
-
else if (kind === "text") {
|
|
75
|
-
return payload.text();
|
|
76
|
-
}
|
|
77
|
-
else if (kind === "arrayBuffer") {
|
|
78
|
-
return payload.arrayBuffer();
|
|
79
|
-
}
|
|
80
|
-
else if (kind === "bytes") {
|
|
81
|
-
return payload.arrayBuffer().then(r => new Uint8Array(r));
|
|
82
|
-
}
|
|
83
|
-
else if (kind === "blob") {
|
|
84
|
-
return payload.promise.then(r => new BlobP.BlobP([r]));
|
|
85
|
-
}
|
|
86
|
-
else if (kind === "formData") {
|
|
87
|
-
return payload.text().then(r => createFormDataFromBinaryText(r, extractBoundary(payload.type)));
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
return payload.promise;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
function consumed(body, kind) {
|
|
94
|
-
if (!state(body).payload)
|
|
95
|
-
return;
|
|
96
|
-
if (!body.bodyUsed) {
|
|
97
|
-
state(body).bodyUsed = true;
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
return Promise.reject(new TypeError(`Failed to execute '${kind}' on '${utils.className(body)}': body stream already read`));
|
|
101
|
-
}
|
|
102
|
-
function extractBoundary(contentType) {
|
|
103
|
-
if (!contentType)
|
|
104
|
-
return;
|
|
105
|
-
if (!/multipart\/form-data/i.test(contentType))
|
|
106
|
-
return;
|
|
107
|
-
let boundaryMatch = contentType.match(/boundary\s*=\s*([^;]+)/i);
|
|
108
|
-
if (boundaryMatch && boundaryMatch[1]) {
|
|
109
|
-
let boundary = boundaryMatch[1].trim();
|
|
110
|
-
return boundary.replace(/^["']|["']$/g, "");
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
function createFormDataFromBinaryText(text, boundary) {
|
|
114
|
-
const throwParseError = () => {
|
|
115
|
-
throw new TypeError("Could not parse content as FormData.");
|
|
116
|
-
};
|
|
117
|
-
if (typeof text !== "string" || text.trim() === "") {
|
|
118
|
-
throwParseError();
|
|
119
|
-
}
|
|
120
|
-
let firstLineEnd = text.indexOf("\r\n");
|
|
121
|
-
if (firstLineEnd === -1) {
|
|
122
|
-
throwParseError();
|
|
123
|
-
}
|
|
124
|
-
let _boundary = text.substring(2, firstLineEnd).trim();
|
|
125
|
-
if (!_boundary) {
|
|
126
|
-
throwParseError();
|
|
127
|
-
}
|
|
128
|
-
if (boundary !== undefined && boundary !== _boundary) {
|
|
129
|
-
throwParseError();
|
|
130
|
-
}
|
|
131
|
-
let parts = text.split(`--${_boundary}`).filter(part => {
|
|
132
|
-
let trimmed = part.trim();
|
|
133
|
-
return trimmed !== "" && trimmed !== "--";
|
|
134
|
-
});
|
|
135
|
-
if (parts.length === 0) {
|
|
136
|
-
throwParseError();
|
|
137
|
-
}
|
|
138
|
-
let formData = new FormDataP.FormDataP();
|
|
139
|
-
parts.forEach(part => {
|
|
140
|
-
let separatorIndex = part.indexOf("\r\n\r\n");
|
|
141
|
-
if (separatorIndex === -1) {
|
|
142
|
-
throwParseError();
|
|
143
|
-
}
|
|
144
|
-
let headerRaw = part.substring(0, separatorIndex).trim();
|
|
145
|
-
let nameMatch = headerRaw.match(/name="([^"]*)"/);
|
|
146
|
-
if (!nameMatch || nameMatch.length < 2) {
|
|
147
|
-
throwParseError();
|
|
148
|
-
}
|
|
149
|
-
let fieldName = nameMatch[1];
|
|
150
|
-
let filenameMatch = headerRaw.match(/filename="([^"]*)"/);
|
|
151
|
-
let contentRaw = part.substring(separatorIndex + 4);
|
|
152
|
-
if (!filenameMatch) {
|
|
153
|
-
formData.append(fieldName, contentRaw.replace(/^[\r\n]+|[\r\n]+$/g, ""));
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
let filename = filenameMatch[1] || "";
|
|
157
|
-
let contentTypeMatch = headerRaw.match(/Content-Type: ([^\r\n]+)/);
|
|
158
|
-
let mimeType = contentTypeMatch ? (contentTypeMatch[1] || "").trim() : "text/plain";
|
|
159
|
-
let content = contentRaw.replace(/\r\n/g, "");
|
|
160
|
-
formData.append(fieldName, new FileP.FileP([content], filename, { type: mimeType }));
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
return formData;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
exports.BodyImpl = BodyImpl;
|
|
167
|
-
exports.Body_init = Body_init;
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var isSequence = require('../helpers/isSequence.js');
|
|
4
|
-
var utils = require('../utils.js');
|
|
5
|
-
|
|
6
|
-
class HeadersP {
|
|
7
|
-
constructor(init) {
|
|
8
|
-
utils.setState(this, "__Headers__", new HeadersState());
|
|
9
|
-
if (init !== undefined) {
|
|
10
|
-
if (isHeaders(init)) {
|
|
11
|
-
init.forEach((value, name) => { Headers_append(this, name, value, ""); }, this);
|
|
12
|
-
}
|
|
13
|
-
else if (isSequence.isSequence(init)) {
|
|
14
|
-
let _init = Array.isArray(init) ? init : Array.from(init);
|
|
15
|
-
for (let i = 0; i < _init.length; ++i) {
|
|
16
|
-
let item = _init[i];
|
|
17
|
-
if (isSequence.isSequence(item)) {
|
|
18
|
-
let pair = Array.isArray(item) ? item : Array.from(item);
|
|
19
|
-
if (pair.length === 2) {
|
|
20
|
-
Headers_append(this, pair[0], pair[1]);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
throw new TypeError("Failed to construct 'Headers': Invalid value");
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
throw new TypeError("Failed to construct 'Headers': The provided value cannot be converted to a sequence.");
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
if (init && typeof init === "object") {
|
|
33
|
-
Object.getOwnPropertyNames(init).forEach(name => { Headers_append(this, name, init[name]); }, this);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(record<ByteString, ByteString> or sequence<sequence<ByteString>>)'.");
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
append(name, value) {
|
|
42
|
-
checkArgsFn(arguments.length, 2, "append");
|
|
43
|
-
Headers_append(this, name, value, "append");
|
|
44
|
-
}
|
|
45
|
-
delete(name) {
|
|
46
|
-
checkArgsFn(arguments.length, 1, "delete");
|
|
47
|
-
delete state(this).dict[normalizeName(name, throwsFn("delete"))];
|
|
48
|
-
}
|
|
49
|
-
get(name) {
|
|
50
|
-
var _a;
|
|
51
|
-
checkArgsFn(arguments.length, 1, "get");
|
|
52
|
-
return (_a = state(this).dict[normalizeName(name, throwsFn("get"))]) !== null && _a !== void 0 ? _a : null;
|
|
53
|
-
}
|
|
54
|
-
getSetCookie() {
|
|
55
|
-
let value = this.get("Set-Cookie");
|
|
56
|
-
return value ? value.split(", ") : [];
|
|
57
|
-
}
|
|
58
|
-
has(name) {
|
|
59
|
-
checkArgsFn(arguments.length, 1, "has");
|
|
60
|
-
return state(this).dict.hasOwnProperty(normalizeName(name, throwsFn("has")));
|
|
61
|
-
}
|
|
62
|
-
set(name, value) {
|
|
63
|
-
checkArgsFn(arguments.length, 2, "set");
|
|
64
|
-
state(this).dict[normalizeName(name, throwsFn("set"))] = normalizeValue(value);
|
|
65
|
-
}
|
|
66
|
-
forEach(callbackfn, thisArg) {
|
|
67
|
-
checkArgsFn(arguments.length, 1, "forEach");
|
|
68
|
-
if (typeof callbackfn !== "function") {
|
|
69
|
-
throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.");
|
|
70
|
-
}
|
|
71
|
-
let dict = state(this).dict;
|
|
72
|
-
let names = Object.getOwnPropertyNames(dict);
|
|
73
|
-
for (let i = 0; i < names.length; ++i) {
|
|
74
|
-
let name = names[i];
|
|
75
|
-
callbackfn.call(thisArg, dict[name], name, this);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
entries() {
|
|
79
|
-
let array = [];
|
|
80
|
-
this.forEach((value, name) => { array.push([name, value]); });
|
|
81
|
-
return array.values();
|
|
82
|
-
}
|
|
83
|
-
keys() {
|
|
84
|
-
let array = [];
|
|
85
|
-
this.forEach((value, name) => { array.push([name, value]); });
|
|
86
|
-
return array.map(x => x[0]).values();
|
|
87
|
-
}
|
|
88
|
-
values() {
|
|
89
|
-
let array = [];
|
|
90
|
-
this.forEach((value, name) => { array.push([name, value]); });
|
|
91
|
-
return array.map(x => x[1]).values();
|
|
92
|
-
}
|
|
93
|
-
// @ts-ignore
|
|
94
|
-
/** @internal */ [utils.SymbolP.iterator]() {
|
|
95
|
-
return this.entries();
|
|
96
|
-
}
|
|
97
|
-
/** @internal */ toString() { return "[object Headers]"; }
|
|
98
|
-
/** @internal */ get [utils.SymbolP.toStringTag]() { return "Headers"; }
|
|
99
|
-
/** @internal */ get __MPHTTPX__() { return { chain: ["Headers"] }; }
|
|
100
|
-
}
|
|
101
|
-
/** @internal */
|
|
102
|
-
class HeadersState {
|
|
103
|
-
constructor() {
|
|
104
|
-
this.dict = {};
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
function state(target) {
|
|
108
|
-
return target.__Headers__;
|
|
109
|
-
}
|
|
110
|
-
/** @internal */
|
|
111
|
-
function isHeaders(value) {
|
|
112
|
-
return utils.isPolyfillType("Headers", value) || isExternalHeaders(value);
|
|
113
|
-
}
|
|
114
|
-
function isExternalHeaders(value) {
|
|
115
|
-
let expect = "[object Headers]";
|
|
116
|
-
return (Object.prototype.toString.call(value) === expect || String(value) === expect)
|
|
117
|
-
&& "forEach" in value
|
|
118
|
-
&& typeof value.forEach === "function";
|
|
119
|
-
}
|
|
120
|
-
function Headers_append(headers, name, value, kind = "constructor") {
|
|
121
|
-
let _name = normalizeName(name, kind ? throwsFn(kind) : undefined);
|
|
122
|
-
let _value = normalizeValue(value);
|
|
123
|
-
let dict = state(headers).dict;
|
|
124
|
-
let oldValue = dict[_name];
|
|
125
|
-
dict[_name] = oldValue !== undefined ? `${oldValue}, ${_value}` : _value;
|
|
126
|
-
}
|
|
127
|
-
function throwsFn(kind) {
|
|
128
|
-
return () => {
|
|
129
|
-
throw new TypeError(`Failed to ${(kind && kind !== "constructor") ? ("execute '" + kind + "' on") : "construct"} 'Headers': Invalid name`);
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
function checkArgsFn(actual, expect, funcName) {
|
|
133
|
-
utils.checkArgsLength(actual, expect, "Headers", funcName);
|
|
134
|
-
}
|
|
135
|
-
/** @internal */
|
|
136
|
-
function normalizeName(name, throwError) {
|
|
137
|
-
if (typeof name !== "string") {
|
|
138
|
-
name = "" + name;
|
|
139
|
-
}
|
|
140
|
-
if (throwError && (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === "")) {
|
|
141
|
-
throwError();
|
|
142
|
-
}
|
|
143
|
-
return name.toLowerCase();
|
|
144
|
-
}
|
|
145
|
-
/** @internal */
|
|
146
|
-
function normalizeValue(value) {
|
|
147
|
-
return typeof value === "string" ? value : ("" + value);
|
|
148
|
-
}
|
|
149
|
-
const HeadersE = (typeof Headers !== "undefined" && Headers) || HeadersP;
|
|
150
|
-
|
|
151
|
-
exports.Headers = HeadersE;
|
|
152
|
-
exports.HeadersP = HeadersP;
|
|
153
|
-
exports.isHeaders = isHeaders;
|
|
154
|
-
exports.normalizeName = normalizeName;
|
|
155
|
-
exports.normalizeValue = normalizeValue;
|