From 7525b83674fe5dcb07177bdf072a3ea975647a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Tue, 10 Nov 2026 12:58:17 +0000 Subject: [PATCH] Fix build_js_types: move abortSignal's required param first Summary: #59896 made `ReactNativeElement` unconditionally extend `EventTarget`, which imports the `AbortSignal` type, pulling `AbortSignal.d.ts` into the generated types checked by `yarn test-generated-typescript`. The internal `abortSignal(reason = ..., signal)` helper declares a defaulted parameter before a required one, which flow-api-translator emits as `abortSignal(reason?: unknown | void, signal: AbortSignal)` and tsc rejects with TS1016. Reorder the parameters to `abortSignal(signal, reason = ...)` and update both internal callers. The public API snapshot is unchanged. Changelog: [Internal] Test Plan: - `yarn build-types --skip-snapshot && yarn test-generated-typescript`: fails with TS1016 before, passes after - `yarn build-types --validate`: API snapshot is up to date - `yarn eslint --max-warnings 0 packages/react-native/src/private/webapis/dom/abort-api/` --- .../src/private/webapis/dom/abort-api/AbortController.js | 2 +- .../src/private/webapis/dom/abort-api/AbortSignal.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native/src/private/webapis/dom/abort-api/AbortController.js b/packages/react-native/src/private/webapis/dom/abort-api/AbortController.js index 392f23b254a..0b62356c5dc 100644 --- a/packages/react-native/src/private/webapis/dom/abort-api/AbortController.js +++ b/packages/react-native/src/private/webapis/dom/abort-api/AbortController.js @@ -61,7 +61,7 @@ export class AbortController { * Abort and signal to any observers that the associated activity is to be aborted. */ abort(reason: unknown): void { - require('./AbortSignal').abortSignal(reason, getSignal(this)); + require('./AbortSignal').abortSignal(getSignal(this), reason); } } diff --git a/packages/react-native/src/private/webapis/dom/abort-api/AbortSignal.js b/packages/react-native/src/private/webapis/dom/abort-api/AbortSignal.js index e7fac1f26d7..3001462ea09 100644 --- a/packages/react-native/src/private/webapis/dom/abort-api/AbortSignal.js +++ b/packages/react-native/src/private/webapis/dom/abort-api/AbortSignal.js @@ -57,7 +57,7 @@ export class AbortSignal extends EventTarget { */ static abort(reason: unknown): AbortSignal { const signal = createAbortSignal(); - abortSignal(reason, signal); + abortSignal(signal, reason); return signal; } @@ -186,11 +186,11 @@ export function createAbortSignal(): AbortSignal { * Abort a given signal. */ export function abortSignal( + signal: AbortSignal, reason: unknown | void = new DOMException( 'signal is aborted without reason', 'AbortError', ), - signal: AbortSignal, ): void { // $FlowExpectedError[invalid-compare] // $FlowExpectedError[prop-missing]