mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix translatability of modules using event-target-shim (#45646)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45646 As titled. This is adapted from https://github.com/facebook/react-native/pull/45056. Changelog: [Internal] Reviewed By: GijsWeterings Differential Revision: D60173075 fbshipit-source-id: 9ce1c96d333b7e6b84d9b7650bc4179ebf86d267
This commit is contained in:
committed by
Facebook GitHub Bot
parent
7aff1b9bd8
commit
5cf72ca046
+1
-1
@@ -34,7 +34,7 @@ const EMPTY = 0;
|
||||
const LOADING = 1;
|
||||
const DONE = 2;
|
||||
|
||||
class FileReader extends (EventTarget(...READER_EVENTS): any) {
|
||||
class FileReader extends (EventTarget(...READER_EVENTS): typeof EventTarget) {
|
||||
static EMPTY: number = EMPTY;
|
||||
static LOADING: number = LOADING;
|
||||
static DONE: number = DONE;
|
||||
|
||||
@@ -78,7 +78,9 @@ const REQUEST_EVENTS = [
|
||||
|
||||
const XHR_EVENTS = REQUEST_EVENTS.concat('readystatechange');
|
||||
|
||||
class XMLHttpRequestEventTarget extends (EventTarget(...REQUEST_EVENTS): any) {
|
||||
class XMLHttpRequestEventTarget extends (EventTarget(
|
||||
...REQUEST_EVENTS,
|
||||
): typeof EventTarget) {
|
||||
onload: ?Function;
|
||||
onloadstart: ?Function;
|
||||
onprogress: ?Function;
|
||||
@@ -91,7 +93,7 @@ class XMLHttpRequestEventTarget extends (EventTarget(...REQUEST_EVENTS): any) {
|
||||
/**
|
||||
* Shared base for platform-specific XMLHttpRequest implementations.
|
||||
*/
|
||||
class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): any) {
|
||||
class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
||||
static UNSENT: number = UNSENT;
|
||||
static OPENED: number = OPENED;
|
||||
static HEADERS_RECEIVED: number = HEADERS_RECEIVED;
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ type WebSocketEventDefinitions = {
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
||||
* See https://github.com/websockets/ws
|
||||
*/
|
||||
class WebSocket extends (EventTarget(...WEBSOCKET_EVENTS): any) {
|
||||
class WebSocket extends (EventTarget(...WEBSOCKET_EVENTS): typeof EventTarget) {
|
||||
static CONNECTING: number = CONNECTING;
|
||||
static OPEN: number = OPEN;
|
||||
static CLOSING: number = CLOSING;
|
||||
|
||||
@@ -1476,6 +1476,35 @@ declare module.exports: File;
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/Blob/FileReader.js 1`] = `
|
||||
"type ReadyState = 0 | 1 | 2;
|
||||
type ReaderResult = string | ArrayBuffer;
|
||||
declare class FileReader extends EventTarget {
|
||||
static EMPTY: number;
|
||||
static LOADING: number;
|
||||
static DONE: number;
|
||||
EMPTY: number;
|
||||
LOADING: number;
|
||||
DONE: number;
|
||||
_readyState: ReadyState;
|
||||
_error: ?Error;
|
||||
_result: ?ReaderResult;
|
||||
_aborted: boolean;
|
||||
constructor(): void;
|
||||
_reset(): void;
|
||||
_setReadyState(newState: ReadyState): void;
|
||||
readAsArrayBuffer(blob: ?Blob): void;
|
||||
readAsDataURL(blob: ?Blob): void;
|
||||
readAsText(blob: ?Blob, encoding: string): void;
|
||||
abort(): void;
|
||||
get readyState(): ReadyState;
|
||||
get error(): ?Error;
|
||||
get result(): ?ReaderResult;
|
||||
}
|
||||
declare module.exports: FileReader;
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/Blob/NativeBlobModule.js 1`] = `
|
||||
"export * from \\"../../src/private/specs/modules/NativeBlobModule\\";
|
||||
declare export default typeof NativeBlobModule;
|
||||
@@ -6966,6 +6995,130 @@ declare export default typeof RCTNetworking;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/Network/XHRInterceptor.js 1`] = `"UNTYPED MODULE"`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/Network/XMLHttpRequest.js 1`] = `
|
||||
"export type NativeResponseType = \\"base64\\" | \\"blob\\" | \\"text\\";
|
||||
export type ResponseType =
|
||||
| \\"\\"
|
||||
| \\"arraybuffer\\"
|
||||
| \\"blob\\"
|
||||
| \\"document\\"
|
||||
| \\"json\\"
|
||||
| \\"text\\";
|
||||
export type Response = ?Object | string;
|
||||
type XHRInterceptor = interface {
|
||||
requestSent(id: number, url: string, method: string, headers: Object): void,
|
||||
responseReceived(
|
||||
id: number,
|
||||
url: string,
|
||||
status: number,
|
||||
headers: Object
|
||||
): void,
|
||||
dataReceived(id: number, data: string): void,
|
||||
loadingFinished(id: number, encodedDataLength: number): void,
|
||||
loadingFailed(id: number, error: string): void,
|
||||
};
|
||||
declare class XMLHttpRequestEventTarget extends EventTarget {
|
||||
onload: ?Function;
|
||||
onloadstart: ?Function;
|
||||
onprogress: ?Function;
|
||||
ontimeout: ?Function;
|
||||
onerror: ?Function;
|
||||
onabort: ?Function;
|
||||
onloadend: ?Function;
|
||||
}
|
||||
declare class XMLHttpRequest extends EventTarget {
|
||||
static UNSENT: number;
|
||||
static OPENED: number;
|
||||
static HEADERS_RECEIVED: number;
|
||||
static LOADING: number;
|
||||
static DONE: number;
|
||||
static _interceptor: ?XHRInterceptor;
|
||||
UNSENT: number;
|
||||
OPENED: number;
|
||||
HEADERS_RECEIVED: number;
|
||||
LOADING: number;
|
||||
DONE: number;
|
||||
onload: ?Function;
|
||||
onloadstart: ?Function;
|
||||
onprogress: ?Function;
|
||||
ontimeout: ?Function;
|
||||
onerror: ?Function;
|
||||
onabort: ?Function;
|
||||
onloadend: ?Function;
|
||||
onreadystatechange: ?Function;
|
||||
readyState: number;
|
||||
responseHeaders: ?Object;
|
||||
status: number;
|
||||
timeout: number;
|
||||
responseURL: ?string;
|
||||
withCredentials: boolean;
|
||||
upload: XMLHttpRequestEventTarget;
|
||||
_requestId: ?number;
|
||||
_subscriptions: Array<EventSubscription>;
|
||||
_aborted: boolean;
|
||||
_cachedResponse: Response;
|
||||
_hasError: boolean;
|
||||
_headers: Object;
|
||||
_lowerCaseResponseHeaders: Object;
|
||||
_method: ?string;
|
||||
_perfKey: ?string;
|
||||
_responseType: ResponseType;
|
||||
_response: string;
|
||||
_sent: boolean;
|
||||
_url: ?string;
|
||||
_timedOut: boolean;
|
||||
_trackingName: string;
|
||||
_incrementalEvents: boolean;
|
||||
_performanceLogger: IPerformanceLogger;
|
||||
static setInterceptor(interceptor: ?XHRInterceptor): void;
|
||||
constructor(): void;
|
||||
_reset(): void;
|
||||
get responseType(): ResponseType;
|
||||
set responseType(responseType: ResponseType): void;
|
||||
get responseText(): string;
|
||||
get response(): Response;
|
||||
__didCreateRequest(requestId: number): void;
|
||||
__didUploadProgress(requestId: number, progress: number, total: number): void;
|
||||
__didReceiveResponse(
|
||||
requestId: number,
|
||||
status: number,
|
||||
responseHeaders: ?Object,
|
||||
responseURL: ?string
|
||||
): void;
|
||||
__didReceiveData(requestId: number, response: string): void;
|
||||
__didReceiveIncrementalData(
|
||||
requestId: number,
|
||||
responseText: string,
|
||||
progress: number,
|
||||
total: number
|
||||
): void;
|
||||
__didReceiveDataProgress(
|
||||
requestId: number,
|
||||
loaded: number,
|
||||
total: number
|
||||
): void;
|
||||
__didCompleteResponse(
|
||||
requestId: number,
|
||||
error: string,
|
||||
timeOutError: boolean
|
||||
): void;
|
||||
_clearSubscriptions(): void;
|
||||
getAllResponseHeaders(): ?string;
|
||||
getResponseHeader(header: string): ?string;
|
||||
setRequestHeader(header: string, value: any): void;
|
||||
setTrackingName(trackingName: string): XMLHttpRequest;
|
||||
setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest;
|
||||
open(method: string, url: string, async: ?boolean): void;
|
||||
send(data: any): void;
|
||||
abort(): void;
|
||||
setResponseHeaders(responseHeaders: ?Object): void;
|
||||
setReadyState(newState: number): void;
|
||||
addEventListener(type: string, listener: EventListener): void;
|
||||
}
|
||||
declare module.exports: XMLHttpRequest;
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/Network/convertRequestBody.js 1`] = `
|
||||
"export type RequestBody =
|
||||
| string
|
||||
@@ -9994,6 +10147,69 @@ declare export default typeof NativeWebSocketModule;
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/WebSocket/WebSocket.js 1`] = `
|
||||
"type ArrayBufferView =
|
||||
| Int8Array
|
||||
| Uint8Array
|
||||
| Uint8ClampedArray
|
||||
| Int16Array
|
||||
| Uint16Array
|
||||
| Int32Array
|
||||
| Uint32Array
|
||||
| Float32Array
|
||||
| Float64Array
|
||||
| DataView;
|
||||
type BinaryType = \\"blob\\" | \\"arraybuffer\\";
|
||||
type WebSocketEventDefinitions = {
|
||||
websocketOpen: [{ id: number, protocol: string }],
|
||||
websocketClosed: [{ id: number, code: number, reason: string }],
|
||||
websocketMessage: [
|
||||
| { type: \\"binary\\", id: number, data: string }
|
||||
| { type: \\"text\\", id: number, data: string }
|
||||
| { type: \\"blob\\", id: number, data: BlobData },
|
||||
],
|
||||
websocketFailed: [{ id: number, message: string }],
|
||||
};
|
||||
declare class WebSocket extends EventTarget {
|
||||
static CONNECTING: number;
|
||||
static OPEN: number;
|
||||
static CLOSING: number;
|
||||
static CLOSED: number;
|
||||
CONNECTING: number;
|
||||
OPEN: number;
|
||||
CLOSING: number;
|
||||
CLOSED: number;
|
||||
_socketId: number;
|
||||
_eventEmitter: NativeEventEmitter<WebSocketEventDefinitions>;
|
||||
_subscriptions: Array<EventSubscription>;
|
||||
_binaryType: ?BinaryType;
|
||||
onclose: ?Function;
|
||||
onerror: ?Function;
|
||||
onmessage: ?Function;
|
||||
onopen: ?Function;
|
||||
bufferedAmount: number;
|
||||
extension: ?string;
|
||||
protocol: ?string;
|
||||
readyState: number;
|
||||
url: ?string;
|
||||
constructor(
|
||||
url: string,
|
||||
protocols: ?string | ?Array<string>,
|
||||
options: ?{ headers?: { origin?: string, ... }, ... }
|
||||
): void;
|
||||
get binaryType(): ?BinaryType;
|
||||
set binaryType(binaryType: BinaryType): void;
|
||||
close(code?: number, reason?: string): void;
|
||||
send(data: string | ArrayBuffer | ArrayBufferView | Blob): void;
|
||||
ping(): void;
|
||||
_close(code?: number, reason?: string): void;
|
||||
_unregisterEvents(): void;
|
||||
_registerEvents(): void;
|
||||
}
|
||||
declare module.exports: WebSocket;
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/WebSocket/WebSocketEvent.js 1`] = `"UNTYPED MODULE"`;
|
||||
|
||||
exports[`public API should not change unintentionally Libraries/WebSocket/WebSocketInterceptor.js 1`] = `"UNTYPED MODULE"`;
|
||||
|
||||
@@ -29,10 +29,6 @@ const IGNORE_PATTERNS = [
|
||||
// Exclude list for files that fail to parse under flow-api-translator. Please
|
||||
// review your changes before adding new entries.
|
||||
const FILES_WITH_KNOWN_ERRORS = new Set([
|
||||
'Libraries/Blob/FileReader.js',
|
||||
'Libraries/Network/XMLHttpRequest.js',
|
||||
'Libraries/WebSocket/WebSocket.js',
|
||||
|
||||
// Parse errors introduced in hermes-parser 0.23.0: Error: Comment location overlaps with node location
|
||||
'Libraries/Core/checkNativeVersion.js',
|
||||
'Libraries/Core/InitializeCore.js',
|
||||
@@ -84,13 +80,15 @@ describe('public API', () => {
|
||||
success = true;
|
||||
} catch (e) {
|
||||
if (!FILES_WITH_KNOWN_ERRORS.has(file)) {
|
||||
console.error('Unable to parse file:', file, '\n' + e);
|
||||
throw new Error(
|
||||
'Unable to parse file: ' + file + '\n\n' + e.message,
|
||||
);
|
||||
}
|
||||
} finally {
|
||||
if (success && FILES_WITH_KNOWN_ERRORS.has(file)) {
|
||||
console.error(
|
||||
'Expected parse error, please remove file exclude from FILES_WITH_KNOWN_ERRORS:',
|
||||
file,
|
||||
throw new Error(
|
||||
'Expected parse error, please remove file exclude from FILES_WITH_KNOWN_ERRORS: ' +
|
||||
file,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user