fetch-xhr-shim 0.0.1-beta

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 (51) hide show
  1. package/dist/cjs/dev.js +55 -0
  2. package/dist/cjs/encoding/TextDecoderP.js +179 -0
  3. package/dist/cjs/encoding/TextEncoderP.js +121 -0
  4. package/dist/cjs/event-system/AbortControllerP.js +28 -0
  5. package/dist/cjs/event-system/AbortSignalP.js +117 -0
  6. package/dist/cjs/event-system/CustomEventP.js +35 -0
  7. package/dist/cjs/event-system/EventP.js +125 -0
  8. package/dist/cjs/event-system/EventTargetP.js +181 -0
  9. package/dist/cjs/event-system/ProgressEventP.js +54 -0
  10. package/dist/cjs/fetch-api/BodyImpl.js +176 -0
  11. package/dist/cjs/fetch-api/HeadersP.js +184 -0
  12. package/dist/cjs/fetch-api/RequestP.js +188 -0
  13. package/dist/cjs/fetch-api/ResponseP.js +93 -0
  14. package/dist/cjs/fetch-api/fetchP.js +129 -0
  15. package/dist/cjs/file-system/BlobP.js +171 -0
  16. package/dist/cjs/file-system/FileP.js +53 -0
  17. package/dist/cjs/file-system/FileReaderP.js +201 -0
  18. package/dist/cjs/fixes.js +243 -0
  19. package/dist/cjs/index.js +59 -0
  20. package/dist/cjs/network/FormDataP.js +308 -0
  21. package/dist/cjs/network/URLSearchParamsP.js +235 -0
  22. package/dist/cjs/polyfill.js +87 -0
  23. package/dist/cjs/utils.js +70 -0
  24. package/dist/dev.d.ts +145 -0
  25. package/dist/esm/dev.js +13 -0
  26. package/dist/esm/encoding/TextDecoderP.js +175 -0
  27. package/dist/esm/encoding/TextEncoderP.js +118 -0
  28. package/dist/esm/event-system/AbortControllerP.js +25 -0
  29. package/dist/esm/event-system/AbortSignalP.js +112 -0
  30. package/dist/esm/event-system/CustomEventP.js +32 -0
  31. package/dist/esm/event-system/EventP.js +121 -0
  32. package/dist/esm/event-system/EventTargetP.js +174 -0
  33. package/dist/esm/event-system/ProgressEventP.js +51 -0
  34. package/dist/esm/fetch-api/BodyImpl.js +172 -0
  35. package/dist/esm/fetch-api/HeadersP.js +176 -0
  36. package/dist/esm/fetch-api/RequestP.js +184 -0
  37. package/dist/esm/fetch-api/ResponseP.js +90 -0
  38. package/dist/esm/fetch-api/fetchP.js +125 -0
  39. package/dist/esm/file-system/BlobP.js +164 -0
  40. package/dist/esm/file-system/FileP.js +50 -0
  41. package/dist/esm/file-system/FileReaderP.js +197 -0
  42. package/dist/esm/fixes.js +239 -0
  43. package/dist/esm/index.js +17 -0
  44. package/dist/esm/network/FormDataP.js +301 -0
  45. package/dist/esm/network/URLSearchParamsP.js +231 -0
  46. package/dist/esm/polyfill.js +85 -0
  47. package/dist/esm/utils.js +60 -0
  48. package/dist/fetch-xhr-shim.cjs.min.js +1 -0
  49. package/dist/fetch-xhr-shim.esm.min.js +1 -0
  50. package/dist/index.d.ts +300 -0
  51. package/package.json +59 -0
package/dist/dev.d.ts ADDED
@@ -0,0 +1,145 @@
1
+ declare function isArrayBuffer(value: unknown): value is ArrayBuffer;
2
+
3
+ declare function EventTarget_dispatchEvent(target: EventTarget, event: Event): boolean;
4
+ declare function attachFn<T extends EventTarget & Record<`on${K}`, ((ev: any) => any) | null>, K extends string>(target: T, handlers: Record<`on${K}`, (ev: any) => void>): (type: K) => void;
5
+ declare function executeFn(target: EventTarget, cb: Function | null, ev: Event): void;
6
+ declare function isEventTarget(value: unknown): value is EventTarget;
7
+
8
+ declare class EventP implements Event {
9
+ static get NONE(): 0;
10
+ static get CAPTURING_PHASE(): 1;
11
+ static get AT_TARGET(): 2;
12
+ static get BUBBLING_PHASE(): 3;
13
+ constructor(type: string, eventInitDict?: EventInit);
14
+ get NONE(): 0;
15
+ get CAPTURING_PHASE(): 1;
16
+ get AT_TARGET(): 2;
17
+ get BUBBLING_PHASE(): 3;
18
+ get bubbles(): boolean;
19
+ get cancelBubble(): boolean;
20
+ set cancelBubble(value: boolean);
21
+ get cancelable(): boolean;
22
+ get composed(): boolean;
23
+ get currentTarget(): EventTarget | null;
24
+ get defaultPrevented(): boolean;
25
+ get eventPhase(): number;
26
+ readonly isTrusted: boolean;
27
+ get returnValue(): boolean;
28
+ set returnValue(value: boolean);
29
+ get srcElement(): EventTarget | null;
30
+ get target(): EventTarget | null;
31
+ get timeStamp(): DOMHighResTimeStamp;
32
+ get type(): string;
33
+ composedPath(): EventTarget[];
34
+ initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
35
+ preventDefault(): void;
36
+ stopImmediatePropagation(): void;
37
+ stopPropagation(): void;
38
+ }
39
+ declare function Event_setTrusted(event: Event, isTrusted: boolean): void;
40
+
41
+ declare class ProgressEventP extends EventP implements ProgressEvent {
42
+ constructor(type: string, eventInitDict?: ProgressEventInit);
43
+ get lengthComputable(): boolean;
44
+ get loaded(): number;
45
+ get total(): number;
46
+ }
47
+ declare function emitProgressEvent(target: EventTarget, type: string, loaded?: number, total?: number): void;
48
+
49
+ declare function createAbortSignal(): AbortSignal;
50
+ declare function AbortSignal_abort(signal: AbortSignal, notify?: boolean, reason?: any): void;
51
+
52
+ declare const encode: (input?: string) => Uint8Array<ArrayBuffer>;
53
+ declare const decode: (input?: AllowSharedBufferSource, options?: TextDecodeOptions) => string;
54
+ declare function isBlob(value: unknown, strict?: boolean): value is Blob;
55
+
56
+ declare function Uint8Array_toBase64(input: Uint8Array<ArrayBuffer>): string;
57
+
58
+ declare function isURLSearchParams(value: unknown): value is URLSearchParams;
59
+
60
+ declare function isFormData(value: unknown): value is FormData;
61
+ declare function FormData_toBlob(formData: FormData, externalBoundary?: string): Blob;
62
+ declare function extractBoundary(contentType: string | null): string | undefined;
63
+ declare function createFormDataFromBinaryText(text: string, boundary?: string): FormData;
64
+
65
+ declare function isHeaders(value: unknown): value is Headers;
66
+ declare function normalizeName(name: string, throwError?: () => never): string;
67
+ declare function normalizeValue(value: string): string;
68
+ declare function parseHeaders(rawHeaders: string): Headers;
69
+ declare function createHeaders(headers?: HeadersInit): Headers;
70
+
71
+ declare class Payload {
72
+ constructor(body?: XMLHttpRequestBodyInit | null, contentType?: string);
73
+ promise: Promise<string | ArrayBuffer>;
74
+ get type(): string;
75
+ set type(value: string);
76
+ get size(): number;
77
+ private _type;
78
+ private length?;
79
+ private calcLength?;
80
+ text(): Promise<string>;
81
+ arrayBuffer(): Promise<ArrayBuffer>;
82
+ }
83
+ declare class BodyImpl implements Body {
84
+ get bodyUsed(): boolean;
85
+ get body(): ReadableStream<Uint8Array<ArrayBuffer>> | null;
86
+ arrayBuffer(): Promise<ArrayBuffer>;
87
+ blob(): Promise<Blob>;
88
+ bytes(): Promise<Uint8Array<ArrayBuffer>>;
89
+ formData(): Promise<FormData>;
90
+ json(): Promise<any>;
91
+ text(): Promise<string>;
92
+ }
93
+ declare function initBody(instance: Body, body?: BodyInit | null | undefined): void;
94
+
95
+ declare function normalizeMethod(method: string): string;
96
+
97
+ declare const _Symbol: {
98
+ iterator: typeof Symbol.iterator;
99
+ toStringTag: typeof Symbol.toStringTag;
100
+ };
101
+ declare class DOMExceptionP extends Error {
102
+ constructor(message?: string, name?: string);
103
+ }
104
+ declare const DOMExceptionE: {
105
+ new (message?: string, name?: string): DOMException;
106
+ prototype: DOMException;
107
+ readonly INDEX_SIZE_ERR: 1;
108
+ readonly DOMSTRING_SIZE_ERR: 2;
109
+ readonly HIERARCHY_REQUEST_ERR: 3;
110
+ readonly WRONG_DOCUMENT_ERR: 4;
111
+ readonly INVALID_CHARACTER_ERR: 5;
112
+ readonly NO_DATA_ALLOWED_ERR: 6;
113
+ readonly NO_MODIFICATION_ALLOWED_ERR: 7;
114
+ readonly NOT_FOUND_ERR: 8;
115
+ readonly NOT_SUPPORTED_ERR: 9;
116
+ readonly INUSE_ATTRIBUTE_ERR: 10;
117
+ readonly INVALID_STATE_ERR: 11;
118
+ readonly SYNTAX_ERR: 12;
119
+ readonly INVALID_MODIFICATION_ERR: 13;
120
+ readonly NAMESPACE_ERR: 14;
121
+ readonly INVALID_ACCESS_ERR: 15;
122
+ readonly VALIDATION_ERR: 16;
123
+ readonly TYPE_MISMATCH_ERR: 17;
124
+ readonly SECURITY_ERR: 18;
125
+ readonly NETWORK_ERR: 19;
126
+ readonly ABORT_ERR: 20;
127
+ readonly URL_MISMATCH_ERR: 21;
128
+ readonly QUOTA_EXCEEDED_ERR: 22;
129
+ readonly TIMEOUT_ERR: 23;
130
+ readonly INVALID_NODE_TYPE_ERR: 24;
131
+ readonly DATA_CLONE_ERR: 25;
132
+ };
133
+
134
+ declare function className(object: {
135
+ __MPHTTPX__: {
136
+ chain: string[];
137
+ };
138
+ }): string;
139
+ declare function setState<T extends object, K extends keyof T>(target: T, name: K, value: T[K]): void;
140
+ declare function isObjectType<T>(name: string, value: unknown): value is T;
141
+ declare function isPolyfillType<T>(name: string, value: unknown, strict?: boolean): value is T;
142
+ declare function isSequence(value: unknown): value is any[];
143
+ declare function checkArgsLength(actual: number, expect: number, className: string, funcName?: string): void;
144
+
145
+ export { AbortSignal_abort, BodyImpl, DOMExceptionE as DOMException, DOMExceptionP, EventTarget_dispatchEvent, Event_setTrusted, FormData_toBlob, Payload, ProgressEventP, Uint8Array_toBase64, _Symbol, attachFn, checkArgsLength, className, createAbortSignal, createFormDataFromBinaryText, createHeaders, decode, emitProgressEvent, encode, executeFn, extractBoundary, initBody, isArrayBuffer, isBlob, isEventTarget, isFormData, isHeaders, isObjectType, isPolyfillType, isSequence, isURLSearchParams, normalizeMethod, normalizeName, normalizeValue, parseHeaders, setState };
@@ -0,0 +1,13 @@
1
+ export { isArrayBuffer } from './encoding/TextDecoderP.js';
2
+ export { EventTarget_dispatchEvent, attachFn, executeFn, isEventTarget } from './event-system/EventTargetP.js';
3
+ export { Event_setTrusted } from './event-system/EventP.js';
4
+ export { ProgressEventP, emitProgressEvent } from './event-system/ProgressEventP.js';
5
+ export { AbortSignal_abort, createAbortSignal } from './event-system/AbortSignalP.js';
6
+ export { decode, encode, isBlob } from './file-system/BlobP.js';
7
+ export { Uint8Array_toBase64 } from './file-system/FileReaderP.js';
8
+ export { isURLSearchParams } from './network/URLSearchParamsP.js';
9
+ export { FormData_toBlob, createFormDataFromBinaryText, extractBoundary, isFormData } from './network/FormDataP.js';
10
+ export { createHeaders, isHeaders, normalizeName, normalizeValue, parseHeaders } from './fetch-api/HeadersP.js';
11
+ export { BodyImpl, Payload, initBody } from './fetch-api/BodyImpl.js';
12
+ export { normalizeMethod } from './fetch-api/RequestP.js';
13
+ export { DOMException, DOMExceptionP, _Symbol, checkArgsLength, className, isObjectType, isPolyfillType, isSequence, setState } from './utils.js';
@@ -0,0 +1,175 @@
1
+ import { setState, _Symbol, isObjectType } from '../utils.js';
2
+
3
+ const validLabels = ["utf-8", "utf8", "unicode-1-1-utf-8"];
4
+ class TextDecoderP {
5
+ constructor(label = "utf-8", options) {
6
+ if (validLabels.indexOf((typeof label === "string" ? label : ("" + label)).toLowerCase()) === -1) {
7
+ throw new RangeError(`Failed to construct 'TextDecoder': encoding ('${label}') not implemented.`);
8
+ }
9
+ setState(this, "__TextDecoder__", new TextDecoderState(options));
10
+ }
11
+ get encoding() { return "utf-8"; }
12
+ get fatal() { return state(this).fatal; }
13
+ get ignoreBOM() { return state(this).ignoreBOM; }
14
+ decode(input, options) {
15
+ return decodeText(input, options, state(this));
16
+ }
17
+ /** @internal */ toString() { return "[object TextDecoder]"; }
18
+ /** @internal */ get [_Symbol.toStringTag]() { return "TextDecoder"; }
19
+ /** @internal */ get __MPHTTPX__() { return { chain: ["TextDecoder"] }; }
20
+ }
21
+ /** @internal */
22
+ class TextDecoderState {
23
+ constructor({ fatal = false, ignoreBOM = false } = {}) {
24
+ this.partial = [];
25
+ this.fatal = !!fatal;
26
+ this.ignoreBOM = !!ignoreBOM;
27
+ }
28
+ }
29
+ function state(target) {
30
+ return target.__TextDecoder__;
31
+ }
32
+ function decodeText(input, { stream = false } = {}, settings = { fatal: false, ignoreBOM: false, partial: [] }) {
33
+ if (input === undefined) {
34
+ if (settings.partial.length > 0) {
35
+ if (settings.fatal) {
36
+ settings.partial = [];
37
+ throw new TypeError("Incomplete UTF-8 sequence.");
38
+ }
39
+ }
40
+ return "";
41
+ }
42
+ let bytes = isArrayBuffer(input)
43
+ ? new Uint8Array(input)
44
+ : ArrayBuffer.isView(input)
45
+ ? new Uint8Array(input.buffer, input.byteOffset, input.byteLength)
46
+ : (() => { throw new TypeError("Input could not be converted to any of: ArrayBufferView, ArrayBuffer."); })();
47
+ if (settings.partial.length > 0) {
48
+ let merged = new Uint8Array(settings.partial.length + bytes.length);
49
+ merged.set(settings.partial, 0);
50
+ merged.set(bytes, settings.partial.length);
51
+ bytes = merged;
52
+ settings.partial = [];
53
+ }
54
+ if (!settings.ignoreBOM && bytes.length >= 3) {
55
+ if (bytes[0] === 0xEF && bytes[1] === 0xBB && bytes[2] === 0xBF) {
56
+ bytes = bytes.subarray(3); // × WeChat 2.5.0
57
+ }
58
+ }
59
+ let end = bytes.length;
60
+ let res = [];
61
+ if (stream && bytes.length > 0) {
62
+ let i = bytes.length;
63
+ while (i > 0 && i > bytes.length - 4) {
64
+ let byte = bytes[i - 1];
65
+ if ((byte & 0b11000000) !== 0b10000000) {
66
+ let len = (byte > 0xEF) ? 4 : (byte > 0xDF) ? 3 : (byte > 0xBF) ? 2 : 1;
67
+ if (len > bytes.length - (i - 1)) {
68
+ end = i - 1;
69
+ }
70
+ break;
71
+ }
72
+ --i;
73
+ }
74
+ settings.partial = Array.from(bytes.slice(end)); // save tail // × WeChat 2.5.0
75
+ bytes = bytes.slice(0, end); // × WeChat 2.5.0
76
+ }
77
+ let codePoint = 0;
78
+ let tempCodePoint = 0;
79
+ let bytesPerSequence = 0;
80
+ let firstByte = 0, secondByte = 0, thirdByte = 0, fourthByte = 0;
81
+ let i = 0;
82
+ while (i < end) {
83
+ codePoint = 0;
84
+ firstByte = bytes[i];
85
+ bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1;
86
+ if (i + bytesPerSequence <= end) {
87
+ switch (bytesPerSequence) {
88
+ case 1:
89
+ if (firstByte < 0x80) {
90
+ codePoint = firstByte;
91
+ }
92
+ break;
93
+ case 2:
94
+ secondByte = bytes[i + 1];
95
+ if ((secondByte & 0xC0) === 0x80) {
96
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
97
+ if (tempCodePoint > 0x7F) {
98
+ codePoint = tempCodePoint;
99
+ }
100
+ }
101
+ break;
102
+ case 3:
103
+ secondByte = bytes[i + 1];
104
+ thirdByte = bytes[i + 2];
105
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
106
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
107
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
108
+ codePoint = tempCodePoint;
109
+ }
110
+ }
111
+ break;
112
+ case 4:
113
+ secondByte = bytes[i + 1];
114
+ thirdByte = bytes[i + 2];
115
+ fourthByte = bytes[i + 3];
116
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
117
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
118
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
119
+ codePoint = tempCodePoint;
120
+ }
121
+ }
122
+ break;
123
+ }
124
+ }
125
+ if (codePoint === 0 && ((bytesPerSequence === 1 && firstByte !== 0) || bytesPerSequence > 1)) {
126
+ if (settings.fatal) {
127
+ settings.partial = [];
128
+ throw new TypeError("Decoding failed.");
129
+ }
130
+ let skip = 1;
131
+ while (i + skip < end && (bytes[i + skip] & 0b11000000) === 0b10000000) {
132
+ skip += 1;
133
+ }
134
+ // we did not generate a valid codePoint so insert a replacement char (U+FFFD)
135
+ res.push(0xFFFD);
136
+ i += skip;
137
+ continue;
138
+ }
139
+ else if (codePoint > 0xFFFF) {
140
+ // encode to utf16 (surrogate pair dance)
141
+ codePoint -= 0x10000;
142
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800);
143
+ codePoint = 0xDC00 | codePoint & 0x3FF;
144
+ }
145
+ res.push(codePoint);
146
+ i += bytesPerSequence;
147
+ }
148
+ return res.length > 0x4000 ? buildString(res) : concatString(res);
149
+ }
150
+ function buildString(val) {
151
+ let arr = [];
152
+ for (let i = 0, len = val.length; i < len; i += 0x1000) {
153
+ arr.push(String.fromCharCode.apply(String, val.slice(i, i + 0x1000)));
154
+ }
155
+ return arr.join("");
156
+ }
157
+ function concatString(val) {
158
+ let str = "";
159
+ for (let i = 0, len = val.length; i < len; i += 0x1000) {
160
+ str += String.fromCharCode.apply(String, val.slice(i, i + 0x1000));
161
+ }
162
+ return str;
163
+ }
164
+ // Mini Program
165
+ function isOtherArrayBuffer(value) {
166
+ return (isObjectType("ArrayBuffer", value) || String(value) === "[object ArrayBuffer]")
167
+ && "byteLength" in value
168
+ && typeof value.byteLength === "number";
169
+ }
170
+ function isArrayBuffer(value) {
171
+ return (!!value && typeof value === "object" && ArrayBuffer.prototype.isPrototypeOf(value)) || isOtherArrayBuffer(value);
172
+ }
173
+ const TextDecoderE = (typeof TextDecoder !== "undefined" && TextDecoder) || TextDecoderP;
174
+
175
+ export { TextDecoderE as TextDecoder, TextDecoderP, isArrayBuffer };
@@ -0,0 +1,118 @@
1
+ import { checkArgsLength, isObjectType, _Symbol } from '../utils.js';
2
+
3
+ class TextEncoderP {
4
+ get encoding() { return "utf-8"; }
5
+ encode(input = "") {
6
+ return encodeText(typeof input === "string" ? input : ("" + input)).encoded;
7
+ }
8
+ encodeInto(source, destination) {
9
+ checkArgsLength(arguments.length, 2, "TextEncoder", "encodeInto");
10
+ if (!(Uint8Array.prototype.isPrototypeOf(destination) || isObjectType("Uint8Array", destination) /* Mini Program */)) {
11
+ throw new TypeError("Failed to execute 'encodeInto' on 'TextEncoder': parameter 2 is not of type 'Uint8Array'.");
12
+ }
13
+ let result = encodeText(typeof source === "string" ? source : ("" + source), destination);
14
+ return { read: result.read, written: result.written };
15
+ }
16
+ /** @internal */ toString() { return "[object TextEncoder]"; }
17
+ /** @internal */ get [_Symbol.toStringTag]() { return "TextEncoder"; }
18
+ /** @internal */ get __MPHTTPX__() { return { chain: ["TextEncoder"] }; }
19
+ }
20
+ function encodeText(input, destination) {
21
+ const HAS_DESTINATION = destination !== undefined;
22
+ let pos = 0;
23
+ let read = 0;
24
+ let len = input.length;
25
+ let at = 0; // output position
26
+ let tlen = Math.max(32, len + (len >> 1) + 7); // 1.5x size
27
+ let target = HAS_DESTINATION ? destination : new Uint8Array((tlen >> 3) << 3); // ... but at 8 byte offset
28
+ let value = 0;
29
+ let codeUnitCount = 0;
30
+ let byteCount = 0;
31
+ while (pos < len) {
32
+ value = input.charCodeAt(pos);
33
+ codeUnitCount = 1;
34
+ if (value >= 0xd800 && value <= 0xdbff) {
35
+ // high surrogate
36
+ if (pos + 1 < len) {
37
+ let extra = input.charCodeAt(pos + 1);
38
+ if ((extra & 0xfc00) === 0xdc00) {
39
+ codeUnitCount = 2;
40
+ pos += 2;
41
+ value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;
42
+ }
43
+ else {
44
+ pos += 1;
45
+ value = 0xfffd;
46
+ }
47
+ }
48
+ else {
49
+ pos += 1;
50
+ value = 0xfffd;
51
+ }
52
+ }
53
+ else if (value >= 0xdc00 && value <= 0xdfff) {
54
+ pos += 1;
55
+ value = 0xfffd;
56
+ }
57
+ else {
58
+ pos += 1;
59
+ }
60
+ // expand the buffer if we couldn't write 4 bytes
61
+ if (!HAS_DESTINATION && at + 4 > target.length) {
62
+ tlen += 8; // minimum extra
63
+ tlen *= (1.0 + (pos / input.length) * 2); // take 2x the remaining
64
+ tlen = (tlen >> 3) << 3; // 8 byte offset
65
+ let update = new Uint8Array(tlen);
66
+ update.set(target);
67
+ target = update;
68
+ }
69
+ if ((value & 0xffffff80) === 0) { // 1-byte
70
+ byteCount = 1;
71
+ }
72
+ else if ((value & 0xfffff800) === 0) { // 2-byte
73
+ byteCount = 2;
74
+ }
75
+ else if ((value & 0xffff0000) === 0) { // 3-byte
76
+ byteCount = 3;
77
+ }
78
+ else if ((value & 0xffe00000) === 0) { // 4-byte
79
+ byteCount = 4;
80
+ }
81
+ else {
82
+ value = 0xfffd;
83
+ byteCount = 3;
84
+ }
85
+ if (HAS_DESTINATION && at + byteCount > target.length) {
86
+ break;
87
+ }
88
+ switch (byteCount) {
89
+ case 1: // 1-byte
90
+ target[at++] = value; // ASCII
91
+ break;
92
+ case 2: // 2-byte
93
+ target[at++] = ((value >> 6) & 0x1f) | 0xc0;
94
+ target[at++] = (value & 0x3f) | 0x80;
95
+ break;
96
+ case 3: // 3-byte
97
+ target[at++] = ((value >> 12) & 0x0f) | 0xe0;
98
+ target[at++] = ((value >> 6) & 0x3f) | 0x80;
99
+ target[at++] = (value & 0x3f) | 0x80;
100
+ break;
101
+ case 4: // 4-byte
102
+ target[at++] = ((value >> 18) & 0x07) | 0xf0;
103
+ target[at++] = ((value >> 12) & 0x3f) | 0x80;
104
+ target[at++] = ((value >> 6) & 0x3f) | 0x80;
105
+ target[at++] = (value & 0x3f) | 0x80;
106
+ break;
107
+ }
108
+ read += codeUnitCount;
109
+ }
110
+ return {
111
+ encoded: !HAS_DESTINATION ? target.slice(0, at) : destination,
112
+ read: read,
113
+ written: at,
114
+ };
115
+ }
116
+ const TextEncoderE = (typeof TextEncoder !== "undefined" && TextEncoder) || TextEncoderP;
117
+
118
+ export { TextEncoderE as TextEncoder, TextEncoderP };
@@ -0,0 +1,25 @@
1
+ import { setState, _Symbol } from '../utils.js';
2
+ import { AbortSignal_abort, createAbortSignal } from './AbortSignalP.js';
3
+
4
+ class AbortControllerP {
5
+ constructor() {
6
+ setState(this, "__AbortController__", new AbortControllerState());
7
+ }
8
+ get signal() { return state(this).signal; }
9
+ abort(reason) { AbortSignal_abort(this.signal, true, reason); }
10
+ /** @internal */ toString() { return "[object AbortController]"; }
11
+ /** @internal */ get [_Symbol.toStringTag]() { return "AbortController"; }
12
+ /** @internal */ get __MPHTTPX__() { return { chain: ["AbortController"] }; }
13
+ }
14
+ /** @internal */
15
+ class AbortControllerState {
16
+ constructor() {
17
+ this.signal = createAbortSignal();
18
+ }
19
+ }
20
+ function state(target) {
21
+ return target.__AbortController__;
22
+ }
23
+ const AbortControllerE = (typeof AbortController !== "undefined" && AbortController) || AbortControllerP;
24
+
25
+ export { AbortControllerE as AbortController, AbortControllerP };
@@ -0,0 +1,112 @@
1
+ import { checkArgsLength, isSequence, setState, _Symbol, DOMException as DOMExceptionE } from '../utils.js';
2
+ import { EventP, Event_setTrusted } from './EventP.js';
3
+ import { EventTargetP, isEventTarget, EventTarget_dispatchEvent, attachFn, executeFn } from './EventTargetP.js';
4
+
5
+ class AbortSignalP extends EventTargetP {
6
+ static abort(reason) {
7
+ let signal = createAbortSignal();
8
+ AbortSignal_abort(signal, false, reason);
9
+ return signal;
10
+ }
11
+ static any(signals) {
12
+ checkArgsLength(arguments.length, 1, "AbortSignal", "any");
13
+ if (!isSequence(signals)) {
14
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': The provided value cannot be converted to a sequence.");
15
+ }
16
+ let _signals = Array.isArray(signals) ? signals : Array.from(signals);
17
+ _signals.forEach(sig => { if (!isEventTarget(sig))
18
+ throw new TypeError("Failed to execute 'any' on 'AbortSignal': Failed to convert value to 'AbortSignal'."); });
19
+ let signal = createAbortSignal();
20
+ let abortedSignal = (() => { for (let i = 0; i < _signals.length; ++i) {
21
+ let sig = _signals[i];
22
+ if (sig.aborted)
23
+ return sig;
24
+ } })();
25
+ if (abortedSignal) {
26
+ AbortSignal_abort(signal, false, abortedSignal.reason);
27
+ }
28
+ else {
29
+ function abortFn() {
30
+ for (let i = 0; i < _signals.length; ++i) {
31
+ let sig = _signals[i];
32
+ sig.removeEventListener("abort", abortFn);
33
+ }
34
+ AbortSignal_abort(signal, true, this.reason);
35
+ }
36
+ for (let i = 0; i < _signals.length; ++i) {
37
+ let sig = _signals[i];
38
+ sig.addEventListener("abort", abortFn);
39
+ }
40
+ }
41
+ return signal;
42
+ }
43
+ static timeout(milliseconds) {
44
+ checkArgsLength(arguments.length, 1, "AbortSignal", "timeout");
45
+ if (!(milliseconds >= 0)) {
46
+ throw new TypeError("Failed to execute 'timeout' on 'AbortSignal': Value is outside the 'unsigned long long' value range.");
47
+ }
48
+ const signal = createAbortSignal();
49
+ const execTimeout = () => AbortSignal_abort(signal, true, new DOMExceptionE("signal timed out", "TimeoutError"));
50
+ setTimeout(execTimeout, milliseconds);
51
+ return signal;
52
+ }
53
+ /** @internal */
54
+ constructor() {
55
+ if (new.target === AbortSignalP) {
56
+ throw new TypeError("Failed to construct 'AbortSignal': Illegal constructor");
57
+ }
58
+ super();
59
+ setState(this, "__AbortSignal__", new AbortSignalState(this));
60
+ }
61
+ get aborted() { return state(this).aborted; }
62
+ get reason() { return state(this).reason; }
63
+ throwIfAborted() {
64
+ if (this.aborted) {
65
+ throw this.reason;
66
+ }
67
+ }
68
+ get onabort() { return state(this).onabort; }
69
+ set onabort(value) { state(this).onabort = value; state(this).attach("abort"); }
70
+ /** @internal */ toString() { return "[object AbortSignal]"; }
71
+ /** @internal */ get [_Symbol.toStringTag]() { return "AbortSignal"; }
72
+ /** @internal */ get __MPHTTPX__() { return { chain: ["AbortSignal", "EventTarget"] }; }
73
+ }
74
+ /** @internal */
75
+ class AbortSignalState {
76
+ constructor(target) {
77
+ this.aborted = false;
78
+ this.reason = undefined;
79
+ this.onabort = null;
80
+ this.attach = attachFn(target, getHandlers(target));
81
+ }
82
+ }
83
+ function getHandlers(t) {
84
+ return {
85
+ onabort: (ev) => { executeFn(t, t.onabort, ev); },
86
+ };
87
+ }
88
+ function state(target) {
89
+ return target.__AbortSignal__;
90
+ }
91
+ function createAbortSignal() {
92
+ let signal = Object.create(AbortSignalP.prototype);
93
+ setState(signal, "__EventTarget__", { executors: [] });
94
+ setState(signal, "__AbortSignal__", new AbortSignalState(signal));
95
+ return signal;
96
+ }
97
+ function AbortSignal_abort(signal, notify = true, reason) {
98
+ if (!signal.aborted) {
99
+ let s = state(signal) || {};
100
+ s.aborted = true;
101
+ s.reason = reason !== undefined ? reason : new DOMExceptionE("signal is aborted without reason", "AbortError");
102
+ if (notify) {
103
+ let event = new EventP("abort");
104
+ event.__Event__.target = signal;
105
+ Event_setTrusted(event, true);
106
+ EventTarget_dispatchEvent(signal, event);
107
+ }
108
+ }
109
+ }
110
+ const AbortSignalE = (typeof AbortSignal !== "undefined" && AbortSignal) || AbortSignalP;
111
+
112
+ export { AbortSignalE as AbortSignal, AbortSignalP, AbortSignal_abort, createAbortSignal };
@@ -0,0 +1,32 @@
1
+ import { EventP } from './EventP.js';
2
+ import { checkArgsLength, setState, _Symbol } from '../utils.js';
3
+
4
+ class CustomEventP extends EventP {
5
+ constructor(type, eventInitDict) {
6
+ var _a;
7
+ checkArgsLength(arguments.length, 1, "CustomEvent");
8
+ super(type, eventInitDict);
9
+ setState(this, "__CustomEvent__", new CustomEventState());
10
+ state(this).detail = (_a = eventInitDict === null || eventInitDict === void 0 ? void 0 : eventInitDict.detail) !== null && _a !== void 0 ? _a : null;
11
+ }
12
+ get detail() { return state(this).detail; }
13
+ initCustomEvent(type, bubbles, cancelable, detail) {
14
+ checkArgsLength(arguments.length, 1, "CustomEvent", "initCustomEvent");
15
+ if (this.__Event__.eventDispatched)
16
+ return;
17
+ this.initEvent(type, bubbles, cancelable);
18
+ state(this).detail = detail !== null && detail !== void 0 ? detail : null;
19
+ }
20
+ /** @internal */ toString() { return "[object CustomEvent]"; }
21
+ /** @internal */ get [_Symbol.toStringTag]() { return "CustomEvent"; }
22
+ /** @internal */ get __MPHTTPX__() { return { chain: ["CustomEvent", "Event"] }; }
23
+ }
24
+ /** @internal */
25
+ class CustomEventState {
26
+ }
27
+ function state(target) {
28
+ return target.__CustomEvent__;
29
+ }
30
+ const CustomEventE = (typeof CustomEvent !== "undefined" && CustomEvent) || CustomEventP;
31
+
32
+ export { CustomEventE as CustomEvent, CustomEventP };