Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

teen_process

appium3mApache-2.02.2.3TypeScript support: included

A grown up version of Node's spawn/exec

child_process, process management, subprocess, spawn, exec, process, child

readme

node-teen_process

A grown-up version of Node's child_process. exec is really useful, but it suffers many limitations. This is an es7 (async/await) implementation of exec that uses spawn under the hood. It takes care of wrapping commands and arguments so we don't have to care about escaping spaces. It can also return stdout/stderr even when the command fails, or times out. Importantly, it's also not susceptible to max buffer issues.

teen_process.exec

Examples:

import { exec } from 'teen_process';

// basic usage
let {stdout, stderr, code} = await exec('ls', ['/usr/local/bin']);
console.log(stdout.split("\n"));  // array of files
console.log(stderr);              // ''
console.log(code);                // 0

// works with spaces
await exec('/command/with spaces.sh', ['foo', 'argument with spaces'])
// as though we had run: "/command/with spaces.sh" foo "argument with spaces"

// nice error handling that still includes stderr/stdout/code
try {
  await exec('echo_and_exit', ['foo', '10']);
} catch (e) {
  console.log(e.message);  // "Exited with code 10"
  console.log(e.stdout);   // "foo"
  console.log(e.code);     // 10
}

The exec function takes some options, with these defaults:

{
  cwd: undefined,
  env: process.env,
  timeout: null,
  killSignal: 'SIGTERM',
  encoding: 'utf8',
  ignoreOutput: false,
  stdio: "inherit",
  isBuffer: false,
  shell: undefined,
  logger: undefined,
  maxStdoutBufferSize: 100 * 1024 * 1024, // 100 MB
  maxStderrBufferSize: 100 * 1024 * 1024, // 100 MB
}

Most of these are self-explanatory. ignoreOutput is useful if you have a very chatty process whose output you don't care about and don't want to add it to the memory consumed by your program.

Both buffer size limits are needed to avoid memory overflow while collecting process output. If the overall size of output chunks for different stream types exceeds the the given one then the oldest chunks will be pulled out in order to keep the memory load within the acceptable ranges.

If you're on Windows, you'll want to pass shell: true, because exec actually uses spawn under the hood, and is therefore subject to the issues noted about Windows + spawn in the Node docs.

If stdio option is not set to inheirt, you may not get colored output from your process. In this case you can explore the subprocess's documentation to see if an option like --colors or FORCE_COLORS can be specified. you can also try to set env.FORCE_COLOR = true and see if it works.

Example:

try {
  await exec('sleep', ['10'], {timeout: 500, killSignal: 'SIGINT'});
} catch (e) {
  console.log(e.message);  // "'sleep 10' timed out after 500ms"
}

The isBuffer option specifies that the returned standard I/O is an instance of a Buffer.

Example:

let {stdout, stderr} = await exec('cat', [filename], {isBuffer: true});
Buffer.isBuffer(stdout); // true

The logger option allows stdout and stderr to be sent to a particular logger, as it it received. This is overridden by the ignoreOutput option.

teen_process.SubProcess

spawn is already pretty great but for some uses there's a fair amount of boilerplate, especially when using in an async/await context. teen_process also exposes a SubProcess class, which can be used to cut down on some boilerplate. It has 2 methods, start and stop:

import { SubProcess } from 'teen_process';

async function tailFileForABit () {
  let proc = new SubProcess('tail', ['-f', '/var/log/foo.log']);
  await proc.start();
  await proc.stop();
}

Errors with start/stop are thrown in the calling context.

Events

You can listen to 8 events:

  • exit
  • stop
  • end
  • die
  • output
  • lines-stdout
  • lines-stderr
  • stream-line
proc.on('exit', (code, signal) => {
  // if we get here, all we know is that the proc exited
  console.log(`exited with code ${code} from signal ${signal}`);
  // exited with code 127 from signal SIGHUP
});

proc.on('stop', (code, signal) => {
  // if we get here, we know that we intentionally stopped the proc
  // by calling proc.stop
});

proc.on('end', (code, signal) => {
  // if we get here, we know that the process stopped outside of our control
  // but with a 0 exit code
});

proc.on('die', (code, signal) => {
  // if we get here, we know that the process stopped outside of our control
  // with a non-zero exit code
});

proc.on('output', (stdout, stderr) => {
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

// lines-stderr is just the same
proc.on('lines-stdout', lines => {
  console.log(lines);
  // ['foo', 'bar', 'baz']
  // automatically handles rejoining lines across stream chunks
});

// stream-line gives you one line at a time, with [STDOUT] or [STDERR]
// prepended
proc.on('stream-line', line => {
  console.log(line);
  // [STDOUT] foo
});
// so we could do: proc.on('stream-line', console.log.bind(console))

Start Detectors

How does SubProcess know when to return control from start()? Well, the default is to wait until there is some output. You can also pass in a number, which will cause it to wait for that number of ms, or a function (which I call a startDetector) which takes stdout and stderr and returns true when you want control back. Examples:

await proc.start(); // will continue when stdout or stderr has received data
await proc.start(0); // will continue immediately

let sd = (stdout, stderr) => {
  return stderr.indexOf('blarg') !== -1;
};
await proc.start(sd); // will continue when stderr receives 'blarg'

A custom startDetector can also throw an error if it wants to declare the start unsuccessful. For example, if we know that the first output might contain a string which invalidates the process (for us), we could define a custom startDetector as follows:

let sd = (stdout, stderr) => {
  if (/fail/.test(stderr)) {
    throw new Error("Encountered failure condition");
  }
  return stdout || stderr;
};
await proc.start(sd); // will continue when output is received that doesn't
                      // match 'fail'

Finally, if you want to specify a maximum time to wait for a process to start, you can do that by passing a second parameter in milliseconds to start():

// use the default startDetector and throw an error if we wait for more than
// 1000ms for output
await proc.start(null, 1000);

Finishing Processes

After the process has been started you can use join() to wait for it to finish on its own:

await proc.join(); // will throw on exitcode not 0
await proc.join([0, 1]); // will throw on exitcode not 0 or 1

And how about killing the processes? Can you provide a custom signal, instead of using the default SIGTERM? Why yes:

await proc.stop('SIGHUP');

If your process might not be killable and you don't really care, you can also pass a timeout, which will return control to you in the form of an error after the timeout has passed:

try {
  await proc.stop('SIGHUP', 1000);
} catch (e) {
  console.log("Proc failed to stop, ignoring cause YOLO");
}

All in all, this makes it super simple to, say, write a script that tails a file for X seconds and then stops, using async/await and pretty straightforward error handling.

async function boredTail (filePath, boredAfter = 10000) {
  let p = new SubProcess('tail', ['-f', filePath]);
  p.on('stream-line', console.log);
  await p.start();
  await Bluebird.delay(boredAfter);
  await p.stop();
}

changelog

2.2.3 (2025-01-05)

Miscellaneous Chores

2.2.2 (2024-12-03)

Miscellaneous Chores

  • deps-dev: bump mocha from 10.8.2 to 11.0.1 (#442) (48d1b66)

2.2.1 (2024-07-29)

Miscellaneous Chores

  • deps-dev: bump @types/node from 20.14.13 to 22.0.0 (#441) (2e77812)

2.2.0 (2024-07-02)

Features

  • Add line-streamName event to Subprocess (#439) (f6babc7)

2.1.10 (2024-06-29)

Bug Fixes

2.1.9 (2024-06-29)

Bug Fixes

2.1.8 (2024-06-29)

Miscellaneous Chores

  • Optimize buffering logic in exec calls (#437) (775f509)

2.1.7 (2024-06-29)

Miscellaneous Chores

  • Optimize streaming processing and history (#435) (b63798e)

2.1.6 (2024-06-18)

Miscellaneous Chores

2.1.5 (2024-06-18)

Miscellaneous Chores

  • deps-dev: bump sinon from 17.0.2 to 18.0.0 (#428) (a5aba06)

2.1.4 (2024-06-04)

Miscellaneous Chores

  • deps-dev: bump semantic-release from 23.1.1 to 24.0.0 and conventional-changelog-conventionalcommits to 8.0.0 (#431) (d0c249f)

2.1.3 (2024-05-16)

Miscellaneous Chores

  • deps-dev: bump semantic-release from 22.0.12 to 23.0.6 (#427) (0893b10)
  • deps-dev: bump typescript from 5.2.2 to 5.4.3 (#426) (3c9072b)

2.1.2 (2024-05-16)

Miscellaneous Chores

  • Update dev dependencies (0aca92f)

2.1.1 (2023-12-07)

Miscellaneous Chores

  • deps-dev: bump @types/sinon from 10.0.20 to 17.0.2 (#415) (112f605)

2.1.0 (2023-12-07)

Features

2.0.112 (2023-12-07)

Miscellaneous Chores

  • update dependency @types/node to v20.10.4 (a738714)

2.0.111 (2023-12-07)

Miscellaneous Chores

2.0.110 (2023-12-06)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.10 (65e7ece)

2.0.109 (2023-12-05)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.9 (6bbcc05)

2.0.108 (2023-12-05)

Miscellaneous Chores

  • update dependency @appium/types to v0.14.3 (d7c140d)

2.0.107 (2023-12-04)

Miscellaneous Chores

  • update dependency lint-staged to v15.2.0 (bd0c02d)

2.0.106 (2023-12-04)

Miscellaneous Chores

  • update dependency @types/node to v20.10.3 (61b9311)

2.0.105 (2023-12-02)

Miscellaneous Chores

  • update dependency eslint-config-prettier to v9.1.0 (0d13000)

2.0.104 (2023-12-02)

Miscellaneous Chores

  • update dependency eslint to v8.55.0 (fd38d3a)

2.0.103 (2023-12-02)

Miscellaneous Chores

  • update dependency @types/node to v20.10.2 (be6a969)

2.0.102 (2023-11-30)

Miscellaneous Chores

  • update dependency @types/node to v20.10.1 (6781903)

2.0.101 (2023-11-24)

Miscellaneous Chores

  • update dependency @types/node to v20.10.0 (33f3bc1)

2.0.100 (2023-11-24)

Miscellaneous Chores

  • update dependency @types/ws to v8.5.10 (90e78b8)

2.0.99 (2023-11-24)

Miscellaneous Chores

  • update dependency @types/shell-quote to v1.7.5 (512233d)

2.0.98 (2023-11-24)

Miscellaneous Chores

  • update dependency @types/node to v20.9.5 (3bcda52)

2.0.97 (2023-11-22)

Miscellaneous Chores

  • update dependency @types/mocha to v10.0.6 (416502f)

2.0.96 (2023-11-21)

Miscellaneous Chores

  • update dependency @types/node to v20.9.3 (ed0c0bc)

2.0.95 (2023-11-21)

Miscellaneous Chores

  • update dependency @types/mocha to v10.0.5 (e3b1a35)

2.0.94 (2023-11-21)

Miscellaneous Chores

  • update dependency @types/lodash to v4.14.202 (0991d98)

2.0.93 (2023-11-21)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.11 (8abfd6d)

2.0.92 (2023-11-19)

Miscellaneous Chores

  • update dependency @types/node to v20.9.2 (2d6c767)

2.0.91 (2023-11-18)

Miscellaneous Chores

  • update dependency eslint to v8.54.0 (8b18801)

2.0.90 (2023-11-17)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.8 (72c827e)

2.0.89 (2023-11-17)

Miscellaneous Chores

  • update dependency @types/node to v20.9.1 (b2327a5)

2.0.88 (2023-11-16)

Miscellaneous Chores

2.0.87 (2023-11-15)

Miscellaneous Chores

  • update dependency @appium/types to v0.14.2 (134d313)

2.0.86 (2023-11-13)

Miscellaneous Chores

  • update dependency prettier to v3.1.0 (df13a7d)

2.0.85 (2023-11-12)

Miscellaneous Chores

  • update dependency lint-staged to v15.1.0 (158f90d)

2.0.84 (2023-11-09)

Miscellaneous Chores

  • update dependency @types/node to v20.9.0 (c8ea400)

2.0.83 (2023-11-09)

Miscellaneous Chores

  • update dependency @types/ws to v8.5.9 (9da160c)

2.0.82 (2023-11-09)

Miscellaneous Chores

  • update dependency @types/source-map-support to v0.5.10 (8a5441d)

2.0.81 (2023-11-08)

Miscellaneous Chores

  • update dependency @types/shell-quote to v1.7.4 (5512c85)

2.0.80 (2023-11-08)

Miscellaneous Chores

  • update dependency @types/mocha to v10.0.4 (341db8f)

2.0.79 (2023-11-08)

Miscellaneous Chores

  • update dependency @types/lodash to v4.14.201 (7e6d10d)

2.0.78 (2023-11-08)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.10 (30edcc2)

2.0.77 (2023-11-08)

Miscellaneous Chores

  • update dependency @types/bluebird to v3.5.42 (05b6839)

2.0.76 (2023-11-07)

Miscellaneous Chores

  • update dependency @types/chai-as-promised to v7.1.8 (1d4826b)

2.0.75 (2023-11-04)

Miscellaneous Chores

  • update dependency eslint to v8.53.0 (be98b5b)

2.0.74 (2023-11-04)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.7 (1d5b1dd)

2.0.73 (2023-11-03)

Miscellaneous Chores

2.0.72 (2023-11-01)

Miscellaneous Chores

  • update dependency sinon to v17.0.1 (157fe81)

2.0.71 (2023-11-01)

Miscellaneous Chores

2.0.70 (2023-10-31)

Miscellaneous Chores

  • update dependency @types/node to v20.8.10 (f897b79)

2.0.69 (2023-10-31)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.6 (1c4885a)

2.0.68 (2023-10-25)

Miscellaneous Chores

  • update dependency @types/node to v20 (#365) (14a03ac)
  • update dependency eslint-config-prettier to v9 (#280) (baa43ae)
  • update dependency lint-staged to v15 (#346) (4d2cc05)
  • update dependency sinon to v17 (#363) (0444949)

2.0.67 (2023-10-23)

Miscellaneous Chores

  • update dependency eslint-plugin-import to v2.29.0 (a5a049e)

2.0.66 (2023-10-22)

Miscellaneous Chores

  • update dependency eslint to v8.52.0 (2445efd)

2.0.65 (2023-10-22)

Miscellaneous Chores

  • update dependency @appium/types to v0.14.1 (c71f951)

2.0.64 (2023-10-21)

Miscellaneous Chores

2.0.63 (2023-10-21)

Miscellaneous Chores

  • update dependency sinon to v16.1.3 (45dba7e)

2.0.62 (2023-10-21)

Miscellaneous Chores

  • update dependency @types/ws to v8.5.8 (6bd8d68)

2.0.61 (2023-10-21)

Miscellaneous Chores

  • update dependency @types/source-map-support to v0.5.9 (ebb5d40)

2.0.60 (2023-10-20)

Miscellaneous Chores

  • update dependency @types/sinon to v10.0.20 (7fdd5d6)

2.0.59 (2023-10-20)

Miscellaneous Chores

  • update dependency @types/shell-quote to v1.7.3 (0921122)

2.0.58 (2023-10-20)

Miscellaneous Chores

  • update dependency @types/node to v18.18.6 (6e671a2)

2.0.57 (2023-10-20)

Miscellaneous Chores

  • update dependency @types/mocha to v10.0.3 (81863f5)

2.0.56 (2023-10-19)

Miscellaneous Chores

  • update dependency @types/lodash to v4.14.200 (b9e0886)

2.0.55 (2023-10-19)

Miscellaneous Chores

  • update dependency @types/chai-as-promised to v7.1.7 (a34a148)

2.0.54 (2023-10-19)

Miscellaneous Chores

  • update dependency @appium/tsconfig to v0.3.2 (0058ec5)

2.0.53 (2023-10-19)

Miscellaneous Chores

  • update dependency @appium/eslint-config-appium to v8.0.5 (675e1ab)

2.0.52 (2023-10-18)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.9 (03a91cb)

2.0.51 (2023-10-18)

Miscellaneous Chores

  • update dependency @types/bluebird to v3.5.41 (5ff2eb1)

2.0.50 (2023-10-13)

Miscellaneous Chores

  • update dependency @types/node to v18.18.5 (ef8f850)

2.0.49 (2023-10-13)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.8 (8047652)

2.0.48 (2023-10-11)

Miscellaneous Chores

  • update dependency @types/ws to v8.5.7 (5ae002d)

2.0.47 (2023-10-10)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.7 (b52ca31)

2.0.46 (2023-10-10)

Miscellaneous Chores

  • update dependency @types/bluebird to v3.5.40 (49d8e6b)

2.0.45 (2023-10-07)

Miscellaneous Chores

  • update dependency eslint to v8.51.0 (047f066)

2.0.44 (2023-10-07)

Miscellaneous Chores

  • update dependency @types/sinon to v10.0.19 (9eaa016)

2.0.43 (2023-10-07)

Miscellaneous Chores

  • update dependency @types/node to v18.18.4 (00e8b7e)

2.0.42 (2023-10-06)

Miscellaneous Chores

  • update dependency sinon to v16.1.0 (40d47e8)

2.0.41 (2023-10-04)

Miscellaneous Chores

2.0.40 (2023-10-03)

Miscellaneous Chores

  • update dependency @types/sinon to v10.0.18 (e819e82)

2.0.39 (2023-10-03)

Miscellaneous Chores

  • update dependency @types/node to v18.18.3 (9724396)

2.0.38 (2023-09-30)

Miscellaneous Chores

  • update dependency @types/node to v18.18.1 (8a37d7d)

2.0.37 (2023-09-28)

Miscellaneous Chores

  • update dependency chai to v4.3.10 (a59191b)

2.0.36 (2023-09-28)

Miscellaneous Chores

  • update dependency @types/mocha to v10.0.2 (e1f6e94)

2.0.35 (2023-09-27)

Miscellaneous Chores

  • update dependency @types/node to v18.18.0 (cc4f8dd)

2.0.34 (2023-09-27)

Miscellaneous Chores

  • update dependency @types/ws to v8.5.6 (068dfe0)

2.0.33 (2023-09-26)

Miscellaneous Chores

  • update dependency @types/source-map-support to v0.5.8 (6d740da)

2.0.32 (2023-09-26)

Miscellaneous Chores

  • update dependency @types/sinon to v10.0.17 (a4eb052)

2.0.31 (2023-09-26)

Miscellaneous Chores

  • update dependency @types/shell-quote to v1.7.2 (517b7aa)

2.0.30 (2023-09-25)

Miscellaneous Chores

  • update dependency eslint-plugin-mocha to v10.2.0 (84cd4db)

2.0.29 (2023-09-25)

Miscellaneous Chores

  • update dependency semantic-release to v22.0.5 (2dc9a94)

2.0.28 (2023-09-24)

Miscellaneous Chores

  • update dependency @types/node to v18.17.19 (1301d74)

2.0.27 (2023-09-24)

Miscellaneous Chores

  • update dependency lint-staged to v14 (#286) (76e88c5)
  • update dependency semantic-release to v22 (#319) (a835925)

2.0.26 (2023-09-23)

Miscellaneous Chores

  • update dependency eslint to v8.50.0 (27077f8)

2.0.25 (2023-09-23)

Miscellaneous Chores

  • update dependency @types/lodash to v4.14.199 (9c9f9f4)

2.0.24 (2023-09-20)

Miscellaneous Chores

  • update dependency @types/node to v18.17.18 (30d5b00)

2.0.23 (2023-09-16)

Miscellaneous Chores

  • update dependency semantic-release to v21.1.2 (7a8af59)

2.0.22 (2023-09-16)

Miscellaneous Chores

  • update dependency @types/node to v18.17.17 (392d2b9)

2.0.21 (2023-09-16)

Miscellaneous Chores

  • update dependency @types/bluebird to v3.5.39 (474979e)

2.0.20 (2023-09-15)

Miscellaneous Chores

  • update dependency @types/node to v18.17.16 (2901df0)

2.0.19 (2023-09-14)

Miscellaneous Chores

2.0.18 (2023-09-11)

Miscellaneous Chores

  • update dependency eslint to v8.49.0 (979e626)

2.0.17 (2023-09-11)

Miscellaneous Chores

  • update dependency conventional-changelog-conventionalcommits to v7.0.2 (dc19b3d)

2.0.16 (2023-09-11)

Miscellaneous Chores

  • update dependency @types/node to v18.17.15 (babafe4)

2.0.15 (2023-09-10)

Miscellaneous Chores

  • update dependency @types/lodash to v4.14.198 (ef4aaaa)

2.0.14 (2023-09-10)

Miscellaneous Chores

  • update dependency @types/chai-as-promised to v7.1.6 (11800a9)

2.0.13 (2023-09-10)

Miscellaneous Chores

  • update dependency @types/chai to v4.3.6 (77d0e1a)

2.0.12 (2023-08-30)

Miscellaneous Chores

  • update dependency conventional-changelog-conventionalcommits to v7 (#304) (b793d15)

2.0.11 (2023-08-30)

Miscellaneous Chores

  • update dependency prettier to v3.0.3 (1eec35a)

2.0.10 (2023-08-28)

Miscellaneous Chores

  • update dependency @types/node to v18.17.12 (4812506)

2.0.9 (2023-08-26)

Miscellaneous Chores

  • update dependency eslint to v8.48.0 (6ee6949)

2.0.8 (2023-08-25)

Miscellaneous Chores

  • update dependency typescript to v5.2.2 (9fa9af8)

2.0.7 (2023-08-25)

Miscellaneous Chores

  • update dependency chai to v4.3.8 (3035f60)

2.0.6 (2023-08-25)

Miscellaneous Chores

2.0.5 (2023-08-25)

Miscellaneous Chores

  • add changelog (d8a084b)
  • add main (84e9494)
  • update dependency @appium/eslint-config-appium to v8.0.4 (6d6c852)
  • update dependency @appium/tsconfig to v0.3.1 (457e1fe)
  • update dependency @appium/types to v0.12.0 (c808e57)
  • update dependency @appium/types to v0.13.0 (fb5d7a7)
  • update dependency @appium/types to v0.13.1 (bf4c5aa)
  • update dependency @appium/types to v0.13.2 (feaa1fc)
  • update dependency @appium/types to v0.13.3 (3de47e2)
  • update dependency @appium/types to v0.13.4 (8a3b955)
  • update dependency @types/lodash to v4.14.196 (3cb00a4)
  • update dependency @types/lodash to v4.14.197 (6530ac8)
  • update dependency @types/node to v18.16.19 (736cafa)
  • update dependency @types/node to v18.16.20 (e803d8d)
  • update dependency @types/node to v18.17.0 (ed954ea)
  • update dependency @types/node to v18.17.1 (be8934c)
  • update dependency @types/node to v18.17.11 (f734376)
  • update dependency @types/node to v18.17.2 (85ad3e7)
  • update dependency @types/node to v18.17.3 (7466028)
  • update dependency @types/node to v18.17.4 (79807ce)
  • update dependency @types/node to v18.17.5 (96efa63)
  • update dependency @types/node to v18.17.6 (c9aad3a)
  • update dependency @types/node to v18.17.7 (5a574cf)
  • update dependency @types/node to v18.17.8 (bc9ffc8)
  • update dependency @types/node to v18.17.9 (0091c8f)
  • update dependency @types/sinon to v10.0.16 (1102508)
  • update dependency @types/source-map-support to v0.5.7 (cc1c63b)
  • update dependency @types/ws to v8.5.5 (979f00d)
  • update dependency eslint to v8.43.0 (19fa3e6)
  • update dependency eslint to v8.44.0 (4e5dcb0)
  • update dependency eslint to v8.45.0 (4e9667a)
  • update dependency eslint to v8.46.0 (61fa5a1)
  • update dependency eslint to v8.47.0 (c4d5ea6)
  • update dependency eslint-config-prettier to v8.10.0 (ef55924)
  • update dependency eslint-config-prettier to v8.9.0 (2b6619f)
  • update dependency eslint-plugin-import to v2.28.0 (b487d52)
  • update dependency eslint-plugin-import to v2.28.1 (7eefb95)
  • update dependency lint-staged to v13.2.3 (a118250)
  • update dependency lint-staged to v13.3.0 (423cdb1)
  • update dependency prettier to v3 (#266) (687259b)
  • update dependency prettier to v3.0.1 (87be875)
  • update dependency prettier to v3.0.2 (1f1c553)
  • update dependency sinon to v15.2.0 (14a656c)
  • update dependency typescript to v5.1.5 (4f7cc7d)
  • update dependency typescript to v5.1.6 (f14ee64)