mphttpx 1.2.0-beta.1 → 1.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AbortControllerP.js +31 -0
- package/dist/cjs/AbortSignalP.js +126 -0
- package/dist/cjs/BlobP.js +131 -0
- package/dist/cjs/BodyImpl.js +142 -0
- package/dist/cjs/CloseEventP.js +38 -0
- package/dist/cjs/CustomEventP.js +35 -0
- package/dist/cjs/EventP.js +173 -0
- package/dist/cjs/EventTargetP.js +176 -0
- package/dist/cjs/FileP.js +36 -0
- package/dist/cjs/FileReaderP.js +151 -0
- package/dist/cjs/FormDataP.js +250 -0
- package/dist/cjs/HeadersP.js +176 -0
- package/dist/cjs/MessageEventP.js +64 -0
- package/dist/cjs/ProgressEventP.js +69 -0
- package/dist/cjs/RequestP.js +158 -0
- package/dist/cjs/ResponseP.js +102 -0
- package/dist/cjs/TextDecoderP.js +186 -0
- package/dist/cjs/TextEncoderP.js +122 -0
- package/dist/cjs/URLSearchParamsP.js +230 -0
- package/dist/cjs/WebSocketP.js +238 -0
- package/dist/cjs/XMLHttpRequestP.js +567 -0
- package/dist/cjs/convertor.js +83 -0
- package/dist/cjs/fetchP.js +115 -0
- package/dist/cjs/index.js +80 -0
- package/dist/cjs/isPolyfill.js +56 -0
- package/dist/cjs/platform.js +33 -0
- package/dist/esm/AbortControllerP.js +28 -0
- package/dist/esm/AbortSignalP.js +121 -0
- package/dist/esm/BlobP.js +124 -0
- package/dist/esm/BodyImpl.js +137 -0
- package/dist/esm/CloseEventP.js +35 -0
- package/dist/esm/CustomEventP.js +32 -0
- package/dist/esm/EventP.js +165 -0
- package/dist/esm/EventTargetP.js +168 -0
- package/dist/esm/FileP.js +33 -0
- package/dist/esm/FileReaderP.js +148 -0
- package/dist/esm/FormDataP.js +245 -0
- package/dist/esm/HeadersP.js +170 -0
- package/dist/esm/MessageEventP.js +61 -0
- package/dist/esm/ProgressEventP.js +65 -0
- package/dist/esm/RequestP.js +153 -0
- package/dist/esm/ResponseP.js +98 -0
- package/dist/esm/TextDecoderP.js +183 -0
- package/dist/esm/TextEncoderP.js +119 -0
- package/dist/esm/URLSearchParamsP.js +227 -0
- package/dist/esm/WebSocketP.js +234 -0
- package/dist/esm/XMLHttpRequestP.js +563 -0
- package/dist/esm/convertor.js +80 -0
- package/dist/esm/fetchP.js +111 -0
- package/dist/esm/index.js +25 -0
- package/dist/esm/isPolyfill.js +48 -0
- package/dist/esm/platform.js +31 -0
- package/dist/index.d.ts +1 -5
- package/package.json +7 -10
- package/dist/index.cjs.js +0 -3252
- package/dist/index.cjs.min.js +0 -1
- package/dist/index.esm.js +0 -3212
- package/dist/index.esm.min.js +0 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isPolyfill = require('./isPolyfill.js');
|
|
4
|
+
|
|
5
|
+
var _a, _b;
|
|
6
|
+
/** @internal */ const state = Symbol( /* "HeadersState" */);
|
|
7
|
+
const checkArgsFn = (args, required, funcName) => { isPolyfill.checkArgsLength(args, required, "Headers", funcName); };
|
|
8
|
+
class HeadersP {
|
|
9
|
+
constructor(init) {
|
|
10
|
+
this[state] = new HeadersState();
|
|
11
|
+
if (init !== undefined) {
|
|
12
|
+
if (isPolyfill.isObjectType("Headers", init) || isPolyfill.isPolyfillType("Headers", init)) {
|
|
13
|
+
init.forEach((value, name) => { Headers_append(this, name, value); }, this);
|
|
14
|
+
}
|
|
15
|
+
else if (Array.isArray(init) || (init && typeof init === "object" && Symbol.iterator in init)) {
|
|
16
|
+
let _init = Array.isArray(init) ? init : Array.from(init);
|
|
17
|
+
_init.forEach(item => {
|
|
18
|
+
if (Array.isArray(item) || (item && typeof item === "object" && Symbol.iterator in item)) {
|
|
19
|
+
let pair = Array.isArray(item) ? item : Array.from(item);
|
|
20
|
+
if (pair.length === 2) {
|
|
21
|
+
this.append(pair[0], pair[1]);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw new TypeError("Failed to construct 'Headers': Invalid value");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new TypeError("Failed to construct 'Headers': The provided value cannot be converted to a sequence.");
|
|
29
|
+
}
|
|
30
|
+
}, this);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (init && typeof init === "object") {
|
|
34
|
+
Object.getOwnPropertyNames(init).forEach(name => { this.append(name, init[name]); }, this);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(record<ByteString, ByteString> or sequence<sequence<ByteString>>)'.");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
this[state][_initialized] = true;
|
|
42
|
+
}
|
|
43
|
+
append(...args) {
|
|
44
|
+
const [name, value] = args;
|
|
45
|
+
checkArgsFn(args, 2, "append");
|
|
46
|
+
let _name = normalizeName(name, throwsFn(this[state][_initialized] ? "append" : ""));
|
|
47
|
+
let _value = normalizeValue(value);
|
|
48
|
+
Headers_append(this, _name, _value);
|
|
49
|
+
}
|
|
50
|
+
delete(...args) {
|
|
51
|
+
const [name] = args;
|
|
52
|
+
checkArgsFn(args, 1, "delete");
|
|
53
|
+
let _name = normalizeName(name, throwsFn("delete"));
|
|
54
|
+
delete this[state][_headersDict][_name];
|
|
55
|
+
}
|
|
56
|
+
get(...args) {
|
|
57
|
+
var _c;
|
|
58
|
+
const [name] = args;
|
|
59
|
+
checkArgsFn(args, 1, "get");
|
|
60
|
+
let _name = normalizeName(name, throwsFn("get"));
|
|
61
|
+
return (_c = this[state][_headersDict][_name]) !== null && _c !== void 0 ? _c : null;
|
|
62
|
+
}
|
|
63
|
+
getSetCookie() {
|
|
64
|
+
let value = this.get("Set-Cookie");
|
|
65
|
+
return value ? value.split(", ") : [];
|
|
66
|
+
}
|
|
67
|
+
has(...args) {
|
|
68
|
+
const [name] = args;
|
|
69
|
+
checkArgsFn(args, 1, "has");
|
|
70
|
+
let _name = normalizeName(name, throwsFn("has"));
|
|
71
|
+
return this[state][_headersDict].hasOwnProperty(_name);
|
|
72
|
+
}
|
|
73
|
+
set(...args) {
|
|
74
|
+
const [name, value] = args;
|
|
75
|
+
checkArgsFn(args, 2, "set");
|
|
76
|
+
let _name = normalizeName(name, throwsFn("set"));
|
|
77
|
+
let _value = normalizeValue(value);
|
|
78
|
+
this[state][_headersDict][_name] = _value;
|
|
79
|
+
}
|
|
80
|
+
forEach(...args) {
|
|
81
|
+
const [callbackfn, thisArg] = args;
|
|
82
|
+
checkArgsFn(args, 1, "forEach");
|
|
83
|
+
if (typeof callbackfn !== "function") {
|
|
84
|
+
throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.");
|
|
85
|
+
}
|
|
86
|
+
let names = Object.getOwnPropertyNames(this[state][_headersDict]);
|
|
87
|
+
for (let i = 0; i < names.length; ++i) {
|
|
88
|
+
let name = names[i];
|
|
89
|
+
callbackfn.call(thisArg, this[state][_headersDict][name], name, this);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
entries() {
|
|
93
|
+
let array = [];
|
|
94
|
+
this.forEach((value, name) => { array.push([name, value]); });
|
|
95
|
+
return array.values();
|
|
96
|
+
}
|
|
97
|
+
keys() {
|
|
98
|
+
let array = [];
|
|
99
|
+
this.forEach((value, name) => { array.push(name); });
|
|
100
|
+
return array.values();
|
|
101
|
+
}
|
|
102
|
+
values() {
|
|
103
|
+
let array = [];
|
|
104
|
+
this.forEach((value, name) => { array.push(value); });
|
|
105
|
+
return array.values();
|
|
106
|
+
}
|
|
107
|
+
[Symbol.iterator]() {
|
|
108
|
+
return this.entries();
|
|
109
|
+
}
|
|
110
|
+
/** @internal */ toString() { return "[object Headers]"; }
|
|
111
|
+
/** @internal */ get [Symbol.toStringTag]() { return "Headers"; }
|
|
112
|
+
/** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Headers"] }; }
|
|
113
|
+
}
|
|
114
|
+
/** @internal */ const _initialized = Symbol();
|
|
115
|
+
/** @internal */ const _headersDict = Symbol();
|
|
116
|
+
/** @internal */
|
|
117
|
+
class HeadersState {
|
|
118
|
+
constructor() {
|
|
119
|
+
this[_a] = false;
|
|
120
|
+
this[_b] = {};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
_a = _initialized, _b = _headersDict;
|
|
124
|
+
function Headers_append(headers, name, value) {
|
|
125
|
+
let dict = headers[state][_headersDict];
|
|
126
|
+
let oldValue = dict[name];
|
|
127
|
+
dict[name] = oldValue !== undefined ? `${oldValue}, ${value}` : value;
|
|
128
|
+
}
|
|
129
|
+
function throwsFn(kind) {
|
|
130
|
+
return () => {
|
|
131
|
+
throw new TypeError(`Failed to ${kind ? ("execute '" + kind + "' on") : "construct"} 'Headers': Invalid name`);
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/** @internal */
|
|
135
|
+
function normalizeName(name, throwError) {
|
|
136
|
+
if (typeof name !== "string") {
|
|
137
|
+
name = "" + name;
|
|
138
|
+
}
|
|
139
|
+
if (throwError && (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === "")) {
|
|
140
|
+
throwError();
|
|
141
|
+
}
|
|
142
|
+
return name.toLowerCase();
|
|
143
|
+
}
|
|
144
|
+
/** @internal */
|
|
145
|
+
function normalizeValue(value) {
|
|
146
|
+
return typeof value === "string" ? value : ("" + value);
|
|
147
|
+
}
|
|
148
|
+
/** @internal */
|
|
149
|
+
function parseHeaders(rawHeaders) {
|
|
150
|
+
let headers = new HeadersP();
|
|
151
|
+
let preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " ");
|
|
152
|
+
preProcessedHeaders
|
|
153
|
+
.split("\r")
|
|
154
|
+
.map(header => header.indexOf("\n") === 0 ? header.substring(1, header.length) : header)
|
|
155
|
+
.forEach(line => {
|
|
156
|
+
let parts = line.split(":");
|
|
157
|
+
let name = parts.shift().trim();
|
|
158
|
+
if (name) {
|
|
159
|
+
let value = parts.join(":").trim();
|
|
160
|
+
try {
|
|
161
|
+
headers.append(name, value);
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
console.warn(`SyntaxError: Response.headers: '${name}' is not a valid HTTP header field name.`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return headers;
|
|
169
|
+
}
|
|
170
|
+
const HeadersE = isPolyfill.g["Headers"] || HeadersP;
|
|
171
|
+
|
|
172
|
+
exports.Headers = HeadersE;
|
|
173
|
+
exports.HeadersP = HeadersP;
|
|
174
|
+
exports.normalizeName = normalizeName;
|
|
175
|
+
exports.normalizeValue = normalizeValue;
|
|
176
|
+
exports.parseHeaders = parseHeaders;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var EventP = require('./EventP.js');
|
|
4
|
+
var isPolyfill = require('./isPolyfill.js');
|
|
5
|
+
|
|
6
|
+
const dispatched = 1;
|
|
7
|
+
/** @internal */
|
|
8
|
+
const state = Symbol( /* "MessageEventState" */);
|
|
9
|
+
class MessageEventP extends EventP.EventP {
|
|
10
|
+
constructor(type, eventInitDict) {
|
|
11
|
+
var _a;
|
|
12
|
+
super(type, eventInitDict);
|
|
13
|
+
this[state] = new MessageEventState();
|
|
14
|
+
const s = this[state];
|
|
15
|
+
s.data = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.data) !== null && _a !== void 0 ? _a : null;
|
|
16
|
+
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.origin) !== undefined)
|
|
17
|
+
s.origin = "" + eventInitDict.origin;
|
|
18
|
+
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.lastEventId) !== undefined)
|
|
19
|
+
s.lastEventId = "" + eventInitDict.lastEventId;
|
|
20
|
+
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.source) !== undefined)
|
|
21
|
+
s.source = eventInitDict.source;
|
|
22
|
+
if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.ports) !== undefined)
|
|
23
|
+
s.ports = eventInitDict.ports;
|
|
24
|
+
}
|
|
25
|
+
get data() { return this[state].data; }
|
|
26
|
+
get lastEventId() { return this[state].lastEventId; }
|
|
27
|
+
get origin() { return this[state].origin; }
|
|
28
|
+
get ports() { return this[state].ports; }
|
|
29
|
+
get source() { return this[state].source; }
|
|
30
|
+
initMessageEvent(...args) {
|
|
31
|
+
const [type, bubbles, cancelable, data, origin, lastEventId, source, ports] = args;
|
|
32
|
+
isPolyfill.checkArgsLength(args, 1, "MessageEvent", "initMessageEvent");
|
|
33
|
+
if (EventP.Event_getEtField(this, dispatched))
|
|
34
|
+
return;
|
|
35
|
+
this.initEvent(type, bubbles, cancelable);
|
|
36
|
+
const s = this[state];
|
|
37
|
+
s.data = data !== null && data !== void 0 ? data : null;
|
|
38
|
+
if (origin !== undefined)
|
|
39
|
+
s.origin = "" + origin;
|
|
40
|
+
if (lastEventId !== undefined)
|
|
41
|
+
s.lastEventId = "" + lastEventId;
|
|
42
|
+
if (source !== undefined)
|
|
43
|
+
s.source = source;
|
|
44
|
+
if (ports !== undefined)
|
|
45
|
+
s.ports = ports;
|
|
46
|
+
}
|
|
47
|
+
/** @internal */ toString() { return "[object MessageEvent]"; }
|
|
48
|
+
/** @internal */ get [Symbol.toStringTag]() { return "MessageEvent"; }
|
|
49
|
+
/** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["MessageEvent", "Event"] }; }
|
|
50
|
+
}
|
|
51
|
+
/** @internal */
|
|
52
|
+
class MessageEventState {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.data = null;
|
|
55
|
+
this.lastEventId = "";
|
|
56
|
+
this.origin = "";
|
|
57
|
+
this.ports = [];
|
|
58
|
+
this.source = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const MessageEventE = isPolyfill.g["EventTarget"] ? isPolyfill.g["MessageEvent"] : MessageEventP;
|
|
62
|
+
|
|
63
|
+
exports.MessageEvent = MessageEventE;
|
|
64
|
+
exports.MessageEventP = MessageEventP;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isPolyfill = require('./isPolyfill.js');
|
|
4
|
+
var EventTargetP = require('./EventTargetP.js');
|
|
5
|
+
var EventP = require('./EventP.js');
|
|
6
|
+
|
|
7
|
+
/** @internal */
|
|
8
|
+
const state = Symbol( /* "ProgressEventState" */);
|
|
9
|
+
class ProgressEventP extends EventP.EventP {
|
|
10
|
+
constructor(type, eventInitDict) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
super(type, eventInitDict);
|
|
13
|
+
this[state] = new ProgressEventState();
|
|
14
|
+
const s = this[state];
|
|
15
|
+
s.lengthComputable = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.lengthComputable);
|
|
16
|
+
s.loaded = Number((_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.loaded) !== null && _a !== void 0 ? _a : 0);
|
|
17
|
+
s.total = Number((_b = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.total) !== null && _b !== void 0 ? _b : 0);
|
|
18
|
+
let errField = "";
|
|
19
|
+
if (isNaN(s.loaded)) {
|
|
20
|
+
errField = "loaded";
|
|
21
|
+
}
|
|
22
|
+
if (isNaN(s.total)) {
|
|
23
|
+
errField = "total";
|
|
24
|
+
}
|
|
25
|
+
if (errField) {
|
|
26
|
+
throw new TypeError(`Failed to construct 'ProgressEvent': Failed to read the '${errField}' property from 'ProgressEventInit': The provided double value is non-finite.`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
get lengthComputable() { return getValue(this[state].lengthComputable); }
|
|
30
|
+
get loaded() { return getValue(this[state].loaded); }
|
|
31
|
+
get total() { return getValue(this[state].total); }
|
|
32
|
+
/** @internal */ toString() { return "[object ProgressEvent]"; }
|
|
33
|
+
/** @internal */ get [Symbol.toStringTag]() { return "ProgressEvent"; }
|
|
34
|
+
/** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["ProgressEvent", "Event"] }; }
|
|
35
|
+
}
|
|
36
|
+
/** @internal */
|
|
37
|
+
class ProgressEventState {
|
|
38
|
+
constructor() {
|
|
39
|
+
this.lengthComputable = false;
|
|
40
|
+
this.loaded = 0;
|
|
41
|
+
this.total = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getValue(val) {
|
|
45
|
+
return typeof val === "function" ? val() : val;
|
|
46
|
+
}
|
|
47
|
+
function createInnerProgressEvent(target, type, { lengthComputable = false, loaded = 0, total = 0, } = {}) {
|
|
48
|
+
let event = new ProgressEventP(type);
|
|
49
|
+
event[state].lengthComputable = lengthComputable;
|
|
50
|
+
event[state].loaded = loaded;
|
|
51
|
+
event[state].total = total;
|
|
52
|
+
event[EventP.eventState].target = target;
|
|
53
|
+
EventP.Event_setTrusted(event, true);
|
|
54
|
+
return event;
|
|
55
|
+
}
|
|
56
|
+
/** @internal */
|
|
57
|
+
function emitProcessEvent(target, type, loaded = 0, total = 0) {
|
|
58
|
+
let event = createInnerProgressEvent(target, type, {
|
|
59
|
+
lengthComputable: () => { return getValue(total) > 0; },
|
|
60
|
+
loaded,
|
|
61
|
+
total,
|
|
62
|
+
});
|
|
63
|
+
EventTargetP.EventTarget_fire(target, event);
|
|
64
|
+
}
|
|
65
|
+
const ProgressEventE = isPolyfill.g["EventTarget"] ? isPolyfill.g["ProgressEvent"] : ProgressEventP;
|
|
66
|
+
|
|
67
|
+
exports.ProgressEvent = ProgressEventE;
|
|
68
|
+
exports.ProgressEventP = ProgressEventP;
|
|
69
|
+
exports.emitProcessEvent = emitProcessEvent;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var HeadersP = require('./HeadersP.js');
|
|
4
|
+
var AbortControllerP = require('./AbortControllerP.js');
|
|
5
|
+
var isPolyfill = require('./isPolyfill.js');
|
|
6
|
+
var BodyImpl = require('./BodyImpl.js');
|
|
7
|
+
require('./AbortSignalP.js');
|
|
8
|
+
require('./EventP.js');
|
|
9
|
+
require('./EventTargetP.js');
|
|
10
|
+
require('./convertor.js');
|
|
11
|
+
require('./BlobP.js');
|
|
12
|
+
require('./TextEncoderP.js');
|
|
13
|
+
require('./TextDecoderP.js');
|
|
14
|
+
require('./FormDataP.js');
|
|
15
|
+
require('./FileP.js');
|
|
16
|
+
|
|
17
|
+
/** @internal */ const state = Symbol( /* "RequestState" */);
|
|
18
|
+
class RequestP extends BodyImpl.BodyImpl {
|
|
19
|
+
constructor(...args) {
|
|
20
|
+
const [input, init] = args;
|
|
21
|
+
isPolyfill.checkArgsLength(args, 1, "Request");
|
|
22
|
+
super();
|
|
23
|
+
this[BodyImpl.bodyState].name = "Request";
|
|
24
|
+
this[state] = new RequestState();
|
|
25
|
+
const s = this[state];
|
|
26
|
+
let _init = init !== null && init !== void 0 ? init : {};
|
|
27
|
+
if (typeof _init !== "object") {
|
|
28
|
+
throw new TypeError("Failed to construct 'Request': The provided value is not of type 'RequestInit'.");
|
|
29
|
+
}
|
|
30
|
+
let body = _init.body;
|
|
31
|
+
if (isPolyfill.isPolyfillType("Request", input)) {
|
|
32
|
+
if (input.bodyUsed) {
|
|
33
|
+
throw new TypeError("Failed to construct 'Request': Cannot construct a Request with a Request object that has already been used.");
|
|
34
|
+
}
|
|
35
|
+
s.cache = input.cache;
|
|
36
|
+
s.credentials = input.credentials;
|
|
37
|
+
if (!_init.headers) {
|
|
38
|
+
s.headers = new HeadersP.HeadersP(input.headers);
|
|
39
|
+
}
|
|
40
|
+
s.method = input.method;
|
|
41
|
+
s.mode = input.mode;
|
|
42
|
+
let inputSignal = input[state].signal;
|
|
43
|
+
if (inputSignal) {
|
|
44
|
+
s.signal = inputSignal;
|
|
45
|
+
}
|
|
46
|
+
s.url = input.url;
|
|
47
|
+
let payload = BodyImpl.Body_toPayload(input);
|
|
48
|
+
if (!body && payload !== "") {
|
|
49
|
+
body = payload;
|
|
50
|
+
input[BodyImpl.bodyState].bodyUsed = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
s.url = "" + input;
|
|
55
|
+
}
|
|
56
|
+
if (_init.cache) {
|
|
57
|
+
s.cache = _init.cache;
|
|
58
|
+
}
|
|
59
|
+
if (_init.credentials) {
|
|
60
|
+
s.credentials = _init.credentials;
|
|
61
|
+
}
|
|
62
|
+
if (_init.headers) {
|
|
63
|
+
s.headers = new HeadersP.HeadersP(_init.headers);
|
|
64
|
+
}
|
|
65
|
+
if (_init.method) {
|
|
66
|
+
s.method = normalizeMethod(_init.method);
|
|
67
|
+
}
|
|
68
|
+
if (_init.mode) {
|
|
69
|
+
s.mode = _init.mode;
|
|
70
|
+
}
|
|
71
|
+
if (_init.signal) {
|
|
72
|
+
s.signal = _init.signal;
|
|
73
|
+
}
|
|
74
|
+
if ((this.method === "GET" || this.method === "HEAD") && body) {
|
|
75
|
+
throw new TypeError("Failed to construct 'Request': Request with GET/HEAD method cannot have body.");
|
|
76
|
+
}
|
|
77
|
+
BodyImpl.Body_init(this, body);
|
|
78
|
+
if (this.method === "GET" || this.method === "HEAD") {
|
|
79
|
+
if (_init.cache === "no-store" || _init.cache === "no-cache") {
|
|
80
|
+
// Search for a '_' parameter in the query string
|
|
81
|
+
let reParamSearch = /([?&])_=[^&]*/;
|
|
82
|
+
if (reParamSearch.test(this.url)) {
|
|
83
|
+
// If it already exists then set the value with the current time
|
|
84
|
+
s.url = this.url.replace(reParamSearch, "$1_=" + (new Date()).getTime());
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Otherwise add a new '_' parameter to the end with the current time
|
|
88
|
+
let reQueryString = /\?/;
|
|
89
|
+
s.url += (reQueryString.test(this.url) ? "&" : "?") + "_=" + (new Date()).getTime();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
get cache() { return this[state].cache; }
|
|
95
|
+
get credentials() { return this[state].credentials; }
|
|
96
|
+
get destination() { return this[state].destination; }
|
|
97
|
+
get headers() {
|
|
98
|
+
const s = this[state];
|
|
99
|
+
if (!s.headers) {
|
|
100
|
+
s.headers = new HeadersP.HeadersP();
|
|
101
|
+
}
|
|
102
|
+
return s.headers;
|
|
103
|
+
}
|
|
104
|
+
get integrity() { return this[state].integrity; }
|
|
105
|
+
get keepalive() { return this[state].keepalive; }
|
|
106
|
+
get method() { return this[state].method; }
|
|
107
|
+
get mode() { return this[state].mode; }
|
|
108
|
+
get redirect() { return this[state].redirect; }
|
|
109
|
+
get referrer() { return this[state].referrer; }
|
|
110
|
+
get referrerPolicy() { return this[state].referrerPolicy; }
|
|
111
|
+
get signal() {
|
|
112
|
+
const s = this[state];
|
|
113
|
+
if (!s.signal) {
|
|
114
|
+
s.signal = (new AbortControllerP.AbortControllerP()).signal;
|
|
115
|
+
}
|
|
116
|
+
return s.signal;
|
|
117
|
+
}
|
|
118
|
+
get url() { return this[state].url; }
|
|
119
|
+
clone() {
|
|
120
|
+
var _a;
|
|
121
|
+
if (this.bodyUsed) {
|
|
122
|
+
throw new TypeError("Failed to execute 'clone' on 'Request': Request body is already used");
|
|
123
|
+
}
|
|
124
|
+
return new RequestP(this, { body: (_a = BodyImpl.Body_toPayload(this)) !== null && _a !== void 0 ? _a : null });
|
|
125
|
+
}
|
|
126
|
+
/** @internal */ toString() { return "[object Request]"; }
|
|
127
|
+
/** @internal */ get [Symbol.toStringTag]() { return "Request"; }
|
|
128
|
+
/** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Request"] }; }
|
|
129
|
+
}
|
|
130
|
+
/** @internal */
|
|
131
|
+
class RequestState {
|
|
132
|
+
constructor() {
|
|
133
|
+
this.cache = "default";
|
|
134
|
+
this.credentials = "same-origin";
|
|
135
|
+
this.destination = "";
|
|
136
|
+
this.integrity = "";
|
|
137
|
+
this.keepalive = false;
|
|
138
|
+
this.method = "GET";
|
|
139
|
+
this.mode = "cors";
|
|
140
|
+
this.redirect = "follow";
|
|
141
|
+
this.referrer = "about:client";
|
|
142
|
+
this.referrerPolicy = "";
|
|
143
|
+
this.url = "";
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// HTTP methods whose capitalization should be normalized
|
|
147
|
+
const methods = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
148
|
+
/** @internal */
|
|
149
|
+
function normalizeMethod(method) {
|
|
150
|
+
let upcased = method.toUpperCase();
|
|
151
|
+
return methods.indexOf(upcased) > -1 ? upcased : method;
|
|
152
|
+
}
|
|
153
|
+
const RequestE = isPolyfill.g["Request"] || RequestP;
|
|
154
|
+
|
|
155
|
+
exports.Request = RequestE;
|
|
156
|
+
exports.RequestP = RequestP;
|
|
157
|
+
exports.normalizeMethod = normalizeMethod;
|
|
158
|
+
exports.requestState = state;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var HeadersP = require('./HeadersP.js');
|
|
4
|
+
var isPolyfill = require('./isPolyfill.js');
|
|
5
|
+
var BodyImpl = require('./BodyImpl.js');
|
|
6
|
+
require('./convertor.js');
|
|
7
|
+
require('./BlobP.js');
|
|
8
|
+
require('./TextEncoderP.js');
|
|
9
|
+
require('./TextDecoderP.js');
|
|
10
|
+
require('./FormDataP.js');
|
|
11
|
+
require('./FileP.js');
|
|
12
|
+
|
|
13
|
+
/** @internal */ const state = Symbol( /* "ResponseState" */);
|
|
14
|
+
class ResponseP extends BodyImpl.BodyImpl {
|
|
15
|
+
constructor(body, init) {
|
|
16
|
+
super();
|
|
17
|
+
this[BodyImpl.bodyState].name = "Response";
|
|
18
|
+
this[state] = new ResponseState();
|
|
19
|
+
const s = this[state];
|
|
20
|
+
let _init = init !== null && init !== void 0 ? init : {};
|
|
21
|
+
if (typeof _init !== "object") {
|
|
22
|
+
throw new TypeError("Failed to construct 'Response': The provided value is not of type 'ResponseInit'.");
|
|
23
|
+
}
|
|
24
|
+
let status = _init.status === undefined ? 200 : _init.status;
|
|
25
|
+
if (status < 200 || status > 500) {
|
|
26
|
+
throw new RangeError(`Failed to construct 'Response': The status provided (${+status}) is outside the range [200, 599].`);
|
|
27
|
+
}
|
|
28
|
+
if (_init.headers) {
|
|
29
|
+
s.headers = new HeadersP.HeadersP(_init.headers);
|
|
30
|
+
}
|
|
31
|
+
s.ok = status >= 200 && status < 300;
|
|
32
|
+
s.status = status;
|
|
33
|
+
s.statusText = _init.statusText === undefined ? "" : "" + _init.statusText;
|
|
34
|
+
BodyImpl.Body_init(this, body);
|
|
35
|
+
}
|
|
36
|
+
get headers() {
|
|
37
|
+
const s = this[state];
|
|
38
|
+
if (!s.headers) {
|
|
39
|
+
s.headers = new HeadersP.HeadersP();
|
|
40
|
+
}
|
|
41
|
+
return s.headers;
|
|
42
|
+
}
|
|
43
|
+
get ok() { return this[state].ok; }
|
|
44
|
+
get redirected() { return this[state].redirected; }
|
|
45
|
+
get status() { return this[state].status; }
|
|
46
|
+
get statusText() { return this[state].statusText; }
|
|
47
|
+
get type() { return this[state].type; }
|
|
48
|
+
get url() { return this[state].url; }
|
|
49
|
+
clone() {
|
|
50
|
+
if (this.bodyUsed) {
|
|
51
|
+
throw new TypeError("Failed to execute 'clone' on 'Response': Response body is already used");
|
|
52
|
+
}
|
|
53
|
+
let response = new ResponseP(BodyImpl.Body_toPayload(this), {
|
|
54
|
+
headers: new HeadersP.HeadersP(this.headers),
|
|
55
|
+
status: this.status,
|
|
56
|
+
statusText: this.statusText,
|
|
57
|
+
});
|
|
58
|
+
response[state].url = this.url;
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
static json(...args) {
|
|
62
|
+
const [data, init] = args;
|
|
63
|
+
isPolyfill.checkArgsLength(args, 1, "Response", "json");
|
|
64
|
+
let response = new ResponseP(typeof data === "string" ? data : JSON.stringify(data), init);
|
|
65
|
+
response.headers.set("Content-Type", "application/json");
|
|
66
|
+
return response;
|
|
67
|
+
}
|
|
68
|
+
static error() {
|
|
69
|
+
let response = new ResponseP(null, { status: 200, statusText: "" });
|
|
70
|
+
response[state].ok = false;
|
|
71
|
+
response[state].status = 0;
|
|
72
|
+
response[state].type = "error";
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
static redirect(...args) {
|
|
76
|
+
const [url, status = 301] = args;
|
|
77
|
+
isPolyfill.checkArgsLength(args, 1, "Response", "redirect");
|
|
78
|
+
if ([301, 302, 303, 307, 308].indexOf(status) === -1) {
|
|
79
|
+
throw new RangeError("Failed to execute 'redirect' on 'Response': Invalid status code");
|
|
80
|
+
}
|
|
81
|
+
return new ResponseP(null, { status, headers: { location: "" + url } });
|
|
82
|
+
}
|
|
83
|
+
/** @internal */ toString() { return "[object Response]"; }
|
|
84
|
+
/** @internal */ get [Symbol.toStringTag]() { return "Response"; }
|
|
85
|
+
/** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Response"] }; }
|
|
86
|
+
}
|
|
87
|
+
/** @internal */
|
|
88
|
+
class ResponseState {
|
|
89
|
+
constructor() {
|
|
90
|
+
this.ok = true;
|
|
91
|
+
this.redirected = false;
|
|
92
|
+
this.status = 200;
|
|
93
|
+
this.statusText = "";
|
|
94
|
+
this.type = "default";
|
|
95
|
+
this.url = "";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const ResponseE = isPolyfill.g["Response"] || ResponseP;
|
|
99
|
+
|
|
100
|
+
exports.Response = ResponseE;
|
|
101
|
+
exports.ResponseP = ResponseP;
|
|
102
|
+
exports.responseState = state;
|