Socket
Socket
Sign inDemoInstall

readdir-cluster

Package Overview
Dependencies
2
Maintainers
1
Versions
81
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.3.0 to 6.0.0-next.1703914332.2dacc48c24cc04bab274741e94914479a34c0c17

bin.cjs

8

LICENSE.md
<!-- LICENSEFILE/ -->
<h1>License</h1>
# License
Unless stated otherwise all works are:
<ul><li>Copyright &copy; 2015+ <a href="http://bevry.me">Bevry Pty Ltd</a></li></ul>
- Copyright &copy; [Benjamin Lupton](https://balupton.com)
and licensed under:
<ul><li><a href="http://spdx.org/licenses/Artistic-2.0.html">Artistic License 2.0</a></li></ul>
- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)
<h2>The Artistic License 2.0</h2>
## The Artistic License 2.0

@@ -15,0 +15,0 @@ <pre>

{
"title": "readdir-cluster",
"name": "readdir-cluster",
"version": "5.3.0",
"description": "Use multiple CPU cores via clusters for the fastest way to read nested directories and their stats",
"version": "6.0.0-next.1703914332.2dacc48c24cc04bab274741e94914479a34c0c17",
"license": "Artistic-2.0",
"description": "Create a cluster of workers to iterate through the filesystem",
"homepage": "https://github.com/bevry/readdir-cluster",
"license": "Artistic-2.0",
"funding": "https://bevry.me/fund",
"repository": {
"type": "git",
"url": "git+https://github.com/bevry/readdir-cluster.git"
},
"bugs": {
"url": "https://github.com/bevry/readdir-cluster/issues"
},
"keywords": [
"cluster",
"directory",
"esnext",
"es2015",
"es2017",
"es2022",
"es5",
"export-default",
"folder",

@@ -20,2 +32,5 @@ "fs",

"tree",
"typed",
"types",
"typescript",
"watch",

@@ -64,17 +79,48 @@ "watching",

},
"funding": "https://bevry.me/fund",
"author": "2015+ Bevry Pty Ltd <us@bevry.me> (http://bevry.me)",
"author": "Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton)",
"authors": [
"Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."
],
"maintainers": [
"Benjamin Lupton <b@lupton.cc> (https://github.com/balupton)"
"Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."
],
"contributors": [
"Benjamin Lupton <b@lupton.cc> (https://github.com/balupton)"
"Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton)"
],
"bugs": {
"url": "https://github.com/bevry/readdir-cluster/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/bevry/readdir-cluster.git"
},
"sponsors": [
"Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher",
"Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.",
"Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.",
"Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)",
"Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)",
"Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.",
"Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"
],
"donors": [
"Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)",
"Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)",
"Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)",
"Chad (https://opencollective.com/chad8)",
"Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)",
"dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)",
"Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)",
"entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)",
"GitHub (https://github.com/about) (https://github.com/github)",
"Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)",
"Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)",
"Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)",
"Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)",
"Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)",
"Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)",
"Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)",
"Pleo (https://pleo.io) (https://github.com/pleo-io)",
"Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)",
"Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)",
"Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)",
"Sentry (https://sentry.io) (https://github.com/getsentry)",
"ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)",
"Skunk Team (https://skunk.team) (https://github.com/skunkteam)",
"Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)",
"WriterJohnBuck (https://github.com/WriterJohnBuck)"
],
"engines": {

@@ -85,37 +131,146 @@ "node": ">=4"

{
"description": "ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules",
"description": "TypeScript source code with Import for modules",
"directory": "source",
"entry": "index.ts",
"tags": [
"source",
"typescript",
"import"
],
"engines": false
},
{
"description": "TypeScript compiled against ES2022 for Node.js 14 || 16 || 18 || 20 || 21 with Require for modules",
"directory": "edition-es2022",
"entry": "index.js",
"tags": [
"source",
"compiled",
"javascript",
"esnext",
"es2022",
"require"
],
"engines": {
"node": "4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"
"node": "14 || 16 || 18 || 20 || 21",
"browsers": false
}
},
{
"description": "TypeScript compiled against ES2017 for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules",
"directory": "edition-es2017",
"entry": "index.js",
"tags": [
"compiled",
"javascript",
"es2017",
"require"
],
"engines": {
"node": "8 || 10 || 12 || 14 || 16 || 18 || 20 || 21",
"browsers": false
}
},
{
"description": "TypeScript compiled against ES2015 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules",
"directory": "edition-es2015",
"entry": "index.js",
"tags": [
"compiled",
"javascript",
"es2015",
"require"
],
"engines": {
"node": "6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21",
"browsers": false
}
},
{
"description": "TypeScript compiled against ES5 for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules",
"directory": "edition-es5",
"entry": "index.js",
"tags": [
"compiled",
"javascript",
"es5",
"require"
],
"engines": {
"node": "4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21",
"browsers": false
}
},
{
"description": "TypeScript compiled against ES2017 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Import for modules",
"directory": "edition-es2017-esm",
"entry": "index.js",
"tags": [
"compiled",
"javascript",
"es2017",
"import"
],
"engines": {
"node": "12 || 14 || 16 || 18 || 20 || 21",
"browsers": false
}
},
{
"description": "TypeScript compiled Types with Import for modules",
"directory": "edition-types",
"entry": "index.d.ts",
"tags": [
"compiled",
"types",
"import"
],
"engines": false
}
],
"type": "commonjs",
"main": "source/index.js",
"bin": "bin.cjs",
"types": "edition-types/index.d.ts",
"type": "module",
"main": "index.cjs",
"exports": {
"node": {
"types": "./edition-types/index.d.ts",
"import": "./edition-es2017-esm/index.js",
"default": "./index.cjs",
"require": "./edition-es2022/index.js"
}
},
"dependencies": {
"editions": "^6.21.0"
},
"devDependencies": {
"@bevry/update-contributors": "^1.23.0",
"assert-helpers": "^11.9.0",
"eslint": "^8.55.0",
"eslint-config-bevry": "^5.2.0",
"@types/node": "^20.10.6",
"@typescript-eslint/eslint-plugin": "^6.16.0",
"@typescript-eslint/parser": "^6.16.0",
"assert-helpers": "^11.12.0",
"eslint": "^8.56.0",
"eslint-config-bevry": "^5.4.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.0.1",
"kava": "^7.5.0",
"prettier": "^3.1.0",
"projectz": "^3.4.0",
"valid-directory": "^4.6.0"
"eslint-plugin-prettier": "^5.1.2",
"filedirname": "^3.4.0",
"kava": "^7.8.0",
"prettier": "^3.1.1",
"projectz": "^4.2.0",
"typedoc": "^0.25.4",
"typescript": "5.3.3",
"valid-directory": "^4.9.0"
},
"scripts": {
"our:bin": "node ./bin.cjs",
"our:clean": "rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next",
"our:compile": "printf '%s\n' 'no need for this project'",
"our:compile": "npm run our:compile:edition-es2015 && npm run our:compile:edition-es2017 && npm run our:compile:edition-es2017-esm && npm run our:compile:edition-es2022 && npm run our:compile:edition-es5 && npm run our:compile:edition-types",
"our:compile:edition-es2015": "tsc --module commonjs --target ES2015 --outDir ./edition-es2015 --project tsconfig.json && ( test ! -d edition-es2015/source || ( mv edition-es2015/source edition-temp && rm -rf edition-es2015 && mv edition-temp edition-es2015 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2015/package.json",
"our:compile:edition-es2017": "tsc --module commonjs --target ES2017 --outDir ./edition-es2017 --project tsconfig.json && ( test ! -d edition-es2017/source || ( mv edition-es2017/source edition-temp && rm -rf edition-es2017 && mv edition-temp edition-es2017 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2017/package.json",
"our:compile:edition-es2017-esm": "tsc --module ESNext --target ES2017 --outDir ./edition-es2017-esm --project tsconfig.json && ( test ! -d edition-es2017-esm/source || ( mv edition-es2017-esm/source edition-temp && rm -rf edition-es2017-esm && mv edition-temp edition-es2017-esm ) ) && printf '%s' '{\"type\": \"module\"}' > edition-es2017-esm/package.json",
"our:compile:edition-es2022": "tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json",
"our:compile:edition-es5": "tsc --module commonjs --target ES5 --outDir ./edition-es5 --project tsconfig.json && ( test ! -d edition-es5/source || ( mv edition-es5/source edition-temp && rm -rf edition-es5 && mv edition-temp edition-es5 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es5/package.json",
"our:compile:edition-types": "tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )",
"our:deploy": "printf '%s\n' 'no need for this project'",
"our:meta": "npm run our:meta:contributors && npm run our:meta:projectz",
"our:meta:contributors": "update-contributors",
"our:meta:projectz": "projectz compile",
"our:meta": "npm run our:meta:docs && npm run our:meta:projectz",
"our:meta:docs": "npm run our:meta:docs:typedoc",
"our:meta:docs:typedoc": "rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source",
"our:meta:projectz": "projectz --offline",
"our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push",

@@ -130,7 +285,6 @@ "our:release:check-changelog": "cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)",

"our:test": "npm run our:verify && npm test",
"our:verify": "npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier",
"our:verify:directory": "valid-directory",
"our:verify": "npm run our:verify:eslint && npm run our:verify:prettier",
"our:verify:eslint": "eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source",
"our:verify:prettier": "prettier --write .",
"test": "node ./source/test.js"
"test": "node ./test.cjs"
},

@@ -145,5 +299,5 @@ "eslintConfig": {

"singleQuote": true,
"trailingComma": "all",
"trailingComma": "es5",
"endOfLine": "lf"
}
}
}
<!-- TITLE/ -->
<h1>readdir-cluster</h1>
# readdir-cluster
<!-- /TITLE -->
<!-- BADGES/ -->

@@ -28,6 +27,5 @@

<!-- DESCRIPTION/ -->
Use multiple CPU cores via clusters for the fastest way to read nested directories and their stats
Create a cluster of workers to iterate through the filesystem

@@ -39,72 +37,106 @@ <!-- /DESCRIPTION -->

```javascript
const readdir = require('readdir-cluster')
const paths = []
[Complete API Documentation.](http://master.readdir-cluster.bevry.surge.sh/docs/)
function iterator(fullPath, relativePath, statObject) {
if (statObject.directory && relativePath[0] === '.') {
return false // do not delve deeper into hidden paths
}
paths.push(fullPath)
```typescript
import readdirCluster, { Stat } from 'readdir-cluster'
// note that Stat is not the same as fs.Stats as it has functions removed, as it needed to be serialisable
function iterator(path: string, filename: string, stat: Stat) {
// skip directories and files that start with .
if (filename[0] === '.') return false
// do not recurse into directories
if (stat.directory) return false
}
readdir(__dirname, iterator, function (err) {
if (err) throw err
console.log('completed successfully:', paths)
})
const paths = await readdirCluster({ directory: '.', iterator })
console.log(paths)
```
### Performance
- Running `readdir-cluster .` returns 7388 files in 500ms
- Running [`readdir`](https://nodejs.org/api/fs.html#fsreaddirpath-options-callback) with `recursive: true` returns 7388 files in 100ms
```javascript
import { readdir } from 'fs'
readdir('.', { recursive: true }, (err, files) => {
if (err) console.error(err)
else if (files.length) process.stdout.write(files.join('\n') + '\n')
})
```
- Running [fdir](https://github.com/thecodrr/fdir) returns 6480 files in 100ms
```javascript
import { fdir } from 'fdir'
const api = new fdir().withBasePath().crawl(process.argv[2])
api.withPromise().then((files) => {
if (files.length) process.stdout.write(files.join('\n') + '\n')
})
```
As such, you should probably use `readdir` with `recursive: true` or `fdir` instead. As for why this package exists, readdir-cluster was created in 2005, recursive was added to Node.js in 2023, and fdir was created in 2020. That said, there are [several issues](https://github.com/bevry/readdir-cluster/issues) that could potentially improve readdir-cluster performance.
<!-- INSTALL/ -->
<h2>Install</h2>
## Install
<a href="https://npmjs.com" title="npm is a package manager for javascript"><h3>npm</h3></a>
<ul>
<li>Install: <code>npm install --save readdir-cluster</code></li>
<li>Import: <code>import * as pkg from ('readdir-cluster')</code></li>
<li>Require: <code>const pkg = require('readdir-cluster')</code></li>
</ul>
### [npm](https://npmjs.com "npm is a package manager for javascript")
<h3><a href="https://editions.bevry.me" title="Editions are the best way to produce and consume packages you care about.">Editions</a></h3>
#### Install Globally
<p>This package is published with the following editions:</p>
- Install: `npm install --global readdir-cluster`
- Executable: `readdir-cluster`
<ul><li><code>readdir-cluster</code> aliases <code>readdir-cluster/source/index.js</code></li>
<li><code>readdir-cluster/source/index.js</code> is <a href="https://en.wikipedia.org/wiki/ECMAScript#ES.Next" title="ECMAScript Next">ESNext</a> source code for <a href="https://nodejs.org" title="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a> for modules</li></ul>
#### Install Locally
- Install: `npm install --save readdir-cluster`
- Executable: `npx readdir-cluster`
- Import: `import pkg from ('readdir-cluster')`
- Require: `const pkg = require('readdir-cluster').default`
### [Editions](https://editions.bevry.me "Editions are the best way to produce and consume packages you care about.")
This package is published with the following editions:
- `readdir-cluster` aliases `readdir-cluster/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions "You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment") to automatically select the correct edition for the consumer's environment
- `readdir-cluster/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules
- `readdir-cluster/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules
- `readdir-cluster/edition-es2017/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2017](https://en.wikipedia.org/wiki/ES2017 "ECMAScript 2017") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules
- `readdir-cluster/edition-es2015/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2015](https://babeljs.io/docs/en/learn#ecmascript-2015-features "ECMAScript 2015") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules
- `readdir-cluster/edition-es5/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against ES5 for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules
- `readdir-cluster/edition-es2017-esm/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2017](https://en.wikipedia.org/wiki/ES2017 "ECMAScript 2017") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 12 || 14 || 16 || 18 || 20 || 21 with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules
- `readdir-cluster/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules
<!-- /INSTALL -->
<!-- HISTORY/ -->
<h2>History</h2>
## History
<a href="https://github.com/bevry/readdir-cluster/blob/master/HISTORY.md#files">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>
[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/readdir-cluster/blob/HEAD/HISTORY.md#files)
<!-- /HISTORY -->
<!-- BACKERS/ -->
<!-- CONTRIBUTE/ -->
## Backers
<h2>Contribute</h2>
### Code
<a href="https://github.com/bevry/readdir-cluster/blob/master/CONTRIBUTING.md#files">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>
[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/readdir-cluster/blob/HEAD/CONTRIBUTING.md#files)
<!-- /CONTRIBUTE -->
#### Authors
- [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.
<!-- BACKERS/ -->
#### Maintainers
<h2>Backers</h2>
- [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.
<h3>Maintainers</h3>
#### Contributors
These amazing people are maintaining this project:
- [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/readdir-cluster/commits?author=balupton "View the GitHub contributions of Benjamin Lupton on repository bevry/readdir-cluster")
<ul><li><a href="https://github.com/balupton">Benjamin Lupton</a> — <a href="https://github.com/bevry/readdir-cluster/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/readdir-cluster">view contributions</a></li></ul>
### Finances
<h3>Sponsors</h3>
No sponsors yet! Will you be the first?
<span class="badge-githubsponsors"><a href="https://github.com/sponsors/balupton" title="Donate to this project using GitHub Sponsors"><img src="https://img.shields.io/badge/github-donate-yellow.svg" alt="GitHub Sponsors donate button" /></a></span>

@@ -119,25 +151,54 @@ <span class="badge-thanksdev"><a href="https://thanks.dev/u/gh/bevry" title="Donate to this project using ThanksDev"><img src="https://img.shields.io/badge/thanksdev-donate-yellow.svg" alt="ThanksDev donate button" /></a></span>

<h3>Contributors</h3>
#### Sponsors
These amazing people have contributed code to this project:
- [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher
- [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.
- [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.
- [Poonacha Medappa](https://poonachamedappa.com)
- [Rob Morris](https://github.com/Rob-Morris)
- [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.
- [Syntax](https://syntax.fm) — Syntax Podcast
<ul><li><a href="https://github.com/balupton">Benjamin Lupton</a> — <a href="https://github.com/bevry/readdir-cluster/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/readdir-cluster">view contributions</a></li></ul>
#### Donors
<a href="https://github.com/bevry/readdir-cluster/blob/master/CONTRIBUTING.md#files">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>
- [Andrew Nesbitt](https://nesbitt.io)
- [Armen Mkrtchian](https://mogoni.dev)
- [Balsa](https://balsa.com)
- [Chad](https://opencollective.com/chad8)
- [Codecov](https://codecov.io)
- [dr.dimitru](https://veliovgroup.com)
- [Elliott Ditman](https://elliottditman.com)
- [entroniq](https://gitlab.com/entroniq)
- [GitHub](https://github.com/about)
- [Hunter Beast](https://cryptoquick.com)
- [Jean-Luc Geering](https://github.com/jlgeering)
- [Michael Duane Mooring](https://mdm.cc)
- [Michael Harry Scepaniak](https://michaelscepaniak.com)
- [Mohammed Shah](https://github.com/smashah)
- [Mr. Henry](https://mrhenry.be)
- [Nermal](https://arjunaditya.vercel.app)
- [Pleo](https://pleo.io)
- [Poonacha Medappa](https://poonachamedappa.com)
- [Rob Morris](https://github.com/Rob-Morris)
- [Robert de Forest](https://github.com/rdeforest)
- [Sentry](https://sentry.io)
- [ServieJS](https://github.com/serviejs)
- [Skunk Team](https://skunk.team)
- [Syntax](https://syntax.fm)
- [WriterJohnBuck](https://github.com/WriterJohnBuck)
<!-- /BACKERS -->
<!-- LICENSE/ -->
<h2>License</h2>
## License
Unless stated otherwise all works are:
<ul><li>Copyright &copy; 2015+ <a href="http://bevry.me">Bevry Pty Ltd</a></li></ul>
- Copyright &copy; [Benjamin Lupton](https://balupton.com)
and licensed under:
<ul><li><a href="http://spdx.org/licenses/Artistic-2.0.html">Artistic License 2.0</a></li></ul>
- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)
<!-- /LICENSE -->
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc