Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency fast-glob to v3 #24

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link

@renovate renovate bot commented Aug 10, 2019

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
fast-glob ^2.2.6 -> ^3.0.0 age adoption passing confidence

Release Notes

mrmlnc/fast-glob

v3.2.12

Compare Source

Full Changelog: mrmlnc/fast-glob@3.2.11...3.2.12

🐛 Bug fixes

Fixed an issue introduced in 3.2.7 related to incorrect application of patterns to entries with a trailing slash when the entry is not a directory.

Before changes:

fg.sync('**/!(*.md)')
// ['file.md', 'a/file.md', 'a/file.txt']

After fix:

fg.sync('**/!(*.md)')
// ['a/file.txt']

Thanks @​AgentEnder for the issue (#​357).

🚀 Improvements

This release includes performance improvements for the asynchronous method. For this method we now use an asynchronous directory traversal interface instead of using a streaming interface. This gives up to 15% acceleration for medium and large directories. The result depends a lot on hardware.

You can find the benchmark results for this release in CI here.

Here are a few of measurements on my laptop:

===> Benchmark pattern "*" with 100 launches (regression, async)
===> Max stdev: 7 | Retries: 3 | Options: {}

Name                   Time, ms  Time stdev, %  Memory, MB  Memory stdev, %  Entries  Errors  Retries
---------------------  --------  -------------  ----------  ---------------  -------  ------  -------
fast-glob-current.js   4.390     0.252          6.253       0.015            4        0       1
fast-glob-previous.js  5.653     0.633          6.051       0.056            4        0       1

===> Benchmark pattern "**" with 100 launches (regression, async)
===> Max stdev: 7 | Retries: 3 | Options: {}

Name                   Time, ms  Time stdev, %  Memory, MB  Memory stdev, %  Entries  Errors  Retries
---------------------  --------  -------------  ----------  ---------------  -------  ------  -------
fast-glob-current.js   34.587    1.287          10.654      0.607            11835    0       1
fast-glob-previous.js  41.972    2.086          10.236      1.224            11835    0       1

v3.2.11

Compare Source

Full Changelog: mrmlnc/fast-glob@3.2.10...3.2.11

🐛 Bug fixes

Yeap, this is another release aimed at fixing problems with detecting brace expansions in patterns. This time, patterns like abc/{a.txt,b.js} was not marked as a dynamic pattern. So, now the regex has been rewritten to a generalized solution as a function to avoid future problems due to the complexity of the regular expression.

Thanks @​MurzNN for the report of this problem (#​351).

v3.2.10

Compare Source

Full Changelog: mrmlnc/fast-glob@3.2.9...3.2.10

🐛 Bug fixes

  • Fixed a regression in 3.2.8 when the {a,b,c} pattern no longer considered a dynamic pattern (thanks @​amitdahan, #​347).

🥇 New Contributors

v3.2.9

Compare Source

Full Changelog: mrmlnc/fast-glob@3.2.8...3.2.9

🐛 Bug fixes

  • Fixed a regression in 3.2.8 with invalid regular expression on older node.js versions (#​345).

v3.2.8

Compare Source

Full Changelog: mrmlnc/fast-glob@3.2.7...3.2.8

🐛 Bug fixes

Fix directory matching with trailing slashes (#​290)

Thanks @​Trott for investigating the problem and the detailed description.

Previously the src/*/ pattern did not work as expected (like src/*).

Double-slash in the middle of the pattern is not collapsed (#​330)

Starting from this release, patterns like src//* will work like similar patterns without duplicate slashes. This was done for continuity with other solutions (glob, ls src//*, python, golang, …).

Adjust inefficient regular expressions (#​336, #​342, #​344)

Thanks @​Trott for fixing bugs and @​XhmikosR for adding the CodeQL action to CI pipeline.

📖 Documentation

⚙️ Infrastructure

🥇 New Contributors

v3.2.7

Compare Source

🐛 Bug fixes

The previous release (3.2.6) introduced a regression, which makes negative patterns were not applied to patterns outside the current directory.

This release fixes the issue.

v3.2.6

Compare Source

🐛 Bug fixes

  • Now you can use patterns related to the parent directory along with the regular ones. (#​310, #​316)
// Patterns inside current directory → ['*', './*.js']
// Patterns outside current directory → ['../*', './../*.js']

// Previously you could specify a patterns outside current directory.
fg.sync(['../*.txt'])  ['../file.txt']

// But when the pattern inside current directory was added to them, the behavior broke down.
fg.sync(['*.md', '../*.txt'])  ['file.md'] // The '../file.txt' file exists

// After this fix you can mix both kinds of patterns.
fg.sync(['*.md', '../*.txt'])  ['file.md', '../file.txt']

// Right now we do not support patterns like '{.,..}/*.md'.

📖 Documentation

  • Added clarifications for the followSymbolicLinks option.

⚙️ Infrastructure

  • The glob-parent package has been updated to fix vulnerabilities. (#​304)
  • The micromatch package has been updated to eliminate dependency on the picomatch package from this package. (#​256)
  • Node.js 16 has been added to the CI configuration to run tests and benchmarks. Now benchmarks will run only on this version. (#​311)
  • The tiny-glob package has been added to the synchronous product benchmarks. (#​323)
  • The fdir package has been added to synchronous and asynchronous product benchmarks. The latest launch. (#​322)
  • The .npmignore file has been replaced by the files field in the package.json file. (#​321)

v3.2.5

Compare Source

🐛 Bug fixes

📖 Documentation

⚙️ Infrastructure

  • Use the latest versions of OS in CI (#​279).
  • Move from Azure Pipelines to GitHub Actions (#​299).

v3.2.4

Compare Source

🐛 Bug fixes

  • Fixed a regression in 3.2.3 when the caseSensitiveMatch option is disabled (#​276)

v3.2.3

Compare Source

🐛 Bug fixes

  • Fixed an issue when the unique option led to incorrect results when mixing static and dynamic patterns (#​268)
  • Fixed an issue when the pattern starting with a forward slash (#​266)

v3.2.2

Compare Source

🐛 Bug fixes

  • Fix a problem with patterns with leading dot segment (like ./… or .\\…) (#​257)

v3.2.1

Compare Source

💬 Common

v3.2.0

Compare Source

💬 Common

  • An empty pattern now causes an error (#​247)

🚀 Improvements

In the #​156 issue we've redesigned the deep filter, which controls the reading of directories in depth.

Previously, this filter did not use positive patterns directly (only their maximum depth). The example below shows how many extra directories we read:

{src,fixtures}/**

src → read
fixtures → read
out → read
node_modules → read

Now we apply positive patterns.

{src,fixtures}/**

src → read
fixtures → read
out → skip
node_modules → skip
Synthetic benchmark

More benchmarks can be found here.

{fixtures,out}/{first,second}/*
sync, ms async, ms stream, ms
3.x.x 13 22 20
3.2.0 5 9 8
{fixtures,out}/**
sync, ms async, ms stream, ms
3.x.x 37 49 52
3.2.0 6 10 12
Real world benchmark
  • Globby
  • Prettier
  • {blocks-*,construct}/**/*.styl (a very large project) 13s → 0.16s
Known issues
  • For some cases, there is a noticeable slowdown of 3-6%.
  • Patterns containing {a..z} (or similar) may introduce some slowdown.
  • Actually, fast-glob is 2 times slower than node-glob in this scenario.

We will work on this in the future.

🎉 Thanks

v3.1.1

Compare Source

🐛 Bug fixes

Stream is not closed when the receiver is closed (#​239)

Previously, we read directories in the stream, even after the receiver is closed. Now we stop reading after closing the receiver by .emit('end'), .destroy() or for await...of.

const fg = require('fast-glob');

(async () => {
    const stream = fg.stream('**');

    for await (const entry of stream) {
        console.log(entry);

        return;
    }
})();

Most likely, in future releases, we will improve integration with streams (#​243).

v3.1.0: 3.1.0

Compare Source

💬 Common

📖 Documentation

🐛 Bug Fixes

  • Matching specific file is not found when pattern contains parentheses (#​223)
    • ⚠️ Now we route patterns with escape symbol to dynamic patterns
  • Match subdirectories starting with . in {dot: false} mode (#​226)

⚙️ Infrastructure

  • Move from TSLint to ESLint (#​233)

v3.0.4

Compare Source

This is a maintenance release.

💬 Common

v3.0.3

Compare Source

💬

  • Correct method for the Stream API in the documentation (#​217, thanks @​bluelovers)
  • We have divided the benchmark into two types:
    • The product benchmark is a comparison of performance relative to competitors.
    • The regression benchmark is a comparison of performance relative to the previous version.
  • We added a launch of both types of benchmark in CI. Automatically starts only when the master branch is built.
  • Now the smoke tests are run for all API's (sync, async, stream).

🐛 Bug fixes

  • Non-existing directories in the globbing pattern throw an error with the asynchronous API (#​211)
  • The markDirectories option adds extra slashes for every directory in the path with the asynchronous API (#​214)

v3.0.2

Compare Source

The fast-glob3.0.0 was released with one known bug. This release fixes it.

🐛 Bug fixes

High memory usage for very big directories (#​204)
Highlights
  • Entries: 4 000 000
  • Before: 4.1GB of RAM (37s)
  • After: 0.8GB of RAM (25s)
Explanation

In short, we called 2x replace and startsWith on every entry. Together, that's 12 million calls.

v3.0.1

Compare Source

💬 Common

v3.0.0

Compare Source

🌮 Thanks

📑 Summary

This release aims to fix architectural issues, increase performance and reduce size of package.

💣 Breaking changes

Since this is a major release, we are introducing a few breaking changes:

  • Support for the fast-glob@2 is ending.
  • Require Node.js 8+. But we recommend using 10.10+ for performance issues.
  • Only forward-slashes in glob expression. Previously, we convert all slashes to the forward-slashes, which did not allow the use of escaping. See pattern syntax section in the README.md file.
  • Removed options: nobrace, noglobstar, noext, nocase, transform.
  • Renamed options:
  • The deep option now accepts only number type and default value now is Infinity instead of true.
  • The async method was removed. Use fg(/* … */) instead.
  • The type of returned object when the stats option is enabled is completely changed.

🐛 Bug fixes

🚀 Improvements

💬 Common
  • Package size after installation is decreased: 2.47MB0.42MB.
  • Package require time decreased: 534ms78ms.
🌪️ Speed

Wow! The new version is very fast. At least twice as fast as the previous version. Probably this is the fastest solution in the Node.js world. And that's not all! We will work on performance issues in the future 🐢.

  • Speed up between versions for directory with 265k entries: 5x (19s → 4s).
  • Speed up between versions for directory with 4kk entries: 4x (4m → 1m).

Look at the benchmarks section in the README.md file.

⚙️ Flexibility

Also in this release we have worked on simplifying some scenarios.

Now, thanks to the new mechanism, you can get the type of entry without additional costs! Works only on Node.js 10.10+. Look at the objectMode option.

🤕 Known issues in this update

v2.2.7

Compare Source

Another release of bug fixes

📖 Documentation

  • Added description of how to work with UNC paths (#​89)
  • The ignore option takes an array (#​184 — thanks @​lukeis for contributing)
  • Clarify description of the case option.

🐛 Bug Fixes

Paths not resolved in some cases (#​157)

Thanks @​stevenvachon for issue reporting 🎉

If the user has passed a . or .. and the absolute option is enabled, the paths of the found entries were not absolute (they contained . or `..).

before

fg.sync('/project/temp/../*.js', { absolute: true }); // → ['/project/temp/../something.js']

after

fg.sync('/project/temp/../*.js', { absolute: true }); // → ['/project/something.js']
The case option not work with static patterns (#​172)

Thanks @​davidmerfield for issue reporting 🎉

For performance reasons with fast-glob@2.1.0 we introduce static patterns (patterns without glob magic).

Unfortunately, then we forgot about supporting the case (nocase) option. Now the case option works fine with static patterns too. We also improved the documentation for this option.

directory/
  - file.txt
  - File.txt

before

fg.sync('file.txt', { case: false }) // → ['file.txt']

after

fg.sync('file.txt', { case: false }) // → ['file.txt', 'File.txt']
Question mark is not recognized as dynamic glob and fails to find files (#​174)

Thanks @​vladshcherbin for issue reporting and contributing 🎉

This is also related to static patterns.

Previously we mark patterns like assets/?ss.css to static and tried to find such file on file system. Now it will works fine.

before

fg.sync('assets/?ss.css'); // → []

after

fg.sync('assets/?ss.css'); // → ['asserts/css.css']

Configuration

📅 Schedule: Branch creation - "after 10pm every weekday,before 5am every weekday,every weekend" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot added the renovate PR created by Renovate label Aug 10, 2019
@renovate
Copy link
Author

renovate bot commented Mar 25, 2023

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
renovate PR created by Renovate
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant