Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

glob-cache

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

glob-cache

Caching layer (using `cacache`) for any file globbing solution (`glob`, `fast-glob`, `tiny-glob`). Makes you Instant Fast™ and allows you to hook into very specific & important part of the process

  • 0.1.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
144
increased by585.71%
Maintainers
1
Weekly downloads
 
Created
Source

glob-cache npm version License

Caching layer (using cacache) for any file globbing solution (glob, fast-glob, tiny-glob). Makes you Instant Fast™ and allows you to hook into very specific & important part of the process

Please consider following this project's author, Charlike Mike Reagent, and :star: the project to show your :heart: and support.

Code style CircleCI linux build CodeCov coverage status DavidDM dependency status Renovate App Status Make A Pull Request Time Since Last Commit

If you have any how-to kind of questions, please read the Contributing Guide and Code of Conduct documents. For bugs reports and feature requests, please create an issue or ping @tunnckoCore at Twitter.

Conventional Commits Minimum Required Nodejs NPM Downloads Monthly NPM Downloads Total Share Love Tweet Twitter

Project is semantically versioned & automatically released from GitHub Actions with Lerna.

Become a Patron Buy me a Kofi PayPal Donation Bitcoin Coinbase Keybase PGP

TopicContact
Any legal or licensing questions, like private or commerical usetunnckocore_legal
For any critical problems and security reportstunnckocore_security
Consulting, professional support, personal or team trainingtunnckocore_consulting
For any questions about Open Source, partnerships and sponsoringtunnckocore_opensource

Table of Contents

(TOC generated by verb using markdown-toc)

Install

This project requires Node.js >=12.13 (see Support & Release Policy). Install it using yarn or npm.
We highly recommend to use Yarn when you think to contribute to this project.

$ yarn add glob-cache

API

Generated using jest-runner-docs.

globCache

Match files and folders using glob patterns. Returns a resolved Promise containing a { results, cacache } object - where results is an array of Context objects and cacache is the cacache package.

Signature

function(options)

Params

  • options.include {Array<string>} - string or array of string glob patterns
  • options.exclude {string} - ignore patterns
  • options.always {boolean} - a boolean that makes options.hook to always be called
  • options.hook {Function} - a hook function passed with Context
  • options.glob {Function} - a globbing library like glob, fast-glob, tiny-glob, defaults to fast-glob
  • options.globOptions {object} - options passed to the options.glob library
  • options.cacheLocation {string} - a filepath location of the cache, defaults to ./.cache/glob-cache
  • returns {Promise}

Example

const tinyGlob = require('tiny-glob');
const glob = require('glob-cache');

glob({ include: 'src/*.js', glob: tinyGlob }).then(({ results }) => {
  console.log(results);
});

Context and how it works

Each context contains a { file, cacheFile, cacheLocation, cacache } and more properties. The file one represents the fresh file loaded from the system, the cacheFile represents the file from the cache. Both has path, size and integrity properties, plus more.

The cacheFile can be null if it's the first hit (not found in cache), in such case the ctx.missing will be true and on next runs this will be false.

Important to note is that cacheFile don't have a contents property, but has path which points to the place of the cache file on the disk.

The interesting one is the ctx.valid. This one is the reason for the whole existance of this module. If both the "source" file and cache file are the same, e.g. same size and integrity (which means the contents/shasum are equal), then ctx.valid: true, otherwise this will be false. Simply said, when you change your file(s) matched by a the given glob pattern(s), then it will be valid: false and the options.hook will be called.

There is also one more key point, and it's in the options. We have options.hook and options.always. By default we only call the options.hook when valid: false which is important and intentional, because most of the time you only want to do or run something when there are actual changes in the files, right? But there are also a cases when you want more control, that's why we have options.always option which bypass the previous validation and so the options.hook will always be called and so you can decide what to do or make more additional checks - for example, listen the mtime - or track the dependencies of the file. Tracking dependencies is something that some test runner may benefit.

Because all that, we also expose cacache to that options.hook, so you can update or clean the cache - it's up to you.

Example results array with context (which is also passed to options.hook):

[
  {
    file: {
      path: '/home/charlike/github/tunnckoCore/opensource/packages/glob-cache/test/index.js',
      contents: <Buffer 27 75 73 65 20 73 74 72 69 63 74 27 3b 0a 0a 63 6f 6e 73 74 20 70 61 74 68 20 3d 20 72 65 71 75 69 72 65 28 27 70 61 74 68 27 29 3b 0a 63 6f 6e 73 74 ... 350 more bytes>,
      size: 400,
      integrity: 'sha512-p5daDYwu9vhNNjT9vfRrWHXIwwlPxeqeub4gs3qMZ88J//ONUH7Je2Muu9o+MxjA1Fv3xwbgkBdjcHgdj7ar4A=='
    },
    cacheFile: null,
    cacheLocation: '/home/charlike/github/tunnckoCore/opensource/packages/glob-cache/test/fixture-cache',
    cacache: { /* cacache instance */ },
    valid: true,
    missing: true
  },
  {
    file: {
      path: '/home/charlike/github/tunnckoCore/opensource/packages/glob-cache/src/index.js',
      contents: <Buffer 2f 2a 20 65 73 6c 69 6e 74 2d 64 69 73 61 62 6c 65 20 6e 6f 2d 70 61 72 61 6d 2d 72 65 61 73 73 69 67 6e 20 2a 2f 0a 0a 27 75 73 65 20 73 74 72 69 63 ... 5268 more bytes>,
      size: 5318,
      integrity: 'sha512-946V9t8jWq6oGdAVnrl206b077+Ejl0VFn/MK1axZdsFyvzGrT+MfzH2aVQOUPMcp8jm5tZvES7A1XXEsRvZ9w=='
    },
    cacheFile: null,
    cacheLocation: '/home/charlike/github/tunnckoCore/opensource/packages/glob-cache/test/fixture-cache',
    cacache: { /* cacache instance */ },
    valid: true,
    missing: true
  }
]

One more thing to clarify. When there is no cache, e.g. the state is "missing", and if you look over the code you'll see that the valid is hard-coded/forced to be true. You may expect the hook to be called in the first run but it will not. For that behavior you should use the always: true.

back to top

Contributing

Guides and Community

Please read the Contributing Guide and Code of Conduct documents for advices.

For bug reports and feature requests, please join our community forum and open a thread there with prefixing the title of the thread with the name of the project if there's no separate channel for it.

Consider reading the Support and Release Policy guide if you are interested in what are the supported Node.js versions and how we proceed. In short, we support latest two even-numbered Node.js release lines.

Support the project

Become a Partner or Sponsor? :dollar: Check the Partner, Sponsor or Omega-level tiers! :tada: You can get your company logo, link & name on this file. It's also rendered on package page in npmjs.com and yarnpkg.com sites too! :rocket:

Not financial support? Okey! Pull requests, stars and all kind of contributions are always welcome. :sparkles:

Wonderful Contributors

Thanks to the hard work of these wonderful people this project is alive! It follows the all-contributors specification. Don't hesitate to add yourself to that list if you have made any contribution! ;) See how, here.


Charlike Mike Reagent

💻 📖 💬 👀 🔍

Consider showing your support to them. :sparkling_heart:

back to top

License

Copyright (c) 2020-present, Charlike Mike Reagent <opensource@tunnckocore.com> & contributors.
Released under the (Parity-7.0.0 AND Prosperity-3.0.0) OR Patron-1.0.0 License.

Keywords

FAQs

Package last updated on 19 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc