diff --git a/index.d.ts b/index.d.ts index 816c7fd920..83a995301e 100644 --- a/index.d.ts +++ b/index.d.ts @@ -135,6 +135,19 @@ declare namespace execa { */ readonly stdio?: 'pipe' | 'ignore' | 'inherit' | readonly StdioOption[]; + /** + Specify the kind of serialization used for sending messages between processes when using the `stdio: 'ipc'` option or `execa.node()`: + - `json`: Uses `JSON.stringify()` and `JSON.parse()`. + - `advanced`: Uses [`v8.serialize()`](https://nodejs.org/api/v8.html#v8_v8_serialize_value) + + Requires Node.js `13.2.0` or later. + + [More info.](https://nodejs.org/api/child_process.html#child_process_advanced_serialization) + + @default 'json' + */ + readonly serialization?: 'json' | 'advanced'; + /** Prepare child to run independently of its parent process. Specific behavior [depends on the platform](https://nodejs.org/api/child_process.html#child_process_options_detached). diff --git a/index.test-d.ts b/index.test-d.ts index 7a2e7ea6f6..c9845d12a5 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -115,6 +115,7 @@ execa('unicorns', {stdio: 'inherit'}); execa('unicorns', { stdio: ['pipe', 'ipc', 'ignore', 'inherit', process.stdin, 1, undefined] }); +execa('unicorns', {serialization: 'advanced'}); execa('unicorns', {detached: true}); execa('unicorns', {uid: 0}); execa('unicorns', {gid: 0}); diff --git a/readme.md b/readme.md index ee775b667d..38397ce175 100644 --- a/readme.md +++ b/readme.md @@ -451,6 +451,19 @@ Default: `pipe` Child's [stdio](https://nodejs.org/api/child_process.html#child_process_options_stdio) configuration. +#### serialization + +Type: `string`
+Default: `'json'` + +Specify the kind of serialization used for sending messages between processes when using the [`stdio: 'ipc'`](#stdio) option or [`execa.node()`](#execanodescriptpath-arguments-options): + - `json`: Uses `JSON.stringify()` and `JSON.parse()`. + - `advanced`: Uses [`v8.serialize()`](https://nodejs.org/api/v8.html#v8_v8_serialize_value) + +Requires Node.js `13.2.0` or later. + +[More info.](https://nodejs.org/api/child_process.html#child_process_advanced_serialization) + #### detached Type: `boolean`