diff options
author | Marvin Borner | 2018-11-07 22:10:16 +0100 |
---|---|---|
committer | Marvin Borner | 2018-11-07 22:10:17 +0100 |
commit | 954583f3d56fbfb60321725f13ad092e536e3737 (patch) | |
tree | a0505a763797582c61fd8c2f90b422456d8874c9 /node_modules/walk | |
parent | 1c355e6e956a4e507ed5436d0c814ba9c3a1deb2 (diff) |
Removed node_modules
Diffstat (limited to 'node_modules/walk')
-rw-r--r-- | node_modules/walk/LICENSE | 41 | ||||
-rw-r--r-- | node_modules/walk/README.md | 306 | ||||
-rw-r--r-- | node_modules/walk/lib/node-type-emitter.js | 92 | ||||
-rw-r--r-- | node_modules/walk/lib/walk-async-only.js | 93 | ||||
-rw-r--r-- | node_modules/walk/lib/walk.js | 302 | ||||
-rw-r--r-- | node_modules/walk/package.json | 68 |
6 files changed, 0 insertions, 902 deletions
diff --git a/node_modules/walk/LICENSE b/node_modules/walk/LICENSE deleted file mode 100644 index d804d51..0000000 --- a/node_modules/walk/LICENSE +++ /dev/null @@ -1,41 +0,0 @@ -Copyright 2011 AJ ONeal - -This is open source software; you can redistribute it and/or modify it under the -terms of either: - - a) the "MIT License" - b) the "Apache-2.0 License" - -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: - - 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. - -Apache-2.0 License Summary - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/walk/README.md b/node_modules/walk/README.md deleted file mode 100644 index 9a1595b..0000000 --- a/node_modules/walk/README.md +++ /dev/null @@ -1,306 +0,0 @@ -node-walk -==== - -| Sponsored by [ppl](https://ppl.family) - -nodejs walk implementation. - -This is somewhat of a port python's `os.walk`, but using Node.JS conventions. - - * EventEmitter - * Asynchronous - * Chronological (optionally) - * Built-in flow-control - * includes Synchronous version (same API as Asynchronous) - -As few file descriptors are opened at a time as possible. -This is particularly well suited for single hard disks which are not flash or solid state. - -Installation ----- - -```bash -npm install --save walk -``` - -Getting Started -==== - -```javascript -(function () { - "use strict"; - - var walk = require('walk'); - var fs = require('fs'); - var walker; - - walker = walk.walk("/tmp", options); - - walker.on("file", function (root, fileStats, next) { - fs.readFile(fileStats.name, function () { - // doStuff - next(); - }); - }); - - walker.on("errors", function (root, nodeStatsArray, next) { - next(); - }); - - walker.on("end", function () { - console.log("all done"); - }); -}()); -``` - -Common Events ------ - -All single event callbacks are in the form of `function (root, stat, next) {}`. - -All multiple event callbacks callbacks are in the form of `function (root, stats, next) {}`, except **names** which is an array of strings. - -All **error** event callbacks are in the form `function (root, stat/stats, next) {}`. -**`stat.error`** contains the error. - -* `names` -* `directory` -* `directories` -* `file` -* `files` -* `end` -* `nodeError` (`stat` failed) -* `directoryError` (`stat` succedded, but `readdir` failed) -* `errors` (a collection of any errors encountered) - - -A typical `stat` event looks like this: - -```javascript -{ dev: 16777223, - mode: 33188, - nlink: 1, - uid: 501, - gid: 20, - rdev: 0, - blksize: 4096, - ino: 49868100, - size: 5617, - blocks: 16, - atime: Mon Jan 05 2015 18:18:10 GMT-0700 (MST), - mtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), - ctime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), - birthtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), - name: 'README.md', - type: 'file' } -``` - -Advanced Example -==== - -Both Asynchronous and Synchronous versions are provided. - -```javascript -(function () { - "use strict"; - - var walk = require('walk'); - var fs = require('fs'); - var options; - var walker; - - options = { - followLinks: false - // directories with these keys will be skipped - , filters: ["Temp", "_Temp"] - }; - - walker = walk.walk("/tmp", options); - - // OR - // walker = walk.walkSync("/tmp", options); - - walker.on("names", function (root, nodeNamesArray) { - nodeNamesArray.sort(function (a, b) { - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); - }); - - walker.on("directories", function (root, dirStatsArray, next) { - // dirStatsArray is an array of `stat` objects with the additional attributes - // * type - // * error - // * name - - next(); - }); - - walker.on("file", function (root, fileStats, next) { - fs.readFile(fileStats.name, function () { - // doStuff - next(); - }); - }); - - walker.on("errors", function (root, nodeStatsArray, next) { - next(); - }); - - walker.on("end", function () { - console.log("all done"); - }); -}()); -``` - -### Sync - -Note: You **can't use EventEmitter** if you want truly synchronous walker -(although it's synchronous under the hood, it appears not to be due to the use of `process.nextTick()`). - -Instead **you must use `options.listeners`** for truly synchronous walker. - -Although the sync version uses all of the `fs.readSync`, `fs.readdirSync`, and other sync methods, -I don't think I can prevent the `process.nextTick()` that `EventEmitter` calls. - -```javascript -(function () { - "use strict"; - - var walk = require('walk'); - var fs = require('fs'); - var options; - var walker; - - // To be truly synchronous in the emitter and maintain a compatible api, - // the listeners must be listed before the object is created - options = { - listeners: { - names: function (root, nodeNamesArray) { - nodeNamesArray.sort(function (a, b) { - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); - } - , directories: function (root, dirStatsArray, next) { - // dirStatsArray is an array of `stat` objects with the additional attributes - // * type - // * error - // * name - - next(); - } - , file: function (root, fileStats, next) { - fs.readFile(fileStats.name, function () { - // doStuff - next(); - }); - } - , errors: function (root, nodeStatsArray, next) { - next(); - } - } - }; - - walker = walk.walkSync("/tmp", options); - - console.log("all done"); -}()); -``` - -API -==== - -Emitted Values - - * `on('XYZ', function(root, stats, next) {})` - - * `root` - the containing the files to be inspected - * *stats[Array]* - a single `stats` object or an array with some added attributes - * type - 'file', 'directory', etc - * error - * name - the name of the file, dir, etc - * next - no more files will be read until this is called - -Single Events - fired immediately - - * `end` - No files, dirs, etc left to inspect - - * `directoryError` - Error when `fstat` succeeded, but reading path failed (Probably due to permissions). - * `nodeError` - Error `fstat` did not succeeded. - * `node` - a `stats` object for a node of any type - * `file` - includes links when `followLinks` is `true` - * `directory` - **NOTE** you could get a recursive loop if `followLinks` and a directory links to its parent - * `symbolicLink` - always empty when `followLinks` is `true` - * `blockDevice` - * `characterDevice` - * `FIFO` - * `socket` - -Events with Array Arguments - fired after all files in the dir have been `stat`ed - - * `names` - before any `stat` takes place. Useful for sorting and filtering. - * Note: the array is an array of `string`s, not `stat` objects - * Note: the `next` argument is a `noop` - - * `errors` - errors encountered by `fs.stat` when reading ndes in a directory - * `nodes` - an array of `stats` of any type - * `files` - * `directories` - modification of this array - sorting, removing, etc - affects traversal - * `symbolicLinks` - * `blockDevices` - * `characterDevices` - * `FIFOs` - * `sockets` - -**Warning** beware of infinite loops when `followLinks` is true (using `walk-recurse` varient). - -Comparisons -==== - -Tested on my `/System` containing 59,490 (+ self) directories (and lots of files). -The size of the text output was 6mb. - -`find`: - time bash -c "find /System -type d | wc" - 59491 97935 6262916 - - real 2m27.114s - user 0m1.193s - sys 0m14.859s - -`find.js`: - -Note that `find.js` omits the start directory - - time bash -c "node examples/find.js /System -type d | wc" - 59490 97934 6262908 - - # Test 1 - real 2m52.273s - user 0m20.374s - sys 0m27.800s - - # Test 2 - real 2m23.725s - user 0m18.019s - sys 0m23.202s - - # Test 3 - real 2m50.077s - user 0m17.661s - sys 0m24.008s - -In conclusion node.js asynchronous walk is much slower than regular "find". - -LICENSE -=== - -`node-walk` is available under the following licenses: - - * MIT - * Apache 2 - -Copyright 2011 - Present AJ ONeal diff --git a/node_modules/walk/lib/node-type-emitter.js b/node_modules/walk/lib/node-type-emitter.js deleted file mode 100644 index 59c0f58..0000000 --- a/node_modules/walk/lib/node-type-emitter.js +++ /dev/null @@ -1,92 +0,0 @@ -/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true*/ -(function () { - "use strict"; - - // "FIFO" isn't easy to convert to camelCase and back reliably - var isFnodeTypes = [ - "isFile", "isDirectory", "isSymbolicLink", "isBlockDevice", "isCharacterDevice", "isFIFO", "isSocket" - ], - fnodeTypes = [ - "file", "directory", "symbolicLink", "blockDevice", "characterDevice", "FIFO", "socket" - ], - fnodeTypesPlural = [ - "files", "directories", "symbolicLinks", "blockDevices", "characterDevices", "FIFOs", "sockets" - ]; - - - // - function createNodeGroups() { - var nodeGroups = {}; - fnodeTypesPlural.concat("nodes", "errors").forEach(function (fnodeTypePlural) { - nodeGroups[fnodeTypePlural] = []; - }); - return nodeGroups; - } - - - // Determine each file node's type - // - function sortFnodesByType(stat, fnodes) { - var i, isType; - - for (i = 0; i < isFnodeTypes.length; i += 1) { - isType = isFnodeTypes[i]; - if (stat[isType]()) { - stat.type = fnodeTypes[i]; - fnodes[fnodeTypesPlural[i]].push(stat); - return; - } - } - } - - - // Get the current number of listeners (which may change) - // Emit events to each listener - // Wait for all listeners to `next()` before continueing - // (in theory this may avoid disk thrashing) - function emitSingleEvents(emitter, path, stats, next, self) { - var num = 1 + emitter.listeners(stats.type).length + emitter.listeners("node").length; - - function nextWhenReady(flag) { - if (flag) { - stats.flag = flag; - } - num -= 1; - if (0 === num) { next.call(self); } - } - - emitter.emit(stats.type, path, stats, nextWhenReady); - emitter.emit("node", path, stats, nextWhenReady); - nextWhenReady(); - } - - - // Since the risk for disk thrashing among anything - // other than files is relatively low, all types are - // emitted at once, but all must complete before advancing - function emitPluralEvents(emitter, path, nodes, next, self) { - var num = 1; - - function nextWhenReady() { - num -= 1; - if (0 === num) { next.call(self); } - } - - fnodeTypesPlural.concat(["nodes", "errors"]).forEach(function (fnodeType) { - if (0 === nodes[fnodeType].length) { return; } - num += emitter.listeners(fnodeType).length; - emitter.emit(fnodeType, path, nodes[fnodeType], nextWhenReady); - }); - nextWhenReady(); - } - - module.exports = { - emitNodeType: emitSingleEvents, - emitNodeTypeGroups: emitPluralEvents, - isFnodeTypes: isFnodeTypes, - fnodeTypes: fnodeTypes, - fnodeTypesPlural: fnodeTypesPlural, - sortFnodesByType: sortFnodesByType, - createNodeGroups: createNodeGroups - }; -}()); diff --git a/node_modules/walk/lib/walk-async-only.js b/node_modules/walk/lib/walk-async-only.js deleted file mode 100644 index 41b30ca..0000000 --- a/node_modules/walk/lib/walk-async-only.js +++ /dev/null @@ -1,93 +0,0 @@ -(function () { - "use strict" - - // Array.prototype.forEachAsync(next, item, i, collection) - require('futures/forEachAsync'); - - function noop() {} - - var fs = require('fs'), - path = require('path'), - EventEmitter = require('events').EventEmitter, - TypeEmitter = require('./node-type-emitter'); - - // 2010-11-25 jorge@jorgechamorro.com - function create(pathname, cb) { - var emitter = new EventEmitter(), - q = [], - queue = [q], - curpath; - - function walk() { - fs.readdir(curpath, function(err, files) { - if (err) { - emitter.emit('directoryError', curpath, { error: err }, noop); - //emitter.emit('error', curpath, { error: err }); - } - // XXX bug was here. next() was omitted - if (!files || 0 == files.length) { - return next(); - } - - var fnodeGroups = TypeEmitter.createNodeGroups(); - - // TODO could allow user to selectively stat - // and don't stat if there are no stat listeners - emitter.emit('names', curpath, files, noop); - files.forEachAsync(function (cont, file) { - emitter.emit('name', curpath, file, noop); - fs.lstat(curpath + path.sep + file, function (err, stat) { - stat = stat || {}; - stat.name = file; - if (err) { - stat.error = err; - //emitter.emit('error', curpath, stat); - emitter.emit('nodeError', curpath, stat, noop); - fnodeGroups.errors.push(stat); - cont(); - } else { - TypeEmitter.sortFnodesByType(stat, fnodeGroups); - TypeEmitter.emitNodeType(emitter, curpath, stat, cont); - } - }); - }).then(function () { - if (fnodeGroups.errors.length) { - emitter.emit('errors', curpath, fnodeGroups.errors, noop); - } - TypeEmitter.emitNodeTypeGroups(emitter, curpath, fnodeGroups, function () { - var dirs = []; - fnodeGroups.directories.forEach(function (stat) { - dirs.push(stat.name); - }); - dirs.forEach(fullPath); - queue.push(q = dirs); - next(); - }); - }); - }); - } - - function next() { - if (q.length) { - curpath = q.pop(); - return walk(); - } - if (queue.length -= 1) { - q = queue[queue.length-1]; - return next(); - } - emitter.emit('end'); - } - - function fullPath(v,i,o) { - o[i]= [curpath, path.sep, v].join(''); - } - - curpath = pathname; - walk(); - - return emitter; - } - - module.exports = create; -}()); diff --git a/node_modules/walk/lib/walk.js b/node_modules/walk/lib/walk.js deleted file mode 100644 index ee8ade5..0000000 --- a/node_modules/walk/lib/walk.js +++ /dev/null @@ -1,302 +0,0 @@ -// Adapted from work by jorge@jorgechamorro.com on 2010-11-25 -(function () { - "use strict"; - - function noop() {} - - var fs = require('fs') - , forEachAsync = require('foreachasync').forEachAsync - , EventEmitter = require('events').EventEmitter - , TypeEmitter = require('./node-type-emitter') - , util = require('util') - , path = require('path') - ; - - function appendToDirs(stat) { - /*jshint validthis:true*/ - if(stat.flag && stat.flag === NO_DESCEND) { return; } - this.push(stat.name); - } - - function wFilesHandlerWrapper(items) { - /*jshint validthis:true*/ - this._wFilesHandler(noop, items); - } - - function Walker(pathname, options, sync) { - EventEmitter.call(this); - - var me = this - ; - - options = options || {}; - me._wStat = options.followLinks && 'stat' || 'lstat'; - me._wStatSync = me._wStat + 'Sync'; - me._wsync = sync; - me._wq = []; - me._wqueue = [me._wq]; - me._wcurpath = undefined; - me._wfilters = options.filters || []; - me._wfirstrun = true; - me._wcurpath = pathname; - - if (me._wsync) { - //console.log('_walkSync'); - me._wWalk = me._wWalkSync; - } else { - //console.log('_walkASync'); - me._wWalk = me._wWalkAsync; - } - - options.listeners = options.listeners || {}; - Object.keys(options.listeners).forEach(function (event) { - var callbacks = options.listeners[event] - ; - - if ('function' === typeof callbacks) { - callbacks = [callbacks]; - } - - callbacks.forEach(function (callback) { - me.on(event, callback); - }); - }); - - me._wWalk(); - } - - // Inherits must come before prototype additions - util.inherits(Walker, EventEmitter); - - Walker.prototype._wLstatHandler = function (err, stat) { - var me = this - ; - - stat = stat || {}; - stat.name = me._wcurfile; - - if (err) { - stat.error = err; - //me.emit('error', curpath, stat); - // TODO v3.0 (don't noop the next if there are listeners) - me.emit('nodeError', me._wcurpath, stat, noop); - me._wfnodegroups.errors.push(stat); - me._wCurFileCallback(); - } else { - TypeEmitter.sortFnodesByType(stat, me._wfnodegroups); - // NOTE: wCurFileCallback doesn't need thisness, so this is okay - TypeEmitter.emitNodeType(me, me._wcurpath, stat, me._wCurFileCallback, me); - } - }; - Walker.prototype._wFilesHandler = function (cont, file) { - var statPath - , me = this - ; - - - me._wcurfile = file; - me._wCurFileCallback = cont; - me.emit('name', me._wcurpath, file, noop); - - statPath = me._wcurpath + path.sep + file; - - if (!me._wsync) { - // TODO how to remove this anony? - fs[me._wStat](statPath, function (err, stat) { - me._wLstatHandler(err, stat); - }); - return; - } - - try { - me._wLstatHandler(null, fs[me._wStatSync](statPath)); - } catch(e) { - me._wLstatHandler(e); - } - }; - Walker.prototype._wOnEmitDone = function () { - var me = this - , dirs = [] - ; - - me._wfnodegroups.directories.forEach(appendToDirs, dirs); - dirs.forEach(me._wJoinPath, me); - me._wqueue.push(me._wq = dirs); - me._wNext(); - }; - Walker.prototype._wPostFilesHandler = function () { - var me = this - ; - - if (me._wfnodegroups.errors.length) { - // TODO v3.0 (don't noop the next) - // .errors is an array of stats with { name: name, error: error } - me.emit('errors', me._wcurpath, me._wfnodegroups.errors, noop); - } - // XXX emitNodeTypes still needs refactor - TypeEmitter.emitNodeTypeGroups(me, me._wcurpath, me._wfnodegroups, me._wOnEmitDone, me); - }; - Walker.prototype._wReadFiles = function () { - var me = this - ; - - if (!me._wcurfiles || 0 === me._wcurfiles.length) { - return me._wNext(); - } - - // TODO could allow user to selectively stat - // and don't stat if there are no stat listeners - me.emit('names', me._wcurpath, me._wcurfiles, noop); - - if (me._wsync) { - me._wcurfiles.forEach(wFilesHandlerWrapper, me); - me._wPostFilesHandler(); - } else { - forEachAsync(me._wcurfiles, me._wFilesHandler, me).then(me._wPostFilesHandler); - } - }; - Walker.prototype._wReaddirHandler = function (err, files) { - var fnodeGroups = TypeEmitter.createNodeGroups() - , me = this - , parent - , child - ; - - me._wfnodegroups = fnodeGroups; - me._wcurfiles = files; - - // no error, great - if (!err) { - me._wReadFiles(); - return; - } - - // TODO path.sep - me._wcurpath = me._wcurpath.replace(/\/$/, ''); - - // error? not first run? => directory error - if (!me._wfirstrun) { - // TODO v3.0 (don't noop the next if there are listeners) - me.emit('directoryError', me._wcurpath, { error: err }, noop); - // TODO v3.0 - //me.emit('directoryError', me._wcurpath.replace(/^(.*)\/.*$/, '$1'), { name: me._wcurpath.replace(/^.*\/(.*)/, '$1'), error: err }, noop); - me._wReadFiles(); - return; - } - - // error? first run? => maybe a file, maybe a true error - me._wfirstrun = false; - - // readdir failed (might be a file), try a stat on the parent - parent = me._wcurpath.replace(/^(.*)\/.*$/, '$1'); - fs[me._wStat](parent, function (e, stat) { - - if (stat) { - // success - // now try stat on this as a child of the parent directory - child = me._wcurpath.replace(/^.*\/(.*)$/, '$1'); - me._wcurfiles = [child]; - me._wcurpath = parent; - } else { - // TODO v3.0 - //me.emit('directoryError', me._wcurpath.replace(/^(.*)\/.*$/, '$1'), { name: me._wcurpath.replace(/^.*\/(.*)/, '$1'), error: err }, noop); - // TODO v3.0 (don't noop the next) - // the original readdir error, not the parent stat error - me.emit('nodeError', me._wcurpath, { error: err }, noop); - } - - me._wReadFiles(); - }); - }; - Walker.prototype._wFilter = function () { - var me = this - , exclude - ; - - // Stop directories that contain filter keywords - // from continuing through the walk process - exclude = me._wfilters.some(function (filter) { - if (me._wcurpath.match(filter)) { - return true; - } - }); - - return exclude; - }; - Walker.prototype._wWalkSync = function () { - //console.log('walkSync'); - var err - , files - , me = this - ; - - try { - files = fs.readdirSync(me._wcurpath); - } catch(e) { - err = e; - } - - me._wReaddirHandler(err, files); - }; - Walker.prototype._wWalkAsync = function () { - //console.log('walkAsync'); - var me = this - ; - - // TODO how to remove this anony? - fs.readdir(me._wcurpath, function (err, files) { - me._wReaddirHandler(err, files); - }); - }; - Walker.prototype._wNext = function () { - var me = this - ; - - if (me._paused) { - return; - } - if (me._wq.length) { - me._wcurpath = me._wq.pop(); - while (me._wq.length && me._wFilter()) { - me._wcurpath = me._wq.pop(); - } - if (me._wcurpath && !me._wFilter()) { - me._wWalk(); - } else { - me._wNext(); - } - return; - } - me._wqueue.length -= 1; - if (me._wqueue.length) { - me._wq = me._wqueue[me._wqueue.length - 1]; - return me._wNext(); - } - - // To not break compatibility - //process.nextTick(function () { - me.emit('end'); - //}); - }; - Walker.prototype._wJoinPath = function (v, i, o) { - var me = this - ; - - o[i] = [me._wcurpath, path.sep, v].join(''); - }; - Walker.prototype.pause = function () { - this._paused = true; - }; - Walker.prototype.resume = function () { - this._paused = false; - this._wNext(); - }; - - exports.walk = function (path, opts) { - return new Walker(path, opts, false); - }; - - exports.walkSync = function (path, opts) { - return new Walker(path, opts, true); - }; -}()); diff --git a/node_modules/walk/package.json b/node_modules/walk/package.json deleted file mode 100644 index 701d7dd..0000000 --- a/node_modules/walk/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "_from": "walk@2.3.x", - "_id": "walk@2.3.14", - "_inBundle": false, - "_integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==", - "_location": "/walk", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "walk@2.3.x", - "name": "walk", - "escapedName": "walk", - "rawSpec": "2.3.x", - "saveSpec": null, - "fetchSpec": "2.3.x" - }, - "_requiredBy": [ - "/twig" - ], - "_resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz", - "_shasum": "60ec8631cfd23276ae1e7363ce11d626452e1ef3", - "_spec": "walk@2.3.x", - "_where": "/home/marvin/IdeaProjects/untitled/node_modules/twig", - "author": { - "name": "AJ ONeal", - "email": "coolaj86@gmail.com" - }, - "bugs": { - "url": "https://git.coolaj86.com/coolaj86/fs-walk.js/issues" - }, - "bundleDependencies": false, - "contributors": [], - "dependencies": { - "foreachasync": "^3.0.0" - }, - "deprecated": false, - "description": "A node port of python's os.walk", - "devDependencies": {}, - "directories": { - "example": "examples", - "test": "test" - }, - "files": [ - "lib" - ], - "homepage": "https://git.coolaj86.com/coolaj86/fs-walk.js", - "keywords": [ - "util", - "os", - "sys", - "fs", - "walk", - "walkSync" - ], - "lib": ".", - "license": "(MIT OR Apache-2.0)", - "main": "./lib/walk.js", - "name": "walk", - "repository": { - "url": "https://git.coolaj86.com/coolaj86/fs-walk.js.git" - }, - "scripts": { - "test": "./test/walk-test.sh" - }, - "url": "http://git.coolaj86.com/coolaj86/fs-walk.js", - "version": "2.3.14" -} |