Skip to content

fix: scan full pattern when tokens are requested - #197

Merged
doowb merged 1 commit into
masterfrom
issue-62
Aug 24, 2026
Merged

fix: scan full pattern when tokens are requested#197
doowb merged 1 commit into
masterfrom
issue-62

Conversation

@mrmlnc

@mrmlnc mrmlnc commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Fixes #62.

The tokens option is documented to automatically enable parts.
However, scan() stopped at the first glob unless parts or
scanToEnd was explicitly enabled.

For example, a/b/*/c produced:

  • { parts: true }['a', 'b', '*', 'c']
  • { tokens: true }['a', 'b', '*/c']

This change makes tokens enable full-pattern scanning, producing
consistent parts and tokens. A regression test covering the original
issue has also been added..

The `tokens` option implicitly enables `parts`, but did not enable
full-pattern scanning. This caused scanning to stop at the first glob
and merge the remaining path segments into the final token.

Include `tokens` in `scanToEnd` and add regression coverage for #62.
@github-code-quality

Copy link
Copy Markdown

Code Coverage Overview

Languages: JavaScript

JavaScript / code-coverage/nyc

The overall line coverage in commit 5f5819d in the issue-62 branch is 95%. Line coverage data for the master branch is not yet available.

Show a line coverage summary of the most covered files.
File master issue-62 5f5819d +/-
lib/constants.js 100%
index.js 100%
posix.js 100%
lib/parse.js 95%
lib/scan.js 95%
lib/picomatch.js 95%
lib/utils.js 90%
@mrmlnc
mrmlnc marked this pull request as ready for review August 23, 2026 19:27
@doowb

doowb commented Aug 24, 2026

Copy link
Copy Markdown
Member

Thanks for the PR @mrmlnc, I'll get this and the related one merged and published as a patch version soon.

@doowb
doowb merged commit 9b74f6f into master Aug 24, 2026
26 checks passed
@doowb
doowb deleted the issue-62 branch August 24, 2026 13:09
@mrmlnc mrmlnc mentioned this pull request Aug 24, 2026
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request Aug 30, 2026
…in /studio [skip ci]

Bumps [picomatch](https://github.com/micromatch/picomatch) from 4.0.5 to 4.0.7.
Release notes

*Sourced from [picomatch's releases](https://github.com/micromatch/picomatch/releases).*

> 4.0.7
> -----
>
> What's Changed
> --------------
>
> * fix: handle terminal globstars in parenthesized patterns by [`@​mrmlnc`](https://github.com/mrmlnc) in [micromatch/picomatch#198](https://redirect.github.com/micromatch/picomatch/pull/198)
>
> **Full Changelog**: <micromatch/picomatch@4.0.6...4.0.7>
>
> 4.0.6
> -----
>
> What's Changed
> --------------
>
> * fix: scan full pattern when tokens are requested by [`@​mrmlnc`](https://github.com/mrmlnc) in [micromatch/picomatch#197](https://redirect.github.com/micromatch/picomatch/pull/197)
> * fix: return complete pattern parts from scan by [`@​mrmlnc`](https://github.com/mrmlnc) in [micromatch/picomatch#199](https://redirect.github.com/micromatch/picomatch/pull/199)
>
> **Full Changelog**: <micromatch/picomatch@4.0.5...4.0.6>


Changelog

*Sourced from [picomatch's changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md).*

> 4.0.7 (2026-08-24)
> ------------------
>
> ### Fixed
>
> * Fixed terminal globstars in parenthesized patterns ([#142](https://redirect.github.com/micromatch/picomatch/issues/142), [e279bd7](micromatch/picomatch@e279bd7)).
>
> 4.0.6 (2026-08-24)
> ------------------
>
> ### Fixed
>
> * `scan()` now scans the full pattern when tokens are requested, instead of merging the remaining path segments into the final token ([#62](https://redirect.github.com/micromatch/picomatch/issues/62), [5f5819d](micromatch/picomatch@5f5819d)).
> * `scan()` now returns complete pattern parts, including leading and trailing empty segments, and handles nested and escaped parentheses correctly ([#58](https://redirect.github.com/micromatch/picomatch/issues/58), [f201165](micromatch/picomatch@f201165)).


Commits

* [`6bb4067`](micromatch/picomatch@6bb4067) 4.0.7
* [`fdfb155`](micromatch/picomatch@fdfb155) Merge pull request [#198](https://redirect.github.com/micromatch/picomatch/issues/198) from micromatch/issue-142
* [`38c6b7a`](micromatch/picomatch@38c6b7a) 4.0.6
* [`ada9d3f`](micromatch/picomatch@ada9d3f) Merge pull request [#199](https://redirect.github.com/micromatch/picomatch/issues/199) from micromatch/issue-58
* [`9b74f6f`](micromatch/picomatch@9b74f6f) Merge pull request [#197](https://redirect.github.com/micromatch/picomatch/issues/197) from micromatch/issue-62
* [`f201165`](micromatch/picomatch@f201165) fix: return complete pattern parts from scan
* [`e279bd7`](micromatch/picomatch@e279bd7) fix: handle terminal globstars in parenthesized patterns
* [`5f5819d`](micromatch/picomatch@5f5819d) fix: scan full pattern when tokens are requested
* See full diff in [compare view](micromatch/picomatch@4.0.5...4.0.7)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=picomatch&package-manager=npm\_and\_yarn&previous-version=4.0.5&new-version=4.0.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants