@ccheever/exact-ibex-runtime 0.1.0
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/package.json +63 -0
- package/src/abort/AbortController.ts +23 -0
- package/src/abort/AbortSignal.ts +152 -0
- package/src/abort/index.ts +2 -0
- package/src/accessibility.ts +12 -0
- package/src/arraybuffer-detach.ts +109 -0
- package/src/base64/base64.ts +168 -0
- package/src/base64/index.ts +1 -0
- package/src/blob/Blob.ts +259 -0
- package/src/blob/File.ts +59 -0
- package/src/blob/FormData.ts +323 -0
- package/src/blob/index.ts +3 -0
- package/src/bootstrap.ts +1946 -0
- package/src/broadcast/BroadcastChannel.ts +280 -0
- package/src/broadcast/index.ts +5 -0
- package/src/cache/Cache.ts +349 -0
- package/src/cache/CacheStorage.ts +89 -0
- package/src/cache/index.ts +27 -0
- package/src/camera/index.ts +6202 -0
- package/src/camera/processor.worker.ts +194 -0
- package/src/camera/scene.ts +195 -0
- package/src/clipboard/Clipboard.ts +129 -0
- package/src/clipboard/ClipboardItem.ts +97 -0
- package/src/clipboard/index.ts +6 -0
- package/src/clone/index.ts +1 -0
- package/src/clone/structuredClone.ts +389 -0
- package/src/clone/transferableSymbols.ts +2 -0
- package/src/compression/CompressionStream.ts +146 -0
- package/src/compression/DecompressionStream.ts +342 -0
- package/src/compression/index.ts +4 -0
- package/src/console/Console.ts +341 -0
- package/src/console/index.ts +2 -0
- package/src/core/accessibility-state.ts +263 -0
- package/src/core/accessibility.ts +184 -0
- package/src/core/agent-state.ts +37 -0
- package/src/core/diagnostics-logs.ts +144 -0
- package/src/core/host-call-bridge.ts +16 -0
- package/src/core/i18n-helpers.ts +189 -0
- package/src/core/locale-state.ts +253 -0
- package/src/core/locale.ts +95 -0
- package/src/crypto/Crypto.ts +2743 -0
- package/src/crypto/index.ts +1 -0
- package/src/diagnostics/logs.ts +7 -0
- package/src/encoding/TextDecoder.ts +1181 -0
- package/src/encoding/TextDecoderStream.ts +58 -0
- package/src/encoding/TextEncoder.ts +180 -0
- package/src/encoding/TextEncoderStream.ts +39 -0
- package/src/encoding/index.ts +8 -0
- package/src/events/CloseEvent.ts +91 -0
- package/src/events/DOMException.ts +409 -0
- package/src/events/ErrorEvent.ts +39 -0
- package/src/events/Event.ts +151 -0
- package/src/events/EventTarget.ts +280 -0
- package/src/events/FocusEvent.ts +27 -0
- package/src/events/KeyboardEvent.ts +46 -0
- package/src/events/MessageEvent.ts +61 -0
- package/src/events/ProgressEvent.ts +33 -0
- package/src/events/PromiseRejectionEvent.ts +31 -0
- package/src/events/index.ts +52 -0
- package/src/eventsource/EventSource.ts +371 -0
- package/src/eventsource/index.ts +2 -0
- package/src/fetch/Headers.ts +642 -0
- package/src/fetch/Request.ts +760 -0
- package/src/fetch/Response.ts +543 -0
- package/src/fetch/body.ts +1256 -0
- package/src/fetch/cookie-jar.ts +566 -0
- package/src/fetch/demo.ts +207 -0
- package/src/fetch/errors.ts +101 -0
- package/src/fetch/fetch.ts +2610 -0
- package/src/fetch/index.ts +101 -0
- package/src/fetch/native-bridge.ts +65 -0
- package/src/fetch/types.ts +258 -0
- package/src/filereader/FileReader.ts +236 -0
- package/src/filereader/index.ts +1 -0
- package/src/fs/Dirent.ts +39 -0
- package/src/fs/ExactFile.ts +450 -0
- package/src/fs/Stats.ts +80 -0
- package/src/fs/index.ts +944 -0
- package/src/fs/promises.ts +386 -0
- package/src/fs/shared.ts +328 -0
- package/src/http-server/index.js +697 -0
- package/src/http-server/index.ts +27 -0
- package/src/identity.generated.ts +14 -0
- package/src/index.ts +283 -0
- package/src/indexeddb/IDBCursor.ts +188 -0
- package/src/indexeddb/IDBDatabase.ts +343 -0
- package/src/indexeddb/IDBFactory.ts +269 -0
- package/src/indexeddb/IDBIndex.ts +194 -0
- package/src/indexeddb/IDBKeyRange.ts +109 -0
- package/src/indexeddb/IDBObjectStore.ts +468 -0
- package/src/indexeddb/IDBRequest.ts +163 -0
- package/src/indexeddb/IDBTransaction.ts +207 -0
- package/src/indexeddb/index.ts +34 -0
- package/src/indexeddb/utils.ts +52 -0
- package/src/inspect/index.ts +1 -0
- package/src/inspect/inspect.ts +465 -0
- package/src/internal/detect.ts +104 -0
- package/src/locale.ts +10 -0
- package/src/location/index.ts +1059 -0
- package/src/locks/LockManager.ts +460 -0
- package/src/locks/index.ts +12 -0
- package/src/media/VideoFrame.ts +58 -0
- package/src/messaging/MessageChannel.ts +31 -0
- package/src/messaging/MessagePort.ts +180 -0
- package/src/messaging/index.ts +2 -0
- package/src/messaging.ts +247 -0
- package/src/native/NativeModules.ts +354 -0
- package/src/native/index.ts +1 -0
- package/src/navigator/Navigator.ts +351 -0
- package/src/navigator/index.ts +1 -0
- package/src/node/Buffer.ts +1786 -0
- package/src/node/index.ts +4 -0
- package/src/node/path.ts +495 -0
- package/src/node/process.ts +2528 -0
- package/src/performance/Performance.ts +532 -0
- package/src/performance/index.ts +21 -0
- package/src/polyfills/array.ts +236 -0
- package/src/polyfills/arraybuffer.ts +172 -0
- package/src/polyfills/groupby.ts +85 -0
- package/src/polyfills/index.ts +85 -0
- package/src/polyfills/intl.ts +1956 -0
- package/src/polyfills/iterator.ts +479 -0
- package/src/polyfills/promise.ts +37 -0
- package/src/polyfills/set.ts +245 -0
- package/src/polyfills/string.ts +85 -0
- package/src/polyfills/typedarray.ts +110 -0
- package/src/promise-rejection-tracking.ts +464 -0
- package/src/react-native/index.ts +388 -0
- package/src/runtime-entry.ts +55 -0
- package/src/scheduling/AnimationFrame.ts +105 -0
- package/src/scheduling/IdleCallback.ts +167 -0
- package/src/scheduling/index.ts +13 -0
- package/src/security/Capabilities.ts +1146 -0
- package/src/security/Permissions.ts +392 -0
- package/src/security/capability-bits.generated.ts +63 -0
- package/src/security/index.ts +16 -0
- package/src/sqlite/Database.ts +456 -0
- package/src/sqlite/Statement.ts +206 -0
- package/src/sqlite/constants.ts +79 -0
- package/src/sqlite/errors.ts +25 -0
- package/src/sqlite/index.ts +34 -0
- package/src/sqlite/module.js +438 -0
- package/src/storage/Storage.ts +291 -0
- package/src/storage/StorageManager.ts +91 -0
- package/src/storage/index.ts +3 -0
- package/src/stream-compat.ts +47 -0
- package/src/streams/ReadableStream.ts +4131 -0
- package/src/streams/TransformStream.ts +375 -0
- package/src/streams/WritableStream.ts +866 -0
- package/src/streams/index.ts +41 -0
- package/src/timers/Timers.ts +296 -0
- package/src/timers/index.ts +11 -0
- package/src/url/URL.ts +656 -0
- package/src/url/URLPattern.ts +850 -0
- package/src/url/URLSearchParams.ts +244 -0
- package/src/url/index.ts +9 -0
- package/src/websocket/WebSocket.ts +770 -0
- package/src/websocket/WebSocketError.ts +52 -0
- package/src/websocket/WebSocketStream.ts +628 -0
- package/src/websocket/index.ts +7 -0
- package/src/window/index.ts +872 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* EventTarget - Web Standard EventTarget Implementation
|
|
4
|
+
*
|
|
5
|
+
* @see https://dom.spec.whatwg.org/#interface-eventtarget
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Event } from "./Event";
|
|
9
|
+
|
|
10
|
+
export type EventListener = (event: Event) => void;
|
|
11
|
+
|
|
12
|
+
export interface EventListenerObject {
|
|
13
|
+
handleEvent(event: Event): void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type EventListenerOrEventListenerObject =
|
|
17
|
+
| EventListener
|
|
18
|
+
| EventListenerObject;
|
|
19
|
+
|
|
20
|
+
export interface AddEventListenerOptions {
|
|
21
|
+
capture?: boolean;
|
|
22
|
+
once?: boolean;
|
|
23
|
+
passive?: boolean;
|
|
24
|
+
signal?: any; // AbortSignal - use 'any' to avoid circular dependency
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface EventListenerOptions {
|
|
28
|
+
capture?: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface ListenerEntry {
|
|
32
|
+
callback: EventListenerOrEventListenerObject;
|
|
33
|
+
capture: boolean;
|
|
34
|
+
once: boolean;
|
|
35
|
+
passive: boolean;
|
|
36
|
+
removed: boolean;
|
|
37
|
+
signal?: any; // AbortSignal - use 'any' to avoid circular dependency
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class EventTarget {
|
|
41
|
+
private _listeners: Map<string, ListenerEntry[]> = new Map();
|
|
42
|
+
private compactListeners(type: string): void {
|
|
43
|
+
const listeners = this._listeners.get(type);
|
|
44
|
+
if (!listeners) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const activeListeners = listeners.filter((l) => !l.removed);
|
|
49
|
+
if (activeListeners.length === 0) {
|
|
50
|
+
this._listeners.delete(type);
|
|
51
|
+
} else if (activeListeners.length !== listeners.length) {
|
|
52
|
+
this._listeners.set(type, activeListeners);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
addEventListener(
|
|
57
|
+
type: string,
|
|
58
|
+
callback: EventListenerOrEventListenerObject | null,
|
|
59
|
+
options?: AddEventListenerOptions | boolean
|
|
60
|
+
): void {
|
|
61
|
+
if (callback === null) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const capture =
|
|
66
|
+
typeof options === "boolean" ? options : options?.capture ?? false;
|
|
67
|
+
const once = typeof options === "object" ? options?.once ?? false : false;
|
|
68
|
+
const passive =
|
|
69
|
+
typeof options === "object" ? options?.passive ?? false : false;
|
|
70
|
+
const signal =
|
|
71
|
+
typeof options === "object" ? options?.signal : undefined;
|
|
72
|
+
|
|
73
|
+
// If signal is already aborted, don't add
|
|
74
|
+
if (signal?.aborted) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let listeners = this._listeners.get(type);
|
|
79
|
+
if (!listeners) {
|
|
80
|
+
listeners = [];
|
|
81
|
+
this._listeners.set(type, listeners);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Check if already exists (same callback and capture)
|
|
85
|
+
const exists = listeners.some(
|
|
86
|
+
(l) =>
|
|
87
|
+
l.callback === callback && l.capture === capture && !l.removed
|
|
88
|
+
);
|
|
89
|
+
if (exists) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const entry: ListenerEntry = {
|
|
94
|
+
callback,
|
|
95
|
+
capture,
|
|
96
|
+
once,
|
|
97
|
+
passive,
|
|
98
|
+
removed: false,
|
|
99
|
+
signal,
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
listeners.push(entry);
|
|
103
|
+
|
|
104
|
+
// Handle abort signal
|
|
105
|
+
if (signal) {
|
|
106
|
+
const removeOnAbort = () => {
|
|
107
|
+
entry.removed = true;
|
|
108
|
+
this.compactListeners(type);
|
|
109
|
+
};
|
|
110
|
+
signal.addEventListener("abort", removeOnAbort, { once: true });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
removeEventListener(
|
|
115
|
+
type: string,
|
|
116
|
+
callback: EventListenerOrEventListenerObject | null,
|
|
117
|
+
options?: EventListenerOptions | boolean
|
|
118
|
+
): void {
|
|
119
|
+
if (callback === null) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const capture =
|
|
124
|
+
typeof options === "boolean" ? options : options?.capture ?? false;
|
|
125
|
+
|
|
126
|
+
const listeners = this._listeners.get(type);
|
|
127
|
+
if (!listeners) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const index = listeners.findIndex(
|
|
132
|
+
(l) => l.callback === callback && l.capture === capture && !l.removed
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
if (index !== -1) {
|
|
136
|
+
listeners[index].removed = true;
|
|
137
|
+
this.compactListeners(type);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
dispatchEvent(event: Event | string | { type: string; [key: string]: unknown }): boolean {
|
|
142
|
+
const dispatchEvent = this.normalizeDispatchEventArgument(event);
|
|
143
|
+
|
|
144
|
+
// Set target
|
|
145
|
+
(dispatchEvent as any)._setTarget(this);
|
|
146
|
+
(dispatchEvent as any)._setCurrentTarget(this);
|
|
147
|
+
(dispatchEvent as any)._setEventPhase(Event.AT_TARGET);
|
|
148
|
+
|
|
149
|
+
const listeners = this._listeners.get(dispatchEvent.type);
|
|
150
|
+
if (listeners) {
|
|
151
|
+
// Create a copy to iterate (listeners may be modified during iteration)
|
|
152
|
+
const listenersCopy = [...listeners];
|
|
153
|
+
|
|
154
|
+
for (const entry of listenersCopy) {
|
|
155
|
+
if (entry.removed) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if ((dispatchEvent as any)._isImmediatePropagationStopped()) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Mark for removal if once
|
|
164
|
+
if (entry.once) {
|
|
165
|
+
entry.removed = true;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Set passive flag before calling listener
|
|
169
|
+
(dispatchEvent as any)._setInPassiveListener(entry.passive);
|
|
170
|
+
|
|
171
|
+
try {
|
|
172
|
+
if (typeof entry.callback === "function") {
|
|
173
|
+
entry.callback.call(this, dispatchEvent);
|
|
174
|
+
} else {
|
|
175
|
+
entry.callback.handleEvent(dispatchEvent);
|
|
176
|
+
}
|
|
177
|
+
} catch (error) {
|
|
178
|
+
// Report error but continue with other listeners
|
|
179
|
+
console.error("Error in event listener:", error);
|
|
180
|
+
} finally {
|
|
181
|
+
// Reset passive flag after listener
|
|
182
|
+
(dispatchEvent as any)._setInPassiveListener(false);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
this.compactListeners(dispatchEvent.type);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Reset event state for potential re-dispatch
|
|
190
|
+
(dispatchEvent as any)._setCurrentTarget(null);
|
|
191
|
+
(dispatchEvent as any)._setEventPhase(Event.NONE);
|
|
192
|
+
|
|
193
|
+
const result = !dispatchEvent.defaultPrevented;
|
|
194
|
+
|
|
195
|
+
// Reset flags after dispatch so event can be re-dispatched
|
|
196
|
+
(dispatchEvent as any)._resetFlags();
|
|
197
|
+
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
private normalizeDispatchEventArgument(
|
|
202
|
+
event: Event | string | { type: string; [key: string]: unknown }
|
|
203
|
+
): Event {
|
|
204
|
+
if (!event) {
|
|
205
|
+
throw new TypeError(
|
|
206
|
+
"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'."
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (typeof event === "string") {
|
|
211
|
+
event = new Event(event) as unknown as Event;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (
|
|
215
|
+
typeof (event as any)._setTarget === "function" &&
|
|
216
|
+
typeof (event as any)._setCurrentTarget === "function" &&
|
|
217
|
+
typeof (event as any)._setEventPhase === "function" &&
|
|
218
|
+
typeof (event as any)._resetFlags === "function"
|
|
219
|
+
) {
|
|
220
|
+
return event;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (typeof (event as any).type !== "string") {
|
|
224
|
+
throw new TypeError(
|
|
225
|
+
"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'."
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const source = event as Event & {
|
|
230
|
+
bubbles?: boolean;
|
|
231
|
+
cancelable?: boolean;
|
|
232
|
+
composed?: boolean;
|
|
233
|
+
};
|
|
234
|
+
const wrapped = new Event(source.type, {
|
|
235
|
+
bubbles: source.bubbles ?? false,
|
|
236
|
+
cancelable: source.cancelable ?? false,
|
|
237
|
+
composed: source.composed ?? false,
|
|
238
|
+
}) as Event;
|
|
239
|
+
|
|
240
|
+
for (const key of Object.keys(source as Record<string, unknown>)) {
|
|
241
|
+
if (
|
|
242
|
+
key === "type" ||
|
|
243
|
+
key === "bubbles" ||
|
|
244
|
+
key === "cancelable" ||
|
|
245
|
+
key === "composed" ||
|
|
246
|
+
key === "defaultPrevented" ||
|
|
247
|
+
key === "isTrusted" ||
|
|
248
|
+
key === "timeStamp" ||
|
|
249
|
+
key === "target" ||
|
|
250
|
+
key === "currentTarget" ||
|
|
251
|
+
key === "eventPhase" ||
|
|
252
|
+
key === "detail"
|
|
253
|
+
) {
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const wrappedDescriptor =
|
|
258
|
+
Object.getOwnPropertyDescriptor(wrapped, key) ||
|
|
259
|
+
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(wrapped), key);
|
|
260
|
+
if (
|
|
261
|
+
wrappedDescriptor &&
|
|
262
|
+
((wrappedDescriptor.writable === false && wrappedDescriptor.set === undefined) ||
|
|
263
|
+
wrappedDescriptor.get !== undefined)
|
|
264
|
+
) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
(wrapped as any)[key] = (source as Record<string, unknown>)[key];
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return wrapped;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Helper to check if there are any listeners for a type
|
|
275
|
+
*/
|
|
276
|
+
protected hasListeners(type: string): boolean {
|
|
277
|
+
const listeners = this._listeners.get(type);
|
|
278
|
+
return listeners ? listeners.some((l) => !l.removed) : false;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FocusEvent - Minimal DOM-compatible focus event implementation.
|
|
3
|
+
*
|
|
4
|
+
* The DOM shim uses this for focus/blur/focusin/focusout payload wrapping so
|
|
5
|
+
* handlers can read `relatedTarget` without special Exact-specific branching.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Event, type EventInit } from './Event';
|
|
9
|
+
|
|
10
|
+
export interface FocusEventInit extends EventInit {
|
|
11
|
+
relatedTarget?: EventTarget | null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class FocusEvent extends Event {
|
|
15
|
+
readonly relatedTarget: EventTarget | null;
|
|
16
|
+
|
|
17
|
+
constructor(type: string, eventInitDict?: FocusEventInit) {
|
|
18
|
+
super(type, eventInitDict);
|
|
19
|
+
this.relatedTarget = eventInitDict?.relatedTarget ?? null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get [Symbol.toStringTag](): string {
|
|
23
|
+
return 'FocusEvent';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default FocusEvent;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KeyboardEvent - Minimal DOM-compatible keyboard event implementation.
|
|
3
|
+
*
|
|
4
|
+
* The DOM shim only needs the standard readonly keyboard fields that framework
|
|
5
|
+
* event handlers commonly read (`key`, `code`, and modifier flags). The base
|
|
6
|
+
* Event implementation already handles cancelation and dispatch bookkeeping.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Event, type EventInit } from './Event';
|
|
10
|
+
|
|
11
|
+
export interface KeyboardEventInit extends EventInit {
|
|
12
|
+
key?: string;
|
|
13
|
+
code?: string;
|
|
14
|
+
altKey?: boolean;
|
|
15
|
+
ctrlKey?: boolean;
|
|
16
|
+
metaKey?: boolean;
|
|
17
|
+
shiftKey?: boolean;
|
|
18
|
+
repeat?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class KeyboardEvent extends Event {
|
|
22
|
+
readonly key: string;
|
|
23
|
+
readonly code: string;
|
|
24
|
+
readonly altKey: boolean;
|
|
25
|
+
readonly ctrlKey: boolean;
|
|
26
|
+
readonly metaKey: boolean;
|
|
27
|
+
readonly shiftKey: boolean;
|
|
28
|
+
readonly repeat: boolean;
|
|
29
|
+
|
|
30
|
+
constructor(type: string, eventInitDict?: KeyboardEventInit) {
|
|
31
|
+
super(type, eventInitDict);
|
|
32
|
+
this.key = eventInitDict?.key ?? '';
|
|
33
|
+
this.code = eventInitDict?.code ?? '';
|
|
34
|
+
this.altKey = eventInitDict?.altKey === true;
|
|
35
|
+
this.ctrlKey = eventInitDict?.ctrlKey === true;
|
|
36
|
+
this.metaKey = eventInitDict?.metaKey === true;
|
|
37
|
+
this.shiftKey = eventInitDict?.shiftKey === true;
|
|
38
|
+
this.repeat = eventInitDict?.repeat === true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
get [Symbol.toStringTag](): string {
|
|
42
|
+
return 'KeyboardEvent';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default KeyboardEvent;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MessageEvent - Event for messaging APIs
|
|
3
|
+
*
|
|
4
|
+
* Used by WebSocket, MessagePort, BroadcastChannel, and postMessage.
|
|
5
|
+
* @see https://html.spec.whatwg.org/multipage/comms.html#messageevent
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Event, EventInit } from './Event';
|
|
9
|
+
|
|
10
|
+
export interface MessageEventInit<T = any> extends EventInit {
|
|
11
|
+
data?: T;
|
|
12
|
+
origin?: string;
|
|
13
|
+
lastEventId?: string;
|
|
14
|
+
source?: MessageEventSource | null;
|
|
15
|
+
ports?: MessagePort[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// MessageEventSource can be WindowProxy, MessagePort, or ServiceWorker
|
|
19
|
+
// In our runtime, we only support MessagePort
|
|
20
|
+
export type MessageEventSource = MessagePort | null;
|
|
21
|
+
|
|
22
|
+
export class MessageEvent<T = any> extends Event {
|
|
23
|
+
readonly data: T;
|
|
24
|
+
readonly origin: string;
|
|
25
|
+
readonly lastEventId: string;
|
|
26
|
+
readonly source: MessageEventSource;
|
|
27
|
+
readonly ports: ReadonlyArray<MessagePort>;
|
|
28
|
+
|
|
29
|
+
constructor(type: string, eventInitDict?: MessageEventInit<T>) {
|
|
30
|
+
super(type, eventInitDict);
|
|
31
|
+
this.data = eventInitDict?.data as T;
|
|
32
|
+
this.origin = eventInitDict?.origin ?? '';
|
|
33
|
+
this.lastEventId = eventInitDict?.lastEventId ?? '';
|
|
34
|
+
this.source = eventInitDict?.source ?? null;
|
|
35
|
+
this.ports = Object.freeze(eventInitDict?.ports ? [...eventInitDict.ports] : []);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Legacy method for initializing a MessageEvent.
|
|
40
|
+
* @deprecated Use the constructor instead.
|
|
41
|
+
*/
|
|
42
|
+
initMessageEvent(
|
|
43
|
+
type: string,
|
|
44
|
+
bubbles?: boolean,
|
|
45
|
+
cancelable?: boolean,
|
|
46
|
+
data?: T,
|
|
47
|
+
origin?: string,
|
|
48
|
+
lastEventId?: string,
|
|
49
|
+
source?: MessageEventSource,
|
|
50
|
+
ports?: MessagePort[]
|
|
51
|
+
): void {
|
|
52
|
+
// This is a no-op in modern implementations since events are immutable
|
|
53
|
+
// Included for compatibility only
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get [Symbol.toStringTag](): string {
|
|
57
|
+
return 'MessageEvent';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default MessageEvent;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProgressEvent - Event for tracking progress of operations
|
|
3
|
+
*
|
|
4
|
+
* Used by XMLHttpRequest, FileReader, and fetch progress tracking.
|
|
5
|
+
* @see https://xhr.spec.whatwg.org/#interface-progressevent
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Event, EventInit } from './Event';
|
|
9
|
+
|
|
10
|
+
export interface ProgressEventInit extends EventInit {
|
|
11
|
+
lengthComputable?: boolean;
|
|
12
|
+
loaded?: number;
|
|
13
|
+
total?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class ProgressEvent extends Event {
|
|
17
|
+
readonly lengthComputable: boolean;
|
|
18
|
+
readonly loaded: number;
|
|
19
|
+
readonly total: number;
|
|
20
|
+
|
|
21
|
+
constructor(type: string, eventInitDict?: ProgressEventInit) {
|
|
22
|
+
super(type, eventInitDict);
|
|
23
|
+
this.lengthComputable = eventInitDict?.lengthComputable ?? false;
|
|
24
|
+
this.loaded = eventInitDict?.loaded ?? 0;
|
|
25
|
+
this.total = eventInitDict?.total ?? 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get [Symbol.toStringTag](): string {
|
|
29
|
+
return 'ProgressEvent';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default ProgressEvent;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PromiseRejectionEvent - Event for unhandled promise rejections
|
|
3
|
+
*
|
|
4
|
+
* Fired when a Promise is rejected and no rejection handler is attached,
|
|
5
|
+
* or when a previously unhandled rejection becomes handled.
|
|
6
|
+
* @see https://html.spec.whatwg.org/multipage/webappapis.html#promiserejectionevent
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Event, EventInit } from './Event';
|
|
10
|
+
|
|
11
|
+
export interface PromiseRejectionEventInit extends EventInit {
|
|
12
|
+
promise: Promise<any>;
|
|
13
|
+
reason?: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class PromiseRejectionEvent extends Event {
|
|
17
|
+
readonly promise: Promise<any>;
|
|
18
|
+
readonly reason: any;
|
|
19
|
+
|
|
20
|
+
constructor(type: string, eventInitDict: PromiseRejectionEventInit) {
|
|
21
|
+
super(type, eventInitDict);
|
|
22
|
+
this.promise = eventInitDict.promise;
|
|
23
|
+
this.reason = 'reason' in eventInitDict ? eventInitDict.reason : undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get [Symbol.toStringTag](): string {
|
|
27
|
+
return 'PromiseRejectionEvent';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default PromiseRejectionEvent;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* Events module - EventTarget, Event, CustomEvent, DOMException, and specialized events
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { Event, CustomEvent } from "./Event";
|
|
7
|
+
export type { EventInit, CustomEventInit } from "./Event";
|
|
8
|
+
|
|
9
|
+
export { EventTarget } from "./EventTarget";
|
|
10
|
+
export type {
|
|
11
|
+
EventListener,
|
|
12
|
+
EventListenerObject,
|
|
13
|
+
EventListenerOrEventListenerObject,
|
|
14
|
+
AddEventListenerOptions,
|
|
15
|
+
EventListenerOptions,
|
|
16
|
+
} from "./EventTarget";
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
DOMException,
|
|
20
|
+
createAbortError,
|
|
21
|
+
createNetworkError,
|
|
22
|
+
createTimeoutError,
|
|
23
|
+
createQuotaExceededError,
|
|
24
|
+
createDataCloneError,
|
|
25
|
+
createInvalidStateError,
|
|
26
|
+
createNotSupportedError,
|
|
27
|
+
createSyntaxError,
|
|
28
|
+
createSecurityError,
|
|
29
|
+
createOperationError,
|
|
30
|
+
} from "./DOMException";
|
|
31
|
+
|
|
32
|
+
// Specialized event types
|
|
33
|
+
export { MessageEvent } from "./MessageEvent";
|
|
34
|
+
export type { MessageEventInit, MessageEventSource } from "./MessageEvent";
|
|
35
|
+
|
|
36
|
+
export { CloseEvent } from "./CloseEvent";
|
|
37
|
+
export type { CloseEventInit } from "./CloseEvent";
|
|
38
|
+
|
|
39
|
+
export { ErrorEvent } from "./ErrorEvent";
|
|
40
|
+
export type { ErrorEventInit } from "./ErrorEvent";
|
|
41
|
+
|
|
42
|
+
export { ProgressEvent } from "./ProgressEvent";
|
|
43
|
+
export type { ProgressEventInit } from "./ProgressEvent";
|
|
44
|
+
|
|
45
|
+
export { KeyboardEvent } from "./KeyboardEvent";
|
|
46
|
+
export type { KeyboardEventInit } from "./KeyboardEvent";
|
|
47
|
+
|
|
48
|
+
export { FocusEvent } from "./FocusEvent";
|
|
49
|
+
export type { FocusEventInit } from "./FocusEvent";
|
|
50
|
+
|
|
51
|
+
export { PromiseRejectionEvent } from "./PromiseRejectionEvent";
|
|
52
|
+
export type { PromiseRejectionEventInit } from "./PromiseRejectionEvent";
|