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.
Files changed (58) hide show
  1. package/dist/cjs/AbortControllerP.js +31 -0
  2. package/dist/cjs/AbortSignalP.js +126 -0
  3. package/dist/cjs/BlobP.js +131 -0
  4. package/dist/cjs/BodyImpl.js +142 -0
  5. package/dist/cjs/CloseEventP.js +38 -0
  6. package/dist/cjs/CustomEventP.js +35 -0
  7. package/dist/cjs/EventP.js +173 -0
  8. package/dist/cjs/EventTargetP.js +176 -0
  9. package/dist/cjs/FileP.js +36 -0
  10. package/dist/cjs/FileReaderP.js +151 -0
  11. package/dist/cjs/FormDataP.js +250 -0
  12. package/dist/cjs/HeadersP.js +176 -0
  13. package/dist/cjs/MessageEventP.js +64 -0
  14. package/dist/cjs/ProgressEventP.js +69 -0
  15. package/dist/cjs/RequestP.js +158 -0
  16. package/dist/cjs/ResponseP.js +102 -0
  17. package/dist/cjs/TextDecoderP.js +186 -0
  18. package/dist/cjs/TextEncoderP.js +122 -0
  19. package/dist/cjs/URLSearchParamsP.js +230 -0
  20. package/dist/cjs/WebSocketP.js +238 -0
  21. package/dist/cjs/XMLHttpRequestP.js +567 -0
  22. package/dist/cjs/convertor.js +83 -0
  23. package/dist/cjs/fetchP.js +115 -0
  24. package/dist/cjs/index.js +80 -0
  25. package/dist/cjs/isPolyfill.js +56 -0
  26. package/dist/cjs/platform.js +33 -0
  27. package/dist/esm/AbortControllerP.js +28 -0
  28. package/dist/esm/AbortSignalP.js +121 -0
  29. package/dist/esm/BlobP.js +124 -0
  30. package/dist/esm/BodyImpl.js +137 -0
  31. package/dist/esm/CloseEventP.js +35 -0
  32. package/dist/esm/CustomEventP.js +32 -0
  33. package/dist/esm/EventP.js +165 -0
  34. package/dist/esm/EventTargetP.js +168 -0
  35. package/dist/esm/FileP.js +33 -0
  36. package/dist/esm/FileReaderP.js +148 -0
  37. package/dist/esm/FormDataP.js +245 -0
  38. package/dist/esm/HeadersP.js +170 -0
  39. package/dist/esm/MessageEventP.js +61 -0
  40. package/dist/esm/ProgressEventP.js +65 -0
  41. package/dist/esm/RequestP.js +153 -0
  42. package/dist/esm/ResponseP.js +98 -0
  43. package/dist/esm/TextDecoderP.js +183 -0
  44. package/dist/esm/TextEncoderP.js +119 -0
  45. package/dist/esm/URLSearchParamsP.js +227 -0
  46. package/dist/esm/WebSocketP.js +234 -0
  47. package/dist/esm/XMLHttpRequestP.js +563 -0
  48. package/dist/esm/convertor.js +80 -0
  49. package/dist/esm/fetchP.js +111 -0
  50. package/dist/esm/index.js +25 -0
  51. package/dist/esm/isPolyfill.js +48 -0
  52. package/dist/esm/platform.js +31 -0
  53. package/dist/index.d.ts +1 -5
  54. package/package.json +7 -10
  55. package/dist/index.cjs.js +0 -3252
  56. package/dist/index.cjs.min.js +0 -1
  57. package/dist/index.esm.js +0 -3212
  58. package/dist/index.esm.min.js +0 -1
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var isPolyfill = require('./isPolyfill.js');
4
+ var AbortSignalP = require('./AbortSignalP.js');
5
+ require('./EventP.js');
6
+ require('./EventTargetP.js');
7
+
8
+ /** @internal */
9
+ const state = Symbol( /* "AbortControllerState" */);
10
+ class AbortControllerP {
11
+ constructor() {
12
+ this[state] = new AbortControllerState();
13
+ }
14
+ get signal() { return this[state].signal; }
15
+ abort(reason) {
16
+ AbortSignalP.AbortSignal_abort(this[state].signal, reason);
17
+ }
18
+ /** @internal */ toString() { return "[object AbortController]"; }
19
+ /** @internal */ get [Symbol.toStringTag]() { return "AbortController"; }
20
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["AbortController"] }; }
21
+ }
22
+ /** @internal */
23
+ class AbortControllerState {
24
+ constructor() {
25
+ this.signal = AbortSignalP.createAbortSignal();
26
+ }
27
+ }
28
+ const AbortControllerE = isPolyfill.g["AbortController"] || AbortControllerP;
29
+
30
+ exports.AbortController = AbortControllerE;
31
+ exports.AbortControllerP = AbortControllerP;
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ var isPolyfill = require('./isPolyfill.js');
4
+ var EventP = require('./EventP.js');
5
+ var EventTargetP = require('./EventTargetP.js');
6
+
7
+ var _a;
8
+ /** @internal */
9
+ const state = Symbol( /* "AbortSignalState" */);
10
+ class AbortSignalP extends EventTargetP.EventTargetP {
11
+ static abort(reason) {
12
+ let signal = createAbortSignal();
13
+ AbortSignal_abort(signal, reason, false);
14
+ return signal;
15
+ }
16
+ static any(...args) {
17
+ const [signals] = args;
18
+ isPolyfill.checkArgsLength(args, 1, "AbortSignal", "any");
19
+ if (!(Array.isArray(signals) || (signals && typeof signals === "object" && Symbol.iterator in signals))) {
20
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': The provided value cannot be converted to a sequence.");
21
+ }
22
+ let _signals = Array.isArray(signals) ? signals : Array.from(signals);
23
+ _signals.forEach(sig => {
24
+ if (!isPolyfill.isPolyfillType("EventTarget", sig)) {
25
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': Failed to convert value to 'AbortSignal'.");
26
+ }
27
+ });
28
+ let signal = createAbortSignal();
29
+ let abortedSignal = _signals.find(x => x.aborted);
30
+ if (abortedSignal) {
31
+ AbortSignal_abort(signal, abortedSignal.reason, false);
32
+ }
33
+ else {
34
+ function abortFn(ev) {
35
+ for (let i = 0; i < _signals.length; ++i) {
36
+ let sig = _signals[i];
37
+ sig.removeEventListener("abort", abortFn);
38
+ }
39
+ AbortSignal_abort(signal, this.reason, true, ev.isTrusted);
40
+ }
41
+ for (let i = 0; i < _signals.length; ++i) {
42
+ let sig = _signals[i];
43
+ sig.addEventListener("abort", abortFn);
44
+ }
45
+ }
46
+ return signal;
47
+ }
48
+ static timeout(...args) {
49
+ const [milliseconds] = args;
50
+ isPolyfill.checkArgsLength(args, 1, "AbortSignal", "timeout");
51
+ if (!(milliseconds >= 0)) {
52
+ throw new TypeError("Failed to execute 'timeout' on 'AbortSignal': Value is outside the 'unsigned long long' value range.");
53
+ }
54
+ let signal = createAbortSignal();
55
+ setTimeout(() => {
56
+ AbortSignal_abort(signal, new isPolyfill.MPException("signal timed out", "TimeoutError"));
57
+ }, milliseconds);
58
+ return signal;
59
+ }
60
+ /** @internal */
61
+ constructor() {
62
+ if (new.target === AbortSignalP) {
63
+ throw new TypeError("Failed to construct 'AbortSignal': Illegal constructor");
64
+ }
65
+ super();
66
+ this[state] = new AbortSignalState(this);
67
+ }
68
+ get aborted() { return this[state].aborted; }
69
+ get reason() { return this[state].reason; }
70
+ throwIfAborted() {
71
+ if (this.aborted) {
72
+ throw this.reason;
73
+ }
74
+ }
75
+ get onabort() { return this[state].onabort; }
76
+ set onabort(value) {
77
+ this[state].onabort = value;
78
+ EventTargetP.attachFn(this, "abort", value, this[state][_handlers].onabort);
79
+ }
80
+ /** @internal */ toString() { return "[object AbortSignal]"; }
81
+ /** @internal */ get [Symbol.toStringTag]() { return "AbortSignal"; }
82
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["AbortSignal", "EventTarget"] }; }
83
+ }
84
+ /** @internal */
85
+ const _handlers = Symbol();
86
+ /** @internal */
87
+ class AbortSignalState {
88
+ constructor(target) {
89
+ this.aborted = false;
90
+ this.reason = undefined;
91
+ this[_a] = getHandlers(this);
92
+ this.onabort = null;
93
+ this.target = target;
94
+ }
95
+ }
96
+ _a = _handlers;
97
+ /** @internal */
98
+ function AbortSignal_abort(signal, reason, notify = true, isTrusted = true) {
99
+ const s = signal[state];
100
+ if (!s.aborted) {
101
+ s.aborted = true;
102
+ s.reason = reason !== null && reason !== void 0 ? reason : (new isPolyfill.MPException("signal is aborted without reason", "AbortError"));
103
+ if (notify) {
104
+ let evt = EventP.createInnerEvent(signal, "abort", undefined, isTrusted);
105
+ EventTargetP.EventTarget_fire(signal, evt);
106
+ }
107
+ }
108
+ }
109
+ function getHandlers(s) {
110
+ return {
111
+ onabort: (ev) => { EventTargetP.executeFn(s.target, s.onabort, ev); },
112
+ };
113
+ }
114
+ /** @internal */
115
+ function createAbortSignal() {
116
+ let signal = Object.create(AbortSignalP.prototype);
117
+ signal[EventTargetP.eventTargetState] = new EventTargetP.EventTargetState(signal);
118
+ signal[state] = new AbortSignalState(signal);
119
+ return signal;
120
+ }
121
+ const AbortSignalE = isPolyfill.g["AbortSignal"] || AbortSignalP;
122
+
123
+ exports.AbortSignal = AbortSignalE;
124
+ exports.AbortSignalP = AbortSignalP;
125
+ exports.AbortSignal_abort = AbortSignal_abort;
126
+ exports.createAbortSignal = createAbortSignal;
@@ -0,0 +1,131 @@
1
+ 'use strict';
2
+
3
+ var TextEncoderP = require('./TextEncoderP.js');
4
+ var TextDecoderP = require('./TextDecoderP.js');
5
+ var isPolyfill = require('./isPolyfill.js');
6
+
7
+ /** @internal */
8
+ const state = Symbol( /* "BlobState" */);
9
+ class BlobP {
10
+ constructor(blobParts = [], options) {
11
+ if (!(Array.isArray(blobParts) || (blobParts && typeof blobParts === "object" && Symbol.iterator in blobParts))) {
12
+ throw new TypeError("Failed to construct 'Blob/File': The provided value cannot be converted to a sequence.");
13
+ }
14
+ let _blobParts = Array.isArray(blobParts) ? blobParts : Array.from(blobParts);
15
+ let chunks = [];
16
+ for (let i = 0; i < _blobParts.length; ++i) {
17
+ let chunk = _blobParts[i];
18
+ if (isPolyfill.isPolyfillType("Blob", chunk)) {
19
+ chunks.push(chunk[state][_buffer]);
20
+ }
21
+ else if (isPolyfill.isArrayBuffer(chunk) || ArrayBuffer.isView(chunk)) {
22
+ chunks.push(BufferSource_toUint8Array(chunk));
23
+ }
24
+ else {
25
+ chunks.push(encode("" + chunk));
26
+ }
27
+ }
28
+ this[state] = new BlobState(concat(chunks));
29
+ const s = this[state];
30
+ s.size = s[_buffer].length;
31
+ let rawType = "" + ((options === null || options === void 0 ? void 0 : options.type) || "");
32
+ s.type = /[^\u0020-\u007E]/.test(rawType) ? "" : rawType.toLowerCase();
33
+ }
34
+ get size() { return this[state].size; }
35
+ get type() { return this[state].type; }
36
+ arrayBuffer() {
37
+ return Promise.resolve(clone(this[state][_buffer].buffer).buffer);
38
+ }
39
+ bytes() {
40
+ return Promise.resolve(clone(this[state][_buffer].buffer));
41
+ }
42
+ slice(start, end, contentType) {
43
+ let sliced = this[state][_buffer].slice(start !== null && start !== void 0 ? start : 0, end !== null && end !== void 0 ? end : this[state][_buffer].length); // × WeChat 2.5.0
44
+ return new BlobP([sliced], { type: "" + (contentType !== null && contentType !== void 0 ? contentType : "") });
45
+ }
46
+ stream() {
47
+ throw new TypeError("Failed to execute 'stream' on 'Blob': method not implemented.");
48
+ }
49
+ text() {
50
+ return Promise.resolve(decode(this[state][_buffer]));
51
+ }
52
+ /** @internal */ toString() { return "[object Blob]"; }
53
+ /** @internal */ get [Symbol.toStringTag]() { return "Blob"; }
54
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Blob"] }; }
55
+ }
56
+ /** @internal */
57
+ const _buffer = Symbol();
58
+ /** @internal */
59
+ class BlobState {
60
+ constructor(buffer) {
61
+ this.size = 0;
62
+ this.type = "";
63
+ this[_buffer] = buffer;
64
+ }
65
+ }
66
+ /** @internal */
67
+ function Blob_toUint8Array(blob) {
68
+ return blob[state][_buffer];
69
+ }
70
+ function BufferSource_toUint8Array(buf) {
71
+ return isPolyfill.isArrayBuffer(buf)
72
+ ? new Uint8Array(buf)
73
+ : new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
74
+ }
75
+ function clone(buf) {
76
+ let sourceArray = BufferSource_toUint8Array(buf);
77
+ let cloneArray = new Uint8Array(new ArrayBuffer(sourceArray.byteLength));
78
+ cloneArray.set(sourceArray);
79
+ return cloneArray;
80
+ }
81
+ function concat(chunks) {
82
+ let totalByteLength = chunks.reduce((acc, cur) => acc + cur.byteLength, 0);
83
+ let result = new Uint8Array(totalByteLength);
84
+ chunks.reduce((offset, chunk) => {
85
+ result.set(chunk, offset);
86
+ return offset + chunk.byteLength;
87
+ }, 0);
88
+ return result;
89
+ }
90
+ /** @internal */
91
+ function encode(str) {
92
+ let encoder = new TextEncoderP.TextEncoderP();
93
+ return encoder.encode(str);
94
+ }
95
+ /** @internal */
96
+ function decode(buf) {
97
+ let decoder = new TextDecoderP.TextDecoderP();
98
+ return decoder.decode(buf);
99
+ }
100
+ /** @internal */
101
+ function Uint8Array_toBase64(input) {
102
+ let byteToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
103
+ let output = [];
104
+ for (var i = 0; i < input.length; i += 3) {
105
+ let byte1 = input[i];
106
+ let haveByte2 = i + 1 < input.length;
107
+ let byte2 = haveByte2 ? input[i + 1] : 0;
108
+ let haveByte3 = i + 2 < input.length;
109
+ let byte3 = haveByte3 ? input[i + 2] : 0;
110
+ let outByte1 = byte1 >> 2;
111
+ let outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);
112
+ let outByte3 = ((byte2 & 0x0F) << 2) | (byte3 >> 6);
113
+ let outByte4 = byte3 & 0x3F;
114
+ if (!haveByte3) {
115
+ outByte4 = 64;
116
+ if (!haveByte2) {
117
+ outByte3 = 64;
118
+ }
119
+ }
120
+ output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);
121
+ }
122
+ return output.join("");
123
+ }
124
+ const BlobE = isPolyfill.g["Blob"] || BlobP;
125
+
126
+ exports.Blob = BlobE;
127
+ exports.BlobP = BlobP;
128
+ exports.Blob_toUint8Array = Blob_toUint8Array;
129
+ exports.Uint8Array_toBase64 = Uint8Array_toBase64;
130
+ exports.decode = decode;
131
+ exports.encode = encode;
@@ -0,0 +1,142 @@
1
+ 'use strict';
2
+
3
+ var isPolyfill = require('./isPolyfill.js');
4
+ var convertor = require('./convertor.js');
5
+ var FormDataP = require('./FormDataP.js');
6
+ require('./BlobP.js');
7
+ require('./TextEncoderP.js');
8
+ require('./TextDecoderP.js');
9
+ require('./FileP.js');
10
+
11
+ var _a;
12
+ /** @internal */ const state = Symbol( /* "BodyState" */);
13
+ class BodyImpl {
14
+ /** @internal */
15
+ constructor() {
16
+ if (new.target === BodyImpl) {
17
+ throw new TypeError("Failed to construct 'Body': Illegal constructor");
18
+ }
19
+ this[state] = new BodyState();
20
+ }
21
+ get body() {
22
+ if (!this[state][_body]) {
23
+ return null;
24
+ }
25
+ throw new TypeError(`Failed to access 'body' on '${this[state].name}': property not implemented.`);
26
+ }
27
+ get bodyUsed() { return this[state].bodyUsed; }
28
+ ;
29
+ arrayBuffer() {
30
+ const kind = "arrayBuffer";
31
+ return consumed(this, kind) || read(this, kind);
32
+ }
33
+ blob() {
34
+ const kind = "blob";
35
+ return consumed(this, kind) || read(this, kind);
36
+ }
37
+ bytes() {
38
+ const kind = "bytes";
39
+ return consumed(this, kind) || read(this, kind);
40
+ }
41
+ formData() {
42
+ const kind = "formData";
43
+ return consumed(this, kind) || read(this, kind);
44
+ }
45
+ json() {
46
+ const kind = "json";
47
+ return consumed(this, kind) || read(this, kind);
48
+ }
49
+ text() {
50
+ const kind = "text";
51
+ return consumed(this, kind) || read(this, kind);
52
+ }
53
+ /** @internal */ toString() { return "[object Body]"; }
54
+ /** @internal */ get [Symbol.toStringTag]() { return "Body"; }
55
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Body"] }; }
56
+ }
57
+ /** @internal */
58
+ const _body = Symbol();
59
+ /** @internal */
60
+ class BodyState {
61
+ constructor() {
62
+ this.name = "Body";
63
+ this.bodyUsed = false;
64
+ this[_a] = "";
65
+ }
66
+ }
67
+ _a = _body;
68
+ /** @internal */
69
+ function Body_init(body, payload) {
70
+ const b = body;
71
+ if (isPolyfill.isObjectType("ReadableStream", payload)) {
72
+ throw new TypeError(`Failed to construct '${b[state].name}': ReadableStream not implemented.`);
73
+ }
74
+ b[state][_body] = convertor.convert(payload, true, type => { if (!b.headers.has("Content-Type")) {
75
+ b.headers.set("Content-Type", type);
76
+ } });
77
+ }
78
+ /** @internal */
79
+ function Body_toPayload(body) {
80
+ return body[state][_body];
81
+ }
82
+ function read(body, kind) {
83
+ return new Promise((resolve, reject) => {
84
+ try {
85
+ resolve(readSync(body, kind));
86
+ }
87
+ catch (e) {
88
+ reject(e);
89
+ }
90
+ });
91
+ }
92
+ function readSync(body, kind) {
93
+ const payload = body[state][_body];
94
+ if (kind === "arrayBuffer") {
95
+ return convertor.convertBack("arraybuffer", payload);
96
+ }
97
+ else if (kind === "blob") {
98
+ return convertor.convertBack("blob", payload);
99
+ }
100
+ else if (kind === "bytes") {
101
+ let arrayBuffer = convertor.convertBack("arraybuffer", payload);
102
+ return new Uint8Array(arrayBuffer);
103
+ }
104
+ else if (kind === "formData") {
105
+ const extractBoundary = (contentType) => {
106
+ if (!contentType) {
107
+ return;
108
+ }
109
+ if (!/multipart\/form-data/i.test(contentType)) {
110
+ return;
111
+ }
112
+ let boundaryMatch = contentType.match(/boundary\s*=\s*([^;]+)/i);
113
+ if (boundaryMatch && boundaryMatch[1]) {
114
+ let boundary = boundaryMatch[1].trim();
115
+ return boundary.replace(/^["']|["']$/g, "");
116
+ }
117
+ };
118
+ let text = convertor.convertBack("text", payload);
119
+ let boundary = extractBoundary(body.headers.get("Content-Type")) || "";
120
+ return FormDataP.createFormDataFromBinaryText(text, boundary);
121
+ }
122
+ else if (kind === "json") {
123
+ return convertor.convertBack("json", payload);
124
+ }
125
+ else {
126
+ return convertor.convertBack("text", payload);
127
+ }
128
+ }
129
+ function consumed(body, kind) {
130
+ const s = body[state];
131
+ if (!s[_body])
132
+ return;
133
+ if (s.bodyUsed) {
134
+ return Promise.reject(new TypeError(`Failed to execute '${kind}' on '${s.name}': body stream already read`));
135
+ }
136
+ s.bodyUsed = true;
137
+ }
138
+
139
+ exports.BodyImpl = BodyImpl;
140
+ exports.Body_init = Body_init;
141
+ exports.Body_toPayload = Body_toPayload;
142
+ exports.bodyState = state;
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var EventP = require('./EventP.js');
4
+ var isPolyfill = require('./isPolyfill.js');
5
+
6
+ /** @internal */
7
+ const state = Symbol( /* "CloseEventState" */);
8
+ class CloseEventP extends EventP.EventP {
9
+ constructor(type, eventInitDict) {
10
+ var _a;
11
+ super(type, eventInitDict);
12
+ this[state] = new CloseEventState();
13
+ const s = this[state];
14
+ let _code = Number((_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.code) !== null && _a !== void 0 ? _a : 0);
15
+ s.code = isNaN(_code) ? 0 : _code;
16
+ if ((eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.reason) !== undefined)
17
+ s.reason = "" + eventInitDict.reason;
18
+ s.wasClean = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.wasClean);
19
+ }
20
+ get code() { return this[state].code; }
21
+ get reason() { return this[state].reason; }
22
+ get wasClean() { return this[state].wasClean; }
23
+ /** @internal */ toString() { return "[object CloseEvent]"; }
24
+ /** @internal */ get [Symbol.toStringTag]() { return "CloseEvent"; }
25
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["CloseEvent", "Event"] }; }
26
+ }
27
+ /** @internal */
28
+ class CloseEventState {
29
+ constructor() {
30
+ this.code = 0;
31
+ this.reason = "";
32
+ this.wasClean = false;
33
+ }
34
+ }
35
+ const CloseEventE = isPolyfill.g["EventTarget"] ? isPolyfill.g["CloseEvent"] : CloseEventP;
36
+
37
+ exports.CloseEvent = CloseEventE;
38
+ exports.CloseEventP = CloseEventP;
@@ -0,0 +1,35 @@
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( /* "CustomEventState" */);
9
+ class CustomEventP extends EventP.EventP {
10
+ constructor(type, eventInitDict) {
11
+ var _a;
12
+ super(type, eventInitDict);
13
+ this[state] = new CustomEventState();
14
+ this[state].detail = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.detail) !== null && _a !== void 0 ? _a : null;
15
+ }
16
+ get detail() { return this[state].detail; }
17
+ initCustomEvent(...args) {
18
+ const [type, bubbles, cancelable, detail] = args;
19
+ isPolyfill.checkArgsLength(args, 1, "CustomEvent", "initCustomEvent");
20
+ if (EventP.Event_getEtField(this, dispatched))
21
+ return;
22
+ this.initEvent(type, bubbles, cancelable);
23
+ this[state].detail = detail !== null && detail !== void 0 ? detail : null;
24
+ }
25
+ /** @internal */ toString() { return "[object CustomEvent]"; }
26
+ /** @internal */ get [Symbol.toStringTag]() { return "CustomEvent"; }
27
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["CustomEvent", "Event"] }; }
28
+ }
29
+ /** @internal */
30
+ class CustomEventState {
31
+ }
32
+ const CustomEventE = isPolyfill.g["EventTarget"] ? isPolyfill.g["CustomEvent"] : CustomEventP;
33
+
34
+ exports.CustomEvent = CustomEventE;
35
+ exports.CustomEventP = CustomEventP;
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ var isPolyfill = require('./isPolyfill.js');
4
+
5
+ var _a, _b, _c, _d, _e;
6
+ /** @internal */ const state = Symbol( /* "EventState" */);
7
+ class EventP {
8
+ static get NONE() { return 0; }
9
+ static get CAPTURING_PHASE() { return 1; }
10
+ static get AT_TARGET() { return 2; }
11
+ static get BUBBLING_PHASE() { return 3; }
12
+ constructor(...args) {
13
+ const [type, eventInitDict] = args;
14
+ isPolyfill.checkArgsLength(args, 1, new.target.name);
15
+ this[state] = new EventState();
16
+ const s = this[state];
17
+ s.type = "" + type;
18
+ s.bubbles = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.bubbles);
19
+ s.cancelable = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.cancelable);
20
+ s.composed = !!(eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.composed);
21
+ Object.defineProperty(this, "isTrusted", {
22
+ enumerable: true,
23
+ get: (function isTrusted() { return this[state][_isTrusted]; }).bind(this),
24
+ });
25
+ }
26
+ get type() { return this[state].type; }
27
+ get bubbles() { return this[state].bubbles; }
28
+ get cancelable() { return this[state].cancelable; }
29
+ get composed() { return this[state].composed; }
30
+ get target() { return this[state].target; }
31
+ get currentTarget() { return this[state].currentTarget; }
32
+ get eventPhase() { return this[state].eventPhase; }
33
+ get NONE() { return 0; }
34
+ get CAPTURING_PHASE() { return 1; }
35
+ get AT_TARGET() { return 2; }
36
+ get BUBBLING_PHASE() { return 3; }
37
+ get srcElement() { return this[state].target; }
38
+ get cancelBubble() { return this[state].cancelBubble; }
39
+ set cancelBubble(value) { this[state].cancelBubble = !!value; }
40
+ get defaultPrevented() { return this[state].defaultPrevented; }
41
+ get returnValue() { return this[state].returnValue; }
42
+ set returnValue(value) { if (!value) {
43
+ this.preventDefault();
44
+ } }
45
+ get timeStamp() { return this[state].timeStamp; }
46
+ composedPath() {
47
+ let path = !!this.target ? [this.target] : [];
48
+ if (!!this.currentTarget && this.currentTarget !== this.target)
49
+ path.push(this.currentTarget);
50
+ return path;
51
+ }
52
+ initEvent(...args) {
53
+ const [type, bubbles, cancelable] = args;
54
+ isPolyfill.checkArgsLength(args, 1, "Event", "initEvent");
55
+ const s = this[state];
56
+ if (s[_dispatched])
57
+ return;
58
+ s.type = "" + type;
59
+ s.bubbles = !!bubbles;
60
+ s.cancelable = !!cancelable;
61
+ }
62
+ preventDefault() {
63
+ const s = this[state];
64
+ if (s[_passive]) {
65
+ console.warn(`Ignoring 'preventDefault()' call on event of type '${this.type}' from a listener registered as 'passive'.`);
66
+ return;
67
+ }
68
+ if (this.cancelable) {
69
+ s[_preventDefaultCalled] = true;
70
+ s.defaultPrevented = true;
71
+ s.returnValue = false;
72
+ }
73
+ }
74
+ stopImmediatePropagation() {
75
+ this[state][_stopImmediatePropagationCalled] = true;
76
+ this.cancelBubble = true;
77
+ }
78
+ stopPropagation() {
79
+ this.cancelBubble = true;
80
+ }
81
+ /** @internal */ toString() { return "[object Event]"; }
82
+ /** @internal */ get [Symbol.toStringTag]() { return "Event"; }
83
+ /** @internal */ get isPolyfill() { return { symbol: isPolyfill.polyfill, hierarchy: ["Event"] }; }
84
+ }
85
+ /** @internal */ const _timeStamp = (new Date()).getTime();
86
+ /** @internal */ const _isTrusted = Symbol();
87
+ /** @internal */ const _passive = Symbol();
88
+ /** @internal */ const _dispatched = Symbol();
89
+ /** @internal */ const _preventDefaultCalled = Symbol();
90
+ /** @internal */ const _stopImmediatePropagationCalled = Symbol();
91
+ /** @internal */
92
+ class EventState {
93
+ constructor() {
94
+ this.type = "";
95
+ this.bubbles = false;
96
+ this.cancelable = false;
97
+ this.composed = false;
98
+ this.target = null;
99
+ this.currentTarget = null;
100
+ this.eventPhase = 0 /* NONE */;
101
+ this.cancelBubble = false;
102
+ this.defaultPrevented = false;
103
+ this.returnValue = true;
104
+ this.timeStamp = (new Date()).getTime() - _timeStamp;
105
+ this[_a] = false;
106
+ this[_b] = false;
107
+ this[_c] = false;
108
+ this[_d] = false;
109
+ this[_e] = false;
110
+ }
111
+ }
112
+ _a = _isTrusted, _b = _passive, _c = _dispatched, _d = _preventDefaultCalled, _e = _stopImmediatePropagationCalled;
113
+ /** @internal */
114
+ function Event_setTrusted(event, isTrusted) {
115
+ Object.defineProperty(event[state], _isTrusted, {
116
+ value: isTrusted,
117
+ writable: true,
118
+ enumerable: true,
119
+ configurable: true,
120
+ });
121
+ }
122
+ const passive = 0;
123
+ const dispatched = 1;
124
+ const preventDefaultCalled = 2;
125
+ const stopImmediatePropagationCalled = 3;
126
+ /** @internal */
127
+ function Event_getEtField(event, field) {
128
+ const s = event[state];
129
+ switch (field) {
130
+ case passive:
131
+ return s[_passive];
132
+ case dispatched:
133
+ return s[_dispatched];
134
+ case preventDefaultCalled:
135
+ return s[_preventDefaultCalled];
136
+ case stopImmediatePropagationCalled:
137
+ return s[_stopImmediatePropagationCalled];
138
+ }
139
+ }
140
+ /** @internal */
141
+ function Event_setEtField(event, field, value) {
142
+ const s = event[state];
143
+ switch (field) {
144
+ case passive:
145
+ s[_passive] = value;
146
+ break;
147
+ case dispatched:
148
+ s[_dispatched] = value;
149
+ break;
150
+ case preventDefaultCalled:
151
+ s[_preventDefaultCalled] = value;
152
+ break;
153
+ case stopImmediatePropagationCalled:
154
+ s[_stopImmediatePropagationCalled] = value;
155
+ break;
156
+ }
157
+ }
158
+ /** @internal */
159
+ function createInnerEvent(target, type, eventInitDict, isTrusted = true) {
160
+ let event = new EventP(type, eventInitDict);
161
+ event[state].target = target;
162
+ event[state][_isTrusted] = isTrusted;
163
+ return event;
164
+ }
165
+ const EventE = isPolyfill.g["EventTarget"] ? isPolyfill.g["Event"] : EventP;
166
+
167
+ exports.Event = EventE;
168
+ exports.EventP = EventP;
169
+ exports.Event_getEtField = Event_getEtField;
170
+ exports.Event_setEtField = Event_setEtField;
171
+ exports.Event_setTrusted = Event_setTrusted;
172
+ exports.createInnerEvent = createInnerEvent;
173
+ exports.eventState = state;