Align Flow lib defs for Node.js child_process with v24#55186
Closed
Align Flow lib defs for Node.js child_process with v24#55186
Conversation
Job Summary for GradleTest All :: run_fantom_tests
|
e512a01 to
3dff268
Compare
Summary:
This is an AI-assisted change to align the Flow definitions for the `child_process` module with the Node.js docs as at v24.
**New v18+ Features:**
1. **AbortSignal Support** (v18.0.0) - Process cancellation
- Added `signal?: AbortSignal` option to all async functions (exec, execFile, fork, spawn)
- Enables cancellation of child processes using `AbortController`
- Example: `const controller = new AbortController(); spawn('cmd', [], {signal: controller.signal}); controller.abort();`
- https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback
2. **Enhanced Process Properties** (v20.x)
- `spawnargs: Array<string>` - Full command-line arguments used to launch the process
- `spawnfile: string` - Executable file name of the child process
- `signalCode: string | null` - Signal that terminated the child process
- https://nodejs.org/api/child_process.html#subprocessspawnargs
**ChildProcess Class Updates:**
3. **Improved Property Types**
- `stdio` is now a properly typed tuple array with readonly modifier
- `channel` changed from `Object` to `mixed` for better type safety
4. **Enhanced Method Signatures**
- `kill(signal?: string | number): boolean` - Now returns boolean and accepts numeric signals
- `send()` overloads properly typed with `child_process$Serializable` messages
- `send()` accepts `keepOpen` option: `Readonly<{keepOpen?: boolean}>`
- https://nodejs.org/api/child_process.html#subprocesskillsignal
**Option Type Improvements:**
6. **Modern Readonly Syntax** - All input options use `Readonly<{...}>`
- `execOpts`, `execFileOpts`, `forkOpts`, `spawnOpts`, `spawnSyncOpts`, etc.
- Allows passing readonly types safely
7. **Enhanced Environment Variables**
- Changed `env?: Object` to `env?: {[key: string]: string | void}`
- More precise typing for environment variable dictionaries
8. **New Fork Options** (IPC enhancements)
- `serialization?: 'json' | 'advanced'` - IPC serialization format
- `killSignal` and `timeout` options added to fork
- https://nodejs.org/api/child_process.html#child_processforkmodulepath-args-options
9. **Enhanced Spawn Options**
- Added `killSignal`, `timeout`, `serialization` to `spawnOpts`
- Better consistency across all spawn functions
**Return Type Fixes:**
10. **spawnRet/spawnSyncRet** - Made fields properly nullable:
- `status: number | null` - null if process never exited
- `signal: string | null` - null if not terminated by signal
- `error: Error | void` - void if no error occurred
- Removed spread operator for exact types
**Helper Types:**
11. **`child_process$Serializable`** - Union type for IPC messages:
- `string | number | boolean | bigint | {...} | Array<mixed>`
- Used in send() method signatures
12. **`child_process$SendHandle`** - Type for handle passing:
- `net$Server | net$Socket`
- Used for passing server/socket handles to child processes
**References:**
- Node.js child_process module docs: https://nodejs.org/api/child_process.html
- AbortSignal integration: https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback
Changelog: [Internal]
---
> Generated by [Confucius Code Assist (CCA)](https://www.internalfb.com/wiki/Confucius/Analect/Shared_Analects/Confucius_Code_Assist_(CCA)/)
[Confucius Session](https://www.internalfb.com/confucius?host=devvm45708.cln0.facebook.com&port=8086&tab=Chat&session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&entry_name=Code+Assist), [Trace](https://www.internalfb.com/confucius?session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&tab=Trace)
Reviewed By: vzaidman
Differential Revision: D89944331
3dff268 to
4e8c51c
Compare
|
This pull request has been merged in 2e9b7fb. |
Collaborator
|
This pull request was successfully merged by @robhogan in 2e9b7fb When will my fix make it into a release? | How to file a pick request? |
meta-codesync bot
pushed a commit
to facebook/metro
that referenced
this pull request
Jan 18, 2026
Summary: X-link: facebook/react-native#55186 This is an AI-assisted change to align the Flow definitions for the `child_process` module with the Node.js docs as at v24. **New v18+ Features:** 1. **AbortSignal Support** (v18.0.0) - Process cancellation - Added `signal?: AbortSignal` option to all async functions (exec, execFile, fork, spawn) - Enables cancellation of child processes using `AbortController` - Example: `const controller = new AbortController(); spawn('cmd', [], {signal: controller.signal}); controller.abort();` - https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback 2. **Enhanced Process Properties** (v20.x) - `spawnargs: Array<string>` - Full command-line arguments used to launch the process - `spawnfile: string` - Executable file name of the child process - `signalCode: string | null` - Signal that terminated the child process - https://nodejs.org/api/child_process.html#subprocessspawnargs **ChildProcess Class Updates:** 3. **Improved Property Types** - `stdio` is now a properly typed tuple array with readonly modifier - `channel` changed from `Object` to `mixed` for better type safety 4. **Enhanced Method Signatures** - `kill(signal?: string | number): boolean` - Now returns boolean and accepts numeric signals - `send()` overloads properly typed with `child_process$Serializable` messages - `send()` accepts `keepOpen` option: `Readonly<{keepOpen?: boolean}>` - https://nodejs.org/api/child_process.html#subprocesskillsignal **Option Type Improvements:** 6. **Modern Readonly Syntax** - All input options use `Readonly<{...}>` - `execOpts`, `execFileOpts`, `forkOpts`, `spawnOpts`, `spawnSyncOpts`, etc. - Allows passing readonly types safely 7. **Enhanced Environment Variables** - Changed `env?: Object` to `env?: {[key: string]: string | void}` - More precise typing for environment variable dictionaries 8. **New Fork Options** (IPC enhancements) - `serialization?: 'json' | 'advanced'` - IPC serialization format - `killSignal` and `timeout` options added to fork - https://nodejs.org/api/child_process.html#child_processforkmodulepath-args-options 9. **Enhanced Spawn Options** - Added `killSignal`, `timeout`, `serialization` to `spawnOpts` - Better consistency across all spawn functions **Return Type Fixes:** 10. **spawnRet/spawnSyncRet** - Made fields properly nullable: - `status: number | null` - null if process never exited - `signal: string | null` - null if not terminated by signal - `error: Error | void` - void if no error occurred - Removed spread operator for exact types **Helper Types:** 11. **`child_process$Serializable`** - Union type for IPC messages: - `string | number | boolean | bigint | {...} | Array<mixed>` - Used in send() method signatures 12. **`child_process$SendHandle`** - Type for handle passing: - `net$Server | net$Socket` - Used for passing server/socket handles to child processes **References:** - Node.js child_process module docs: https://nodejs.org/api/child_process.html - AbortSignal integration: https://nodejs.org/api/child_process.html#child_processexeccommand-options-callback Changelog: [Internal] --- > Generated by [Confucius Code Assist (CCA)](https://www.internalfb.com/wiki/Confucius/Analect/Shared_Analects/Confucius_Code_Assist_(CCA)/) [Confucius Session](https://www.internalfb.com/confucius?host=devvm45708.cln0.facebook.com&port=8086&tab=Chat&session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&entry_name=Code+Assist), [Trace](https://www.internalfb.com/confucius?session_id=1a3aa26e-e5a9-11f0-8d47-71a4a90f0494&tab=Trace) Reviewed By: vzaidman Differential Revision: D89944331 fbshipit-source-id: 744ae04051c2214d97269c48c115060f5f30fb1f
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
This is an AI-assisted change to align the Flow definitions for the
child_processmodule with the Node.js docs as at v24.New v18+ Features:
AbortSignal Support (v18.0.0) - Process cancellation
signal?: AbortSignaloption to all async functions (exec, execFile, fork, spawn)AbortControllerconst controller = new AbortController(); spawn('cmd', [], {signal: controller.signal}); controller.abort();Enhanced Process Properties (v20.x)
spawnargs: Array<string>- Full command-line arguments used to launch the processspawnfile: string- Executable file name of the child processsignalCode: string | null- Signal that terminated the child processChildProcess Class Updates:
Improved Property Types
stdiois now a properly typed tuple array with readonly modifierchannelchanged fromObjecttomixedfor better type safetyEnhanced Method Signatures
kill(signal?: string | number): boolean- Now returns boolean and accepts numeric signalssend()overloads properly typed withchild_process$Serializablemessagessend()acceptskeepOpenoption:Readonly<{keepOpen?: boolean}>Option Type Improvements:
Modern Readonly Syntax - All input options use
Readonly<{...}>execOpts,execFileOpts,forkOpts,spawnOpts,spawnSyncOpts, etc.Enhanced Environment Variables
env?: Objecttoenv?: {[key: string]: string | void}New Fork Options (IPC enhancements)
serialization?: 'json' | 'advanced'- IPC serialization formatkillSignalandtimeoutoptions added to forkEnhanced Spawn Options
killSignal,timeout,serializationtospawnOptsReturn Type Fixes:
status: number | null- null if process never exitedsignal: string | null- null if not terminated by signalerror: Error | void- void if no error occurredHelper Types:
child_process$Serializable- Union type for IPC messages:string | number | boolean | bigint | {...} | Array<mixed>child_process$SendHandle- Type for handle passing:net$Server | net$SocketReferences:
Changelog: [Internal]
Reviewed By: vzaidman
Differential Revision: D89944331