Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: tinylibs/tinyexec
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.1.2
Choose a base ref
...
head repository: tinylibs/tinyexec
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1.2.3
Choose a head ref
  • 17 commits
  • 20 files changed
  • 4 contributors

Commits on May 2, 2026

  1. refactor: inline parse (#100)

    * refactor: add parse.ts
    
    * chore: inline some regexes
    
    * chore: don't use destruction
    
    * chore: use better named imports
    
    * docs: say if using sync version
    
    * chore: pass parsed object
    
    * style: format
    
    * chore: handle quoted env paths
    
    * style: format
    
    * chore: fix and change
    
    * chore: use our parser
    
    * refactor: some type annotation & code vhange
    
    * test: add parse test
    
    * fix: use shell if command is not resolved too
    
    * style: format
    
    * test: add Windows tests
    
    * perf: slight optimisation in shebang splitting
    
    * chore: fix typos
    
    * chore: fix up
    
    * test: use describe block per os
    
    * fix: a few things
    
    Use cwd when resolving relative commands, move regexps to module scope,
    and handle spaceless shebangs.
    
    * chore: remove unused import
    
    * chore: rework and simplify some things
    
    ---------
    
    Co-authored-by: James Garbutt <43081j@users.noreply.github.com>
    hyperz111 and 43081j authored May 2, 2026
    Configuration menu
    Copy the full SHA
    5000506 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    533856f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    9360869 View commit details
    Browse the repository at this point in the history

Commits on May 3, 2026

  1. build: update tsdown config and dependencies (#121)

    * build: don't minify and remove license plugin
    
    * deps: remove rollup-plugin-license
    
    * deps: remove cross-spawn and its type definition
    
    * chore: restore minify config
    
    * chore: remove old tsconfig includes
    
    ---------
    
    Co-authored-by: James Garbutt <43081j@users.noreply.github.com>
    hyperz111 and 43081j authored May 3, 2026
    Configuration menu
    Copy the full SHA
    d3aabde View commit details
    Browse the repository at this point in the history

Commits on May 5, 2026

  1. chore(deps-dev): bump the development-dependencies group with 2 updat…

    …es (#122)
    
    Bumps the development-dependencies group with 2 updates: [eslint](https://github.com/eslint/eslint) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).
    
    
    Updates `eslint` from 10.2.1 to 10.3.0
    - [Release notes](https://github.com/eslint/eslint/releases)
    - [Commits](eslint/eslint@v10.2.1...v10.3.0)
    
    Updates `typescript-eslint` from 8.59.1 to 8.59.2
    - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
    - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
    - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.2/packages/typescript-eslint)
    
    ---
    updated-dependencies:
    - dependency-name: eslint
      dependency-version: 10.3.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: typescript-eslint
      dependency-version: 8.59.2
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 5, 2026
    Configuration menu
    Copy the full SHA
    6e55380 View commit details
    Browse the repository at this point in the history

Commits on May 12, 2026

  1. chore(deps-dev): bump the development-dependencies group with 6 updat…

    …es (#123)
    
    * chore(deps-dev): bump the development-dependencies group with 6 updates
    
    Bumps the development-dependencies group with 6 updates:
    
    | Package | From | To |
    | --- | --- | --- |
    | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.0` | `25.7.0` |
    | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.6` |
    | [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) | `0.3.18` | `0.3.20` |
    | [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.0` |
    | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.2` | `8.59.3` |
    | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.6` |
    
    
    Updates `@types/node` from 25.6.0 to 25.7.0
    - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
    - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
    
    Updates `@vitest/coverage-v8` from 4.1.5 to 4.1.6
    - [Release notes](https://github.com/vitest-dev/vitest/releases)
    - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/coverage-v8)
    
    Updates `publint` from 0.3.18 to 0.3.20
    - [Release notes](https://github.com/publint/publint/releases)
    - [Changelog](https://github.com/publint/publint/blob/master/packages/publint/CHANGELOG.md)
    - [Commits](https://github.com/publint/publint/commits/publint@0.3.20/packages/publint)
    
    Updates `tsdown` from 0.21.10 to 0.22.0
    - [Release notes](https://github.com/rolldown/tsdown/releases)
    - [Commits](rolldown/tsdown@v0.21.10...v0.22.0)
    
    Updates `typescript-eslint` from 8.59.2 to 8.59.3
    - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
    - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
    - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.3/packages/typescript-eslint)
    
    Updates `vitest` from 4.1.5 to 4.1.6
    - [Release notes](https://github.com/vitest-dev/vitest/releases)
    - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/vitest)
    
    ---
    updated-dependencies:
    - dependency-name: "@types/node"
      dependency-version: 25.7.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: "@vitest/coverage-v8"
      dependency-version: 4.1.6
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: publint
      dependency-version: 0.3.20
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: tsdown
      dependency-version: 0.22.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: typescript-eslint
      dependency-version: 8.59.3
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: vitest
      dependency-version: 4.1.6
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    
    * chore: roll back tsdown
    
    * chore: try split up workflows
    
    * chore: make lint use build
    
    ---------
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: James Garbutt <43081j@users.noreply.github.com>
    dependabot[bot] and 43081j authored May 12, 2026
    Configuration menu
    Copy the full SHA
    4ebc0aa View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5ae7f87 View commit details
    Browse the repository at this point in the history

Commits on May 13, 2026

  1. feat: add nodePath flag (#125)

    This flag allows you to disable prepending of `node_modules/.bin` and
    the current node binary's directory.
    
    Useful when you want to explicitly set an exact `PATH` and have it
    untouched.
    43081j authored May 13, 2026
    Configuration menu
    Copy the full SHA
    ac2d3b3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bd5599e View commit details
    Browse the repository at this point in the history

Commits on May 19, 2026

  1. chore(deps-dev): bump the development-dependencies group with 4 updat…

    …es (#128)
    
    Bumps the development-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [eslint](https://github.com/eslint/eslint), [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).
    
    
    Updates `@types/node` from 25.7.0 to 25.9.0
    - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
    - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
    
    Updates `eslint` from 10.3.0 to 10.4.0
    - [Release notes](https://github.com/eslint/eslint/releases)
    - [Commits](eslint/eslint@v10.3.0...v10.4.0)
    
    Updates `publint` from 0.3.20 to 0.3.21
    - [Release notes](https://github.com/publint/publint/releases)
    - [Changelog](https://github.com/publint/publint/blob/master/packages/publint/CHANGELOG.md)
    - [Commits](https://github.com/publint/publint/commits/publint@0.3.21/packages/publint)
    
    Updates `typescript-eslint` from 8.59.3 to 8.59.4
    - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
    - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
    - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/typescript-eslint)
    
    ---
    updated-dependencies:
    - dependency-name: "@types/node"
      dependency-version: 25.9.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: eslint
      dependency-version: 10.4.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: publint
      dependency-version: 0.3.21
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: typescript-eslint
      dependency-version: 8.59.4
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 19, 2026
    Configuration menu
    Copy the full SHA
    482f3ab View commit details
    Browse the repository at this point in the history
  2. chore(deps): bump the github-actions group with 2 updates (#127)

    Bumps the github-actions group with 2 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact).
    
    
    Updates `actions/upload-artifact` from 4 to 7
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](actions/upload-artifact@v4...v7)
    
    Updates `actions/download-artifact` from 4 to 8
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](actions/download-artifact@v4...v8)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
      dependency-group: github-actions
    - dependency-name: actions/download-artifact
      dependency-version: '8'
      dependency-type: direct:production
      update-type: version-update:semver-major
      dependency-group: github-actions
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 19, 2026
    Configuration menu
    Copy the full SHA
    264dc21 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    a6b7a92 View commit details
    Browse the repository at this point in the history

Commits on May 21, 2026

  1. Configuration menu
    Copy the full SHA
    3bafedb View commit details
    Browse the repository at this point in the history

Commits on May 23, 2026

  1. Configuration menu
    Copy the full SHA
    6d499f2 View commit details
    Browse the repository at this point in the history
  2. fix: correct shebang regex (#134)

    We were incorrectly looking for the end of the input, which meant most
    shebangs were not being matched 👀
    43081j authored May 23, 2026
    Configuration menu
    Copy the full SHA
    65ef525 View commit details
    Browse the repository at this point in the history

Commits on May 26, 2026

  1. chore(deps-dev): bump the development-dependencies group with 4 updat…

    …es (#135)
    
    Bumps the development-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8), [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).
    
    
    Updates `@types/node` from 25.9.0 to 25.9.1
    - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
    - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
    
    Updates `@vitest/coverage-v8` from 4.1.6 to 4.1.7
    - [Release notes](https://github.com/vitest-dev/vitest/releases)
    - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
    - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/coverage-v8)
    
    Updates `typescript-eslint` from 8.59.4 to 8.60.0
    - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
    - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
    - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.60.0/packages/typescript-eslint)
    
    Updates `vitest` from 4.1.6 to 4.1.7
    - [Release notes](https://github.com/vitest-dev/vitest/releases)
    - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
    - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/vitest)
    
    ---
    updated-dependencies:
    - dependency-name: "@types/node"
      dependency-version: 25.9.1
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: "@vitest/coverage-v8"
      dependency-version: 4.1.7
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    - dependency-name: typescript-eslint
      dependency-version: 8.60.0
      dependency-type: direct:development
      update-type: version-update:semver-minor
      dependency-group: development-dependencies
    - dependency-name: vitest
      dependency-version: 4.1.7
      dependency-type: direct:development
      update-type: version-update:semver-patch
      dependency-group: development-dependencies
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored May 26, 2026
    Configuration menu
    Copy the full SHA
    51e4f27 View commit details
    Browse the repository at this point in the history

Commits on May 27, 2026

  1. fix: destroy piped streams on child exit to prevent grandchild deadlo…

    …ck (#137)
    
    * test: verify exec completes when grandchild holds piped stdout
    
    When a child process spawns a grandchild that inherits the piped stdout
    fd (fd 1), the grandchild keeps the pipe open after the child exits.
    Without the fix, both `await exec()` and the async iterator hang
    indefinitely because the piped streams never end.
    
    Each test runs in a subprocess (spawnSync with a 10s timeout) so the
    orphaned grandchild doesn't block vitest. A 5s inner race detects
    whether exec completes or hangs.
    
    * fix: destroy piped streams on child exit to prevent grandchild deadlock
    
    When a child process spawns a grandchild that inherits the piped
    stdout/stderr file descriptors, the grandchild holds them open after the
    child exits. Node's close event waits for all fds to be released, so
    it never fires. readStream and combineStreams hang indefinitely because
    the streams never end.
    
    Listen for the exit event (fires when the process exits, regardless of
    pipe state) and destroy the piped streams. This forces the PassThrough
    and readline consumers to complete.
    
    Refs: lint-staged/lint-staged#1800
    
    * test: add grandchild fixture scripts for pipe inheritance tests
    
    Static test fixtures that spawn a long-lived grandchild process
    inheriting the piped stdout fd, simulating tsserver inheriting
    eslint's piped streams through lint-staged/tinyexec.
    
    * test: restructure grandchild tests to use static fixtures
    
    Use committed fixture scripts instead of generated inline scripts.
    Run tests in a subprocess with isolated stdio so orphaned
    grandchildren don't block vitest's teardown. Clean up grandchildren
    via pkill with a marker comment in the fixture scripts.
    
    * fix: use setImmediate instead of setTimeout for stream cleanup
    
    setImmediate is sufficient to let buffered data drain before destroying
    the streams. Removes the timer tracking in _resetState and _onClose
    that was needed for the setTimeout approach.
    
    * chore: clarify comment
    
    * test: move tests into main
    
    * fix: account for piped streams
    
    ---------
    
    Co-authored-by: James Garbutt <43081j@users.noreply.github.com>
    Mearman and 43081j authored May 27, 2026
    Configuration menu
    Copy the full SHA
    20e4117 View commit details
    Browse the repository at this point in the history
Loading