Socket
Socket
Sign inDemoInstall

scandirectory

Package Overview
Dependencies
Maintainers
1
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

scandirectory - npm Package Compare versions

Comparing version 2.5.0 to 3.0.0

es2015/index.js

571

HISTORY.md
# History
## v2.5.0 December 12, 2014
## v3.0.0 2016 October 20
- Simplified and now powered by [readdir-cluster](https://github.com/bevry/readdir-cluster)
- Converted from CoffeeScript to JavaScript
## v2.5.0 2014 December 17
- Extracted from [balupton/bal-util](https://github.com/balupton/bal-util)
- Changed accepted arguments
## v2.4.3 December 12, 2014
- Fixed flow (regression since v2.4.2)
## v2.4.2 December 12, 2014
- Updated dependencies
## v2.4.1 January 10, 2014
- Updated dependencies
- Repackaged
## v2.4.0 December 10, 2013
- `balUtilPaths` changes:
- Added `resolveCaseSensitivePath(path, next)`
- Extracted out:
- [binaryextensions](https://github.com/bevry/binaryextensions) < `balUtilPaths.binaryExtensions`
- [ignorefs](https://github.com/bevry/ignorefs) < `balUtilPaths.isIgnoredPath`
- [ignorepatterns](https://github.com/bevry/ignorepatterns/blob/master/HISTORY.md) < `balUtilPaths.ignoreCommonPatterns`
- [istextorbinary](https://github.com/bevry/istextorbinary) < `balUtilPaths.(isTextSync|isText|getEncodingSync|getEncoding)`
- [textextensions](https://github.com/bevry/textextensions) < `balUtilPaths.textExtensions`
## v2.3.2 November 1, 2013
- Can now pass `binary` as the `readFiles` option value to return buffers instead of strings for file contents
- Updated dependencies
## v2.3.1 October 27, 2013
- Updated dependencies
## v2.3.0 July 12, 2013
- Split out `balUtilEvents.EventEmitterEnhanced` into [event-emitter-grouped](https://github.com/bevry/event-emitter-grouped)
## v2.2.0 June 24, 2013
- Split out `balUtilModules` into [safeps](https://github.com/bevry/safeps)
- Split out `balUtilFlow.extractOptsAndCallback` into [extract-opts](https://github.com/bevry/extract-opts)
## v2.1.0 May 25, 2013
- `balUtilEvent` changes:
- Event listeners can now have priorities. Highest priorities run first. Set them by `listener.priority = 500`
- Added `off` alias for `removeListener`
## v2.0.5 April 25, 2013
- `balUtilFlow` changes:
- `extractOptsAndCallback` now accepts config argument
- `balUtilPaths` changes:
- `readPath` now uses `Wget/1.14 (linux-gnu)` as the default user agent
## v2.0.4 April 6, 2013
- `balUtilPaths` changes:
- Fixed redirect handling on `readPath`
## v2.0.3 April 5, 2013
- `balUtilModules` changes:
- Fixed `spawnCommands`
- `initGitRepo` and `initNodeModules` now take a `log` function rather than a `logger` object (regards opts)
## v2.0.2 April 5, 2013
- `balUtilModules` changes:
- Fixed `spawnCommand` and `spawnCommands`
- `closeProcess` now deprecated in favor of completion callback on `openProcess`
## v2.0.1 April 5, 2013
- `balUtilPaths` changes:
- Removed safefs aliases
## v2.0.0 April 5, 2013
- We no longer alias split off projects, you should use them directly now
- `balUtilModules` changes:
- Killed `(git|node|npm)(Command|Commands)` functions, use `spawnCommand` and `spawnCommands` instead
- `balUtilHTML` changes:
- `replaceElementAsync` now executes tasks in parallel rather than in serial
## v1.18.0 April 1, 2013
- We now use the projects we split away from bal-util
## v1.17.0 March 27, 2013
- Killed explicit browser support, use [Browserify](http://browserify.org/) instead
- Removed the `out` directory from git
- Now compiled with the coffee-script bare option
## v1.16.13 March 23, 2013
- `balUtilEvents` changes:
- `EventEmitterEnhanced` changes:
- Now works with `once` calls in node 0.10.0
- Closes [bevry/docpad#462](https://github.com/bevry/docpad/issues/462)
- Changed `emitSync` to be an alias to `emitSerial` and `emitAsync` to be an alias to `emitParallel`
- Added new `getListenerGroup` function
- `balUtilFlow` changes:
- `fireWithOptionalCallback` can now take the method as an array of `[fireMethod,introspectMethod]` useful for pesly binds
## v1.16.12 March 18, 2013
- `balUtilFlow` changes:
- `Groups::run` signature changed from no arguments to a single `mode` argument
## v1.16.11 March 10, 2013
- `balUtilModules` changes:
- Fixed `getCountryCode` and `getLanguageCode` failing when there is no locale code
## v1.16.10 March 8, 2013
- `balUtilModules` changes:
- Fixed `requireFresh` regression, added test
## v1.16.9 March 8, 2013
- `balUtilModules` changes:
- Added `getLocaleCode`
- Added `getCountryCode`
- Added `getLanguageCode`
## v1.16.8 February 16, 2013
- `balUtilModules` changes:
- `spawnMultiple`, `execMultiple`: now accept a `tasksMode` option that can be `serial` (default) or `parallel`
## v1.16.7 February 12, 2013
- `balUtilPaths` changes:
- `readPath`: do not prefer gzip, but still support it for decoding, as the zlib library is buggy
## v1.16.6 February 12, 2013
- `balUtilPaths` changes:
- `readPath`: add support for gzip decoding for node 0.6 and higher
## v1.16.5 February 6, 2013
- More [browserify](http://browserify.org/) support
## v1.16.4 February 6, 2013
- [Browserify](http://browserify.org/) support
## v1.16.3 February 5, 2013
- Node v0.4 support
- `balUtilPaths` changes:
- Removed deprecated `console.log`s when errors occur (they are now sent to the callback)
- Fixed `determineExecPath` when executable requires the environment configuration
- `balUtilTypes` changes:
- `isEmptyObject` now works for empty values (e.g. `null`)
- `balUtilFlow` changes:
- Added `clone`
- Added `deepClone`
- `setDeep` and `getDeep` now handle `undefined` values correctly
## v1.16.2 February 1, 2013
- `balUtilPaths` changes:
- Added timeout support to `readPath`
- `balUtilFlow` changes:
- Added `setDeep`
- Added `getDeep`
## v1.16.1 January 25, 2013
- `balUtilFlow` changes:
- Added `safeShallowExtendPlainObjects`
- Added `safeDeepExtendPlainObjects`
## v1.16.0 January 24, 2013
- Node v0.9 compatability
- `balUtilModules` changes:
- Added `getEnvironmentPaths`
- Added `getStandardExecPaths(execName)`
- `exec` now supports the `output` option
- `determineExecPath` now resolves the possible paths and checks for their existance
- This avoids Node v0.9's ENOENT crash when executing a path that doesn't exit
- `getExecPath` will now try for `.exe` paths as well when running on windows if an extension hasn't already been defined
- `getGitPath`, `getNodePath`, `getNpmPath` will now also check the environment paths
- `balUtilFlow` changes:
- Added `createSnore`
- Added `suffixArray`
- `flow` now accepts the signatures `({object,actions,action,args,tasks,next})`, `(object, action, args, next)` and `(actions,args,next)`
- `Group` changes:
- `mode` can now be either `parallel` or `serial`, rather than `async` and `sync`
- `async()` is now `parallel()` (aliased for b/c)
- `sync()` is now `serial()` (aliased for b/c)
- `balUtilTypes` changes:
- Added `isEmptyObject`
## v1.15.4 January 8, 2013
- `balUtilPaths` changes:
- Renamed `testIgnorePatterns` to `isIgnoredPath`
- Added aliases for b/c compatibility
- Added new `ignorePaths` option
## v1.15.3 December 24, 2012
- `balUtilModules` changes:
- Added `requireFresh`
## v1.15.2 December 16, 2012
- `balUtilPaths` changes:
- Fixed `scandir` not inheriting ignore patterns when recursing
## v1.15.1 December 15, 2012
- `balUtilPaths` changes:
- Fixed `testIgnorePatterns` when `ignoreCommonPatterns` is set to `true`
## v1.15.0 December 15, 2012
- `balUtilPaths` changes:
- Added `testIgnorePatterns`
- Renamed `ignorePatterns` to `ignoreCommonPatterns`, and added new `ignoreCustomPatterns`
- Affects `scandir` options
- Added emac cache files to `ignoreCommonPatterns`
## v1.14.1 December 14, 2012
- `balUtilModules` changes:
- Added `getExecPath` that will fetch an executable path based on the paths within the environment `PATH` variable
- Rebuilt with CoffeeScript 1.4.x
## v1.14.0 November 23, 2012
- `balUtilPaths` changes:
- `readPath` will now follow url redirects
## v1.13.13 October 26, 2012
- `balUtilPaths` changes:
- Files that start with `~` are now correctly ignored in `commonIgnorePatterns`
## v1.13.12 October 22, 2012
- `balUtilFlow` changes:
- `extend` is now an alias of `shallowExtendPlainObjects` as they were exactly the same
- `balUtilHTML` changes:
- `replaceElement` and `replaceElementAsync` changes:
- now accept arguments in object form as well
- accept a `removeIndentation` argument that defaults to `true`
## v1.13.11 October 22, 2012
- `balUtilPaths` changes:
- `ensurePath` now returns `err` and `exists` instead of just `err`
- `balUtilModules` changes:
- `initGitRepo` will now default `remote` to `origin` and `branch` to `master`
- Added `initOrPullGitRepo`
## v1.13.10 October 7, 2012
- `balUtilPaths` changes:
- Added `shallowExtendPlainObjects`
## v1.13.9 October 7, 2012
- `balUtilPaths` changes:
- VIM swap files now added to `commonIgnorePatterns`
- Thanks to [Sean Fridman](https://github.com/sfrdmn) for [pull request #4](https://github.com/balupton/bal-util/pull/4)
## v1.13.8 October 2, 2012
- `balUtilModules` changes:
- Added `openProcess` and `closeProcess`, and using them in `spawn` and `exec`, used to prevent `EMFILE` errors when there are too many open processes
- Max number of open processes is configurable via the `NODE_MAX_OPEN_PROCESSES` environment variable
` balUtilPaths` changes:
- Max number of open files is now configurable via the`NODE_MAX_OPEN_FILES` environment variable
## v1.13.7 September 24, 2012
- `balUtilPaths` changes:
- Added `textExtensions` and `binaryExtensions`
- The environment variables `TEXT_EXTENSIONS` and `BINARY_EXTENSIONS` will append to these arrays
- Added `isText` and `isTextSync`
## v1.13.6 September 18, 2012
- `balUtilPaths` changes:
- Improved `getEncoding`/`getEncodingSync` detection
- Will now scan start, middle and end, instead of just middle
## v1.13.5 September 13, 2012
- `balUtilPaths` changes:
- Added `getEncoding` and `getEncodingSync`
## v1.13.4 August 28, 2012
- `balUtilModules` changes:
- Failing to retrieve the path on `getGitPath`, `getNodePath` and `getNpmPath` will now result in an error
## v1.13.3 August 28, 2012
- `balUtilModules` changes:
- Fixed `exec` and `execMultiple`
- Added `gitCommands`, `nodeCommands` and `npmCommands`
- Dropped node v0.4 support, min required version now 0.6
## v1.13.2 August 16, 2012
- Repackaged
## v1.13.1 August 16, 2012
- `balUtilHTML` changes:
- Fixed `replaceElement` from mixing up elements that start with our desired selector, instead of being only our desired selector
## v1.13.0 August 3, 2012
- `balUtilModules` changes:
- Added `determineExecPath`, `getNpmPath`, `getTmpPath`, `nodeCommand` and `gitCommand`
- `initNodeModules` and `initGitRepo` will now get the determined path of the executable if a path isn't passed
- Re-added markdown files to npm distribution as they are required for the npm website
## v1.12.5 July 18, 2012
- `balUtilTypes` changes:
- Better checks for `isString` and `isNumber` under some environments
- `balUtilFlow` changes:
- Removed ambigious `clone` function, use `dereference` or `extend` or `deepExtendPlainObjects` instead
## v1.12.4 July 12, 2012
- `balUtilTypes` changes:
- `isObject` now also checks truthyness to avoid `null` and `undefined` from being objects
- `isPlainObject` got so good, it can't get better
- `balUtilFlow` changes:
- added `deepExtendPlainObjects`
## v1.12.3 July 12, 2012
- `balUtilModules` changes:
- `npmCommand` will now only prefix with the nodePath if the npmPath exists
- `npmCommand` and `initNodeModules` now use async fs calls instead of sync calls
## v1.12.2 July 12, 2012
- `balUtilFlow` changes:
- Added `dereference`
## v1.12.1 July 10, 2012
- `balUtilModules` changes:
- Added `stdin` option to `spawn`
## v1.12.0 July 7, 2012
- Rejigged `balUtilTypes` and now top level
- Other components now make use of this instead of inline `typeof` and `instanceof` checks
- `balUtilFlow` changes:
- `isArray` and `toString` moved to `balUtilTypes`
## v1.11.2 July 7, 2012
- `balUtilFlow` changes:
- Added `clone`
- `balUtilModules` changes:
- Fixed exists warning on `initNodeModules`
- `balUtilPaths` changes:
- Added `scanlist`
- `scandir` changes:
- If `readFiles` is `true`, then we will return the contents into the list entries as well as the tree entries (we weren't doing this for lists before)
## v1.11.1 July 4, 2012
- `balUtilFlow` changes:
- `Group` changes:
- Cleaned up the context handling code
- `Block` changes:
- Block constructor as well as `createSubBlock` arguments is now a single `opts` object, acceping the options `name`, `fn`, `parentBlock` and the new `complete`
- Fixed bug introduced in v1.11.0 causing blocks to complete instantly (instead of once their tasks are finished)
## v1.11.0 July 1, 2012
- Added `balUtilHTML`:
- `getAttribute(attributes,attribute)`
- `detectIndentation(source)`
- `removeIndentation(source)`
- `replaceElement(source, elementNameMatcher, replaceElementCallback)`
- `replaceElementAsync(source, elementNameMatcher, replaceElementCallback, next)`
- `balUtilFlow` changes:
- `wait(delay,fn)` introduced as an alternative to `setTimeout`
- `Group` changes:
- `push` and `pushAndRun` signatures are now `([context], task)`
- `context` is optional, and what we should bind to this
- it saves us having to often wrap our task pushing into for each scopes
- task completion callbacks are now optional, if not specified a task will be completed as soon as it finishes executing
- `balUtilEvents`, `balUtilModules` changes:
- Now make use of the `balUtilFlow.push|pushAndRun` new `context` argument to simplify some loops
## v1.10.3 June 26, 2012
- `balUtilModules` changes:
- `initNodeModules` will now install modules from cache, unless `force` is true
## v1.10.2 June 26, 2012
- `balUtilModules` changes:
- `initNodeModules` will now never install modules from cache
## v1.10.1 June 26, 2012
- `balUtilModules` changes:
- Fixed `npmCommand` under some situations
## v1.10.0 June 26, 2012
- `balUtilModules` changes:
- Added `spawnMultiple`, `execMultiple`, `gitGitPath`, `getNodePath`, and `npmCommand`
- `spawn` and `exec` are now only for single commands, use the new `spawnMultiple` and `execMultiple` for multiple commands instead
- error exit code is now anything that isnt `0`
## v1.9.4 June 22, 2012
- Fixed a problem with large asynchronous groups
## v1.9.3 June 22, 2012
- `balUtilFlow` changes:
- Added `extractOptsAndCallback` and `extend`
## v1.9.2 June 21, 2012
- `balUtilFlow` changes:
- Added `fireWithOptionalCallback`, updated groups and emitters to use this
## v1.9.1 June 21, 2012
- `balUtilModules` changes:
- `initNodeModules` now supports `output` option
## v1.9.0 June 21, 2012
- `balUtilEvents` changes:
- `EventEmitterEnhanced` changes:
- `emitSync` and `emitAsync` changes:
- The next callback is now optional, if it is not detected then we will automatically mark the listener as completed once we have executed it (in other words, if it doesn't have a next callback, then we treat it as a synchronous listener)
## v1.8.8 June 19, 2012
- Fixed a problem with large synchronous groups
## v1.8.7 June 19, 2012
- Defaulted `dependencies` to an empty object, to hopefully fix [npm issue #2540](https://github.com/isaacs/npm/pull/2540)
## v1.8.6 June 19, 2012
- `balUtilEvents` changes:
- Split `emitSync` and `emitAsync` out of `EventSystem` and into new `EventEmitterEnhanced` that `EventSystem` extends
## v1.8.5 June 11, 2012
- Made next callbacks necessary by default
## v1.8.4 June 11, 2012
- `balUtilModule` changes:
- `spawn`
- will now return results in the order of `err`, `stdout`, `stderr`, `code`, `signal`
- now splits string commands using `/ /`
- `balUtilFlow` changes:
- `Group` will now only return error as an array if we have more than one error
- Updated for Joe v1.0.0
## v1.8.3 June 9, 2012
- `balUtilCompare` changes:
- `packageCompare` will now fail gracefully if it receives malformed json
## v1.8.2 June 9, 2012
- Removed request dependency, we now use the native http/https modules
## v1.8.1 June 9, 2012
- Restructured directories
- Removed generated docs, use the wiki instead
- Moved tests from Mocha to [Joe](https://github.com/bevry/joe)
- Travis now tests against node v0.7
- `balUtilPaths` changes:
- Added `exists` and `existsSync` to normalize node's 0.6 to 0.8 api differences
- Made [request](https://github.com/mikeal/request) an optional dependency
## v1.8.0 June 9, 2012
- Added expiremental `balUtilFlow.Block`
- Possibly some undocumented `balUtilFlow.Group` changes
## v1.7.0 June 4, 2012
- `balUtilFlow` changes:
- `Group` changes:
- Constructor now supports `next` and `mode` arguments in any order
- `clear()` now clears everything
- Added `hasTasks()`
- Group completion callback's first argument (the error argument) is now an array of errors (or null if no errors)
- Added `breakOnError` option (defaults to `true`)
- Added `autoClear` option to clear once all tasks have run (defualts to `false`)
## v1.6.5 May 30, 2012
- `balUtilFlow` changes:
- `Group` changes:
- Reverted the change made in v1.6.4 where errors in callbacks still increment the complete count
- Instead, you should be using the `hasExited()` instead of `hasCompleted()` which is used to find out if everything passed successfully
## v1.6.4 May 30, 2012
- `balUtilFlow` changes:
- Added `flow({object,action,[args],[tasks],next})` to simplify calling a series of functions of an object
- `Group` changes:
- If complete callback is called with an error, it'll still increment the complete count (it didn't before)
- Added `hasExited()`
- `balUtilPaths` changes:
- `writeFile` will now call `ensurePath` before writing the file
## v1.6.3 May 22, 2012
- `balUtilPaths` changes:
- Fixed a problem introduced with v1.6.0 with `isDirectory` not opening the file before closing it
- If the number of open files becomes a negative number, we will now throw an error
- Decreased the max amount of allowed open files from `500` to `100`
- Increased the wait time for opening a file from `50` to `100`
- This is now customisable through the global `waitingToOpenFileDelay`
## v1.6.2 May 13, 2012
- Added support for `balUtilFlow` and `balUtilTypes` to be used inside web browsers
## v1.6.1 May 4, 2012
- `balUtilPaths` changes:
- Fixed `initNodeModules`
## v1.6.0 May 4, 2012
- We now pre-compile our coffee-script
- `balUtilPaths` changes:
- Added `readFile`, `writeFile`, `mkdir`, `stat`, `readdir`, `unlink`, `rmdir`
- Renamed `rmdir` to `rmdirDeep`
- `balUtilModules` changes:
- Removed `initGitSubmodules`, `gitPull`
- Added `initGitRepo`
- Rewrote `initNodeModules`
## v1.5.0 April 18, 2012
- `balUtilPaths` changes:
- `scan` was removed, not sure what it was used for
- `isDirectory` now returns the `fileStat` argument to the callback
- `scandir` changes:
- `ignorePatterns` option when set to true now uses the new `balUtilPaths.commonIgnorePatterns` property
- fixed error throwing when passed an invalid path
- now supports a new `stat` option
- will return the `fileStat` argument to the `fileAction` and `dirAction` callbacks
- `ignorePatterns` and `ignoreHiddenFiles` will now correctly be passed to child scandir calls
- `cpdir` and `rpdir` now uses `path.join` and support `ignoreHiddenFiles` and `ignorePatterns`
- `writetree` now uses `path.join`
## v1.4.3 April 14, 2012
- CoffeeScript dependency is now bundled
- Fixed incorrect octal `0700` should have been `700`
## v1.4.2 April 5, 2012
- Fixed a failing test due to the `bal-util.npm` to `bal-util` rename
- Improvements to `balUtilModules.spawn`
- will only return an error if the exit code was `1`
- will also contain the `code` and `signal` with the results
- `results[x][0]` is now the stderr string, rather than an error object
## v1.4.1 April 5, 2012
- Added `spawn` to `balUtilModules`
- Added `ignoreHiddenFiles` option to `balUtilPaths.scandir`
## v1.4.0 April 2, 2012
- Renamed `balUtilGroups` to `balUtilFlow`
- Added `toString`, `isArray` and `each` to `balUtilFlow`
- Added `rpdir`, `empty`, and `isPathOlderThan` to `balUtilPaths`
## v1.3.0 February 26, 2012
- Added `openFile` and `closeFile` to open and close files safely (always stays below the maximum number of allowed open files)
- Updated all path utilities to use `openFile` and `closeFile`
- Added npm scripts
## v1.2.0 February 14, 2012
- Removed single and multi modes from `exec`, now always returns the same consistent `callback(err,results)` instead
## v1.1.0 February 6, 2012
- Modularized
- Added [docco](http://jashkenas.github.com/docco/) docs
## v1.0 February 5, 2012
- Moved unit tests to [Mocha](http://visionmedia.github.com/mocha/)
- Offers more flexible unit testing
- Offers better guarantees that tests actually ran, and that they actually ran correctly
- Added `readPath` and `scantree`
- Added `readFiles` option to `scandir`
- `scandir` now supports arguments in object format
- Removed `parallel`
- Tasks inside groups now are passed `next` as there only argument
- Removed `resolvePath`, `expandPath` and `expandPaths`, they were essentially the same as `path.resolve`
- Most functions will now chain
- `comparePackage` now supports comparing two local, or two remote packages
- Added `gitPull`
## v0.9 January 18, 2012
- Added `exec`, `initNodeModules`, `initGitSubmodules`, `EventSystem.when`
- Added support for no callbacks
## v0.8 November 2, 2011
- Considerable improvements to `scandir`, `cpdir` and `rmdir`
- Note, passing `false` as the file or dir actions will now skip all of that type. Pass `null` if you do not want that.
- `dirAction` is now fired before we read the directories children, if you want it to fire after then in the next callback, pass a callback in the 3rd argument. See `rmdir` for an example of this.
- Fixed npm web to url warnings
## v0.7 October 3, 2011
- Added `versionCompare` and `packageCompare` functions
- Added `request` dependency
## v0.6 September 14, 2011
- Updated `util.Group` to support `async` and `sync` grouping
## v0.4 June 2, 2011
- Added util.type for testing the type of a variable
- Added util.expandPath and util.expandPaths
## v0.3 June 1, 2011
- Added util.Group class for your async needs :)
## v0.2 May 20, 2011
- Added some tests with expresso
- util.scandir now returns err,list,tree
- Added util.writetree
## v0.1 May 18, 2011
- Initial commit

@@ -1,18 +0,24 @@

<!-- LICENSEFILE/ -->
# License
<h1>License</h1>
Copyright &copy; 2011+ Benjamin Lupton <b@lupton.cc> (http://balupton.com)
<br/>Copyright &copy; 2014+ Bevry Pty Ltd <us@bevry.me> (http://bevry.me)
Unless stated otherwise all works are:
## The MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
<ul><li>Copyright &copy; 2011+ <a href="http://balupton.com">Benjamin Lupton</a></li>
<li>Copyright &copy; 2014+ <a href="http://bevry.me">Bevry Pty Ltd</a></li></ul>
and licensed under:
<ul><li><a href="http://spdx.org/licenses/MIT.html">MIT License</a></li></ul>
<h2>MIT License</h2>
<pre>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</pre>
<!-- /LICENSEFILE -->
{
"name": "scandirectory",
"version": "2.5.0",
"version": "3.0.0",
"description": "Scan a directory recursively with a lot of control and power",
"homepage": "https://github.com/bevry/scandirectory",
"license": {
"type": "MIT"
},
"badges": {
"travis": true,
"npm": true,
"npmdownloads": true,
"david": true,
"daviddev": true,
"gratipay": "bevry",
"flattr": "344188/balupton-on-Flattr",
"paypal": "QB8GQPZAH84N6",
"bitcoin": "https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a",
"wishlist": "http://amzn.com/w/2F8TXKSNAFG4V"
},
"license": "MIT",
"keywords": [

@@ -31,9 +17,35 @@ "path",

],
"badges": {
"list": [
"travisci",
"npmversion",
"npmdownloads",
"daviddm",
"daviddmdev",
"---",
"slackin",
"patreon",
"gratipay",
"flattr",
"paypal",
"bitcoin",
"wishlist"
],
"config": {
"patreonUsername": "bevry",
"gratipayUsername": "bevry",
"flattrUsername": "balupton",
"paypalURL": "https://bevry.me/paypal",
"bitcoinURL": "https://bevry.me/bitcoin",
"wishlistURL": "https://bevry.me/wishlist",
"slackinURL": "https://slack.bevry.me"
}
},
"author": "2011+ Benjamin Lupton <b@lupton.cc> (http://balupton.com), 2014+ Bevry Pty Ltd <us@bevry.me> (http://bevry.me)",
"maintainers": [
"Benjamin Lupton <b@lupton.cc> (https://github.com/balupton)"
"Benjamin Lupton <b@lupton.cc> (http://balupton.com)"
],
"contributors": [
"Benjamin Lupton <b@lupton.cc> (https://github.com/balupton)",
"sfrdmn (https://github.com/sfrdmn)"
"Benjamin Lupton <b@lupton.cc> (http://balupton.com)",
"Sean Fridman <mail@seanfridman.com> (http://seanfridman.com)"
],

@@ -45,29 +57,62 @@ "bugs": {

"type": "git",
"url": "http://github.com/bevry/scandirectory.git"
"url": "https://github.com/bevry/scandirectory.git"
},
"engines": {
"node": ">=0.4"
"node": ">=0.8"
},
"editions": [
{
"description": "Source + ESNext + Require",
"entry": "index.js",
"directory": "source",
"syntaxes": [
"javascript",
"esnext",
"require",
"const",
"let"
]
},
{
"description": "Babel Compiled + ES2015 + Require",
"entry": "index.js",
"directory": "es2015",
"syntaxes": [
"javascript",
"es2015",
"require"
]
}
],
"main": "index.js",
"scripts": {
"setup": "npm install",
"clean": "rm -Rf ./docs ./es2015",
"compile": "npm run compile:es2015",
"compile:es2015": "babel ./source --out-dir ./es2015 --presets es2015",
"meta": "npm run meta:projectz",
"meta:projectz": "projectz compile",
"prepare": "npm run compile && npm run test && npm run meta",
"release": "npm run prepare && npm run release:publish && npm run release:tag && npm run release:push",
"release:publish": "npm publish",
"release:tag": "git tag v$npm_package_version -a",
"release:push": "git push origin master && git push origin --tags",
"pretest": "npm run test:eslint",
"test:eslint": "eslint ./source",
"test": "node --harmony ./test.js"
},
"dependencies": {
"ignorefs": "^1.0.0",
"safefs": "^3.1.2",
"taskgroup": "^4.0.5"
"editions": "^1.3.1",
"ignorefs": "^1.1.1",
"readdir-cluster": "^1.1.0"
},
"devDependencies": {
"coffee-script": "~1.8.0",
"joe": "~1.5.0",
"joe-reporter-console": "~1.2.1",
"chai": "~1.10.0",
"projectz": "~0.3.17"
},
"directories": {
"lib": "./out/lib"
},
"scripts": {
"test": "node ./out/test/scandirectory-test.js"
},
"main": "./out/lib/scandirectory",
"cakeConfiguration": {
"COFFEE_SRC_PATH": "src"
"assert-helpers": "^4.4.0",
"babel-cli": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"eslint": "^2.3.0",
"joe": "^1.8.0",
"joe-reporter-console": "^1.2.1",
"projectz": "^1.3.0"
}
}
}

@@ -1,5 +0,4 @@

<!-- TITLE/ -->
# scandirectory
<h1>scandirectory</h1>

@@ -11,12 +10,15 @@ <!-- /TITLE -->

[![Build Status](https://img.shields.io/travis/bevry/scandirectory/master.svg)](http://travis-ci.org/bevry/scandirectory "Check this project's build status on TravisCI")
[![NPM version](https://img.shields.io/npm/v/scandirectory.svg)](https://npmjs.org/package/scandirectory "View this project on NPM")
[![NPM downloads](https://img.shields.io/npm/dm/scandirectory.svg)](https://npmjs.org/package/scandirectory "View this project on NPM")
[![Dependency Status](https://img.shields.io/david/bevry/scandirectory.svg)](https://david-dm.org/bevry/scandirectory)
[![Dev Dependency Status](https://img.shields.io/david/dev/bevry/scandirectory.svg)](https://david-dm.org/bevry/scandirectory#info=devDependencies)<br/>
[![Gratipay donate button](https://img.shields.io/gratipay/bevry.svg)](https://www.gratipay.com/bevry/ "Donate weekly to this project using Gratipay")
[![Flattr donate button](https://img.shields.io/badge/flattr-donate-yellow.svg)](http://flattr.com/thing/344188/balupton-on-Flattr "Donate monthly to this project using Flattr")
[![PayPayl donate button](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QB8GQPZAH84N6 "Donate once-off to this project using Paypal")
[![BitCoin donate button](https://img.shields.io/badge/bitcoin-donate-yellow.svg)](https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a "Donate once-off to this project using BitCoin")
[![Wishlist browse button](https://img.shields.io/badge/wishlist-donate-yellow.svg)](http://amzn.com/w/2F8TXKSNAFG4V "Buy an item on our wishlist for us")
<span class="badge-travisci"><a href="http://travis-ci.org/bevry/scandirectory" title="Check this project's build status on TravisCI"><img src="https://img.shields.io/travis/bevry/scandirectory/master.svg" alt="Travis CI Build Status" /></a></span>
<span class="badge-npmversion"><a href="https://npmjs.org/package/scandirectory" title="View this project on NPM"><img src="https://img.shields.io/npm/v/scandirectory.svg" alt="NPM version" /></a></span>
<span class="badge-npmdownloads"><a href="https://npmjs.org/package/scandirectory" title="View this project on NPM"><img src="https://img.shields.io/npm/dm/scandirectory.svg" alt="NPM downloads" /></a></span>
<span class="badge-daviddm"><a href="https://david-dm.org/bevry/scandirectory" title="View the status of this project's dependencies on DavidDM"><img src="https://img.shields.io/david/bevry/scandirectory.svg" alt="Dependency Status" /></a></span>
<span class="badge-daviddmdev"><a href="https://david-dm.org/bevry/scandirectory#info=devDependencies" title="View the status of this project's development dependencies on DavidDM"><img src="https://img.shields.io/david/dev/bevry/scandirectory.svg" alt="Dev Dependency Status" /></a></span>
<br class="badge-separator" />
<span class="badge-slackin"><a href="https://slack.bevry.me" title="Join this project's slack community"><img src="https://slack.bevry.me/badge.svg" alt="Slack community badge" /></a></span>
<span class="badge-patreon"><a href="http://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span>
<span class="badge-gratipay"><a href="https://www.gratipay.com/bevry" title="Donate weekly to this project using Gratipay"><img src="https://img.shields.io/badge/gratipay-donate-yellow.svg" alt="Gratipay donate button" /></a></span>
<span class="badge-flattr"><a href="https://flattr.com/profile/balupton" title="Donate to this project using Flattr"><img src="https://img.shields.io/badge/flattr-donate-yellow.svg" alt="Flattr donate button" /></a></span>
<span class="badge-paypal"><a href="https://bevry.me/paypal" title="Donate to this project using Paypal"><img src="https://img.shields.io/badge/paypal-donate-yellow.svg" alt="PayPal donate button" /></a></span>
<span class="badge-bitcoin"><a href="https://bevry.me/bitcoin" title="Donate once-off to this project using Bitcoin"><img src="https://img.shields.io/badge/bitcoin-donate-yellow.svg" alt="Bitcoin donate button" /></a></span>
<span class="badge-wishlist"><a href="https://bevry.me/wishlist" title="Buy an item on our wishlist for us"><img src="https://img.shields.io/badge/wishlist-donate-yellow.svg" alt="Wishlist browse button" /></a></span>

@@ -35,8 +37,18 @@ <!-- /BADGES -->

## Install
<h2>Install</h2>
### [NPM](http://npmjs.org/)
- Use: `require('scandirectory')`
- Install: `npm install --save scandirectory`
<a href="https://npmjs.com" title="npm is a package manager for javascript"><h3>NPM</h3></a><ul>
<li>Install: <code>npm install --save scandirectory</code></li>
<li>Module: <code>require('scandirectory')</code></li></ul>
<h3><a href="https://github.com/bevry/editions" title="Editions are the best way to produce and consume packages you care about.">Editions</a></h3>
<p>This package is published with the following editions:</p>
<ul><li><code>scandirectory</code> aliases <code>scandirectory/index.js</code> which uses <a href="https://github.com/bevry/editions" title="Editions are the best way to produce and consume packages you care about.">Editions</a> to automatically select the correct edition for the consumers environment</li>
<li><code>scandirectory/source/index.js</code> is Source + <a href="https://babeljs.io/docs/learn-es2015/" title="ECMAScript Next">ESNext</a> + <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a></li>
<li><code>scandirectory/es2015/index.js</code> is <a href="https://babeljs.io" title="The compiler for writing next generation JavaScript">Babel</a> Compiled + <a href="http://babeljs.io/docs/plugins/preset-es2015/" title="ECMAScript 2015">ES2015</a> + <a href="https://nodejs.org/dist/latest-v5.x/docs/api/modules.html" title="Node/CJS Modules">Require</a></li></ul>
<p>Older environments may need <a href="https://babeljs.io/docs/usage/polyfill/" title="A polyfill that emulates missing ECMAScript environment features">Babel's Polyfill</a> or something similar.</p>
<!-- /INSTALL -->

@@ -47,42 +59,68 @@

- `scandir(path, opts, next?)``
- `scandir(opts, next?)``
``` javascript
var scandir = require('scandirectory')
var path = process.cwd()
var options = {}
function completionCallback (err, list, tree) {
console.log({
error: err,
list: list,
tree: tree
})
/*
{
error: null,
list: {
'a file.txt': 'file',
'a directory': 'dir',
'a directory/a sub file.txt': 'file'
},
tree: {
'a file.txt': true,
'a directory': {
'a sub file.txt': 'true
}
}
}
*/
}
scandir(path, options, completionCallback)
```
Options:
Scan directory options:
- `path`: the path you want to read
- `action`: (default null) can be null or a function to use for both the fileAction and dirAction
- `fileAction`: (default null) can be null or a function to run against each file, in the following format:
- `fileAction(fileFullPath, fileRelativePath, next(err,skip), fileStat)``
- `dirAction`: (default null) can be null or a function to run against each directory, in the following format:
- `dirAction(fileFullPath, fileRelativePath, next(err,skip), fileStat)``
- `next`: (default null) can be null or a function to run after the entire directory has been scanned, in the following format:
- `next(err, list, tree)``
- `stat`: (default null) can be null or a file stat object for the path if we already have one (not actually used yet)
- `recurse`: (default true) can be null or a boolean for whether or not to scan subdirectories too
- `readFiles`: (default false) can be null or a boolean for whether or not we should read the file contents
- `ignorePaths`: (default false) can be null or an array of paths that we should ignore
- `ignoreHiddenFiles`: (default false) can be null or a boolean for if we should ignore files starting with a dot
- `ignoreCommonPatterns`: (default false) can be null or a boolean or a regex
- if null, becomes true
- if false, does not do any ignore patterns
- if true, defaults to bevry/ignorepatterns
- if regex, uses this value instead of bevry/ignorepatterns
- `ignoreCustomPatterns`: (default false) can be null or a boolean or a regex (same as ignoreCommonPatterns but for ignoreCustomPatterns instead)
- `action` - (default null) can be `null` or a function to use for both the fileAction and dirAction
- `fileAction` - (default null) can be `null`, `false`, or a function to be the action callback
- `dirAction` - (default null) can be `null`, `false`, or a function to the action callback
- `recurse` - (default true) can be `null` or a boolean for whether or not to scan subdirectories too
- `readFiles` - (default false) can be `null` or a boolean for whether or not we should read the file contents
Next Callback Arguments:
The options object is also sent to [ignorepatterns](https://github.com/bevry/ignorepatterns) so you can use its options too
- `err`: null, or an error that has occured
- `list`: a collection of all the child nodes in a list/object format:
The completion callback accepts the following arguments:
- `err` - `null` or an error that has occured
- `list` - a collection of all the child nodes in a list/object format:
- `{fileRelativePath: 'dir|file'}`
- `tree`: a colleciton of all the child nodes in a tree format:
- `tree` - a collection of all the child nodes in a tree format:
- `{dir: {dir:{}, file1:true} }`
- if the readFiles option is true, then files will be returned with their contents instead
The results for a specific argument is only generated if the argument is requested.
The action callbacks accept the following arguments:
- `fullPath` - the full/absolute path of the current file/directory
- `relativePath` - the relative path of the current file/directory with respect to the original scanning path
- `filename` - the basename of the current file/directory
- `stat` - a simple stat object provided by [readdir-cluster](https://github.com/bevry/readdir-cluster)
The action callbacks can return `false` to skip the path from being processed further.
<!-- CONTRIBUTE/ -->
## Contribute
<h2>Contribute</h2>
[Discover how you can contribute by heading on over to the `CONTRIBUTING.md` file.](https://github.com/bevry/scandirectory/blob/master/CONTRIBUTING.md#files)
<a href="https://github.com/bevry/scandirectory/blob/master/CONTRIBUTING.md#files">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>

@@ -94,5 +132,6 @@ <!-- /CONTRIBUTE -->

## History
[Discover the change history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/scandirectory/blob/master/HISTORY.md#files)
<h2>History</h2>
<a href="https://github.com/bevry/scandirectory/blob/master/HISTORY.md#files">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>
<!-- /HISTORY -->

@@ -103,28 +142,29 @@

## Backers
<h2>Backers</h2>
### Maintainers
<h3>Maintainers</h3>
These amazing people are maintaining this project:
- Benjamin Lupton <b@lupton.cc> (https://github.com/balupton)
<ul><li><a href="http://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/scandirectory/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/scandirectory">view contributions</a></li></ul>
### Sponsors
<h3>Sponsors</h3>
No sponsors yet! Will you be the first?
[![Gratipay donate button](https://img.shields.io/gratipay/bevry.svg)](https://www.gratipay.com/bevry/ "Donate weekly to this project using Gratipay")
[![Flattr donate button](https://img.shields.io/badge/flattr-donate-yellow.svg)](http://flattr.com/thing/344188/balupton-on-Flattr "Donate monthly to this project using Flattr")
[![PayPayl donate button](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QB8GQPZAH84N6 "Donate once-off to this project using Paypal")
[![BitCoin donate button](https://img.shields.io/badge/bitcoin-donate-yellow.svg)](https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a "Donate once-off to this project using BitCoin")
[![Wishlist browse button](https://img.shields.io/badge/wishlist-donate-yellow.svg)](http://amzn.com/w/2F8TXKSNAFG4V "Buy an item on our wishlist for us")
<span class="badge-patreon"><a href="http://patreon.com/bevry" title="Donate to this project using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a></span>
<span class="badge-gratipay"><a href="https://www.gratipay.com/bevry" title="Donate weekly to this project using Gratipay"><img src="https://img.shields.io/badge/gratipay-donate-yellow.svg" alt="Gratipay donate button" /></a></span>
<span class="badge-flattr"><a href="https://flattr.com/profile/balupton" title="Donate to this project using Flattr"><img src="https://img.shields.io/badge/flattr-donate-yellow.svg" alt="Flattr donate button" /></a></span>
<span class="badge-paypal"><a href="https://bevry.me/paypal" title="Donate to this project using Paypal"><img src="https://img.shields.io/badge/paypal-donate-yellow.svg" alt="PayPal donate button" /></a></span>
<span class="badge-bitcoin"><a href="https://bevry.me/bitcoin" title="Donate once-off to this project using Bitcoin"><img src="https://img.shields.io/badge/bitcoin-donate-yellow.svg" alt="Bitcoin donate button" /></a></span>
<span class="badge-wishlist"><a href="https://bevry.me/wishlist" title="Buy an item on our wishlist for us"><img src="https://img.shields.io/badge/wishlist-donate-yellow.svg" alt="Wishlist browse button" /></a></span>
### Contributors
<h3>Contributors</h3>
These amazing people have contributed code to this project:
- [Benjamin Lupton](https://github.com/balupton) <b@lupton.cc> — [view contributions](https://github.com/bevry/scandirectory/commits?author=balupton)
- [sfrdmn](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/scandirectory/commits?author=sfrdmn)
<ul><li><a href="http://balupton.com">Benjamin Lupton</a> — <a href="https://github.com/bevry/scandirectory/commits?author=balupton" title="View the GitHub contributions of Benjamin Lupton on repository bevry/scandirectory">view contributions</a></li>
<li><a href="http://seanfridman.com">Sean Fridman</a> — <a href="https://github.com/bevry/scandirectory/commits?author=sfrdmn" title="View the GitHub contributions of Sean Fridman on repository bevry/scandirectory">view contributions</a></li></ul>
[Become a contributor!](https://github.com/bevry/scandirectory/blob/master/CONTRIBUTING.md#files)
<a href="https://github.com/bevry/scandirectory/blob/master/CONTRIBUTING.md#files">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>

@@ -136,11 +176,13 @@ <!-- /BACKERS -->

## License
<h2>License</h2>
Licensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT license](http://creativecommons.org/licenses/MIT/)
Unless stated otherwise all works are:
Copyright &copy; 2011+ Benjamin Lupton <b@lupton.cc> (http://balupton.com)
<br/>Copyright &copy; 2014+ Bevry Pty Ltd <us@bevry.me> (http://bevry.me)
<ul><li>Copyright &copy; 2011+ <a href="http://balupton.com">Benjamin Lupton</a></li>
<li>Copyright &copy; 2014+ <a href="http://bevry.me">Bevry Pty Ltd</a></li></ul>
<!-- /LICENSE -->
and licensed under:
<ul><li><a href="http://spdx.org/licenses/MIT.html">MIT License</a></li></ul>
<!-- /LICENSE -->

Sorry, the diff of this file is not supported yet

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