├── .gitignore ├── .jshintrc ├── History.md ├── Makefile ├── Readme.md ├── component.json ├── example.js ├── index.js ├── package-lock.json ├── package.json └── test └── iterator.js /.gitignore: -------------------------------------------------------------------------------- 1 | components 2 | build 3 | node_modules -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "evil": true 3 | } 4 | -------------------------------------------------------------------------------- /History.md: -------------------------------------------------------------------------------- 1 | # 0.1.2 / 2025-01-18 2 | 3 | - Merge pull request #15 from arjangeertsema/master 4 | 5 | # 0.1.1 / 2025-01-12 6 | 7 | - pin deps and get node test suite working 8 | - Fix for CVE-2024-21541 9 | 10 | # 0.3.0 / 2014-07-20 11 | 12 | - no "postinstall", use "component-\*" prefix on deps (#7, @TooTallNate) 13 | - component, package: update deps 14 | - add .jshintrc file 15 | - index: s/iterator/Iterator/ 16 | - peak => peek 17 | 18 | # 0.2.1 / 2014-05-29 19 | 20 | - index: do not throw an Error when given a falsey DOM node, and a root element 21 | - test: remove `console.log()` call 22 | 23 | # 0.2.0 / 2014-02-10 24 | 25 | - BREAKING peak no longer chains. 26 | - added it.next([expr], [n]) 27 | 28 | # 0.1.1 / 2014-02-07 29 | 30 | - add iterator context to select, reject 31 | 32 | # 0.1.0 / 2014-02-07 33 | 34 | - tests passing in node 35 | - added: it#select(expr) and it#reject(expr). 36 | - BREAKING removed: it#filter(nodeType) 37 | - added: iterator#revisit(revisit) 38 | - BREAKING traverses closing tags by default 39 | - added: root node 40 | - added: it#closing(), it#opening(), it#atOpening(), it#atClosing() 41 | - BREAKING removed: it#watch(expr, fn) 42 | 43 | # 0.0.5 / 2014-02-05 44 | 45 | - added it#closing(visit) 46 | 47 | # 0.0.4 / 2014-01-28 48 | 49 | - add: iterator#use(fn) 50 | 51 | # 0.0.3 / 2014-01-28 52 | 53 | - added iterator#watch(expr, fn) 54 | 55 | # 0.0.2 / 2014-01-24 56 | 57 | - added it#peak([n]) 58 | 59 | # 0.0.1 / 2014-01-24 60 | 61 | - Initial release 62 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | build: components index.js 3 | @./node_modules/.bin/component build --dev 4 | 5 | components: component.json 6 | @./node_modules/.bin/component install --dev 7 | 8 | clean: 9 | rm -fr build components template.js 10 | 11 | test: 12 | @./node_modules/.bin/_mocha --reporter spec 13 | 14 | test-browser: 15 | @./node_modules/.bin/component-test browser 16 | 17 | .PHONY: clean test test-browser 18 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | 2 | # dom-iterator 3 | 4 | Feature-rich, well-tested Iterator for traversing DOM nodes. A better version of [NodeIterator](https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator). Travels in both directions. 5 | 6 | Can be used in node.js with [mini-html-parser](http://github.com/matthewmueller/mini-html-parser). 7 | 8 | ## Installation 9 | 10 | Install with [component(1)](http://component.io): 11 | 12 | $ component install matthewmueller/dom-iterator 13 | 14 | With node.js: 15 | 16 | $ npm install dom-iterator 17 | 18 | ## Example 19 | 20 | ```js 21 | var it = iterator(node); 22 | var next; 23 | 24 | while (next = it.next(Node.TEXT_NODE)) { 25 | console.log(next.nodeValue) // next textnodes after node 26 | } 27 | ``` 28 | 29 | ## API 30 | 31 | ### `iterator(node, root)` 32 | 33 | Initialize an iterator starting on the `node`. Optionally you can 34 | specify a `root` to limit your traversal to a particular subtree. 35 | `root` must be either a parent or an ancestor of `node`. 36 | 37 | ```js 38 | var it = iterator(el.firstChild, el) 39 | ``` 40 | 41 | ### `iterator#next([expr], [n])` 42 | 43 | Gets the next DOM `node`. If no `node` exists, return `null`. 44 | You may pass an expression `expr`, to grab the first node that 45 | matches `expr`. 46 | 47 | Additionally, you can pass a number to select the `nth` node. 48 | Defaults to `1` or the `1st` node. 49 | 50 | ```js 51 | var node = it.next() 52 | // select the 2nd element node we come across 53 | var next = it.next(Node.ELEMENT_NODE, 2) 54 | ``` 55 | 56 | Here's a look at how the DOM is traversed: 57 | 58 | ![next](https://i.cloudup.com/kl80e5axNP.png) 59 | 60 | ### `iterator#prev()`, `iterator#previous()` 61 | 62 | Gets the previous DOM `node`. If no `node` exists, return `null`. 63 | You may pass an expression `expr`, to grab the first node that 64 | matches `expr`. 65 | 66 | Additionally, you can pass a number to select the `nth` node. 67 | Defaults to `1` or the `1st` node. 68 | 69 | ```js 70 | var node = it.prev() 71 | // select the 2nd element node we come across 72 | var prev = it.prev(Node.ELEMENT_NODE, 2) 73 | ``` 74 | 75 | Here's a look at how the DOM is traversed: 76 | 77 | ![prev](https://i.cloudup.com/EkaCyvdwvF.png) 78 | 79 | ### `iterator.select(expr)` 80 | 81 | iterate over nodes that pass the expression `expr`. The `expr` can be an 82 | enum, number, string or function. If it's a number, the `nodeType` is compared. 83 | 84 | This function can be chained where all expressions are OR-ed. 85 | 86 | ```js 87 | it.select(Node.ELEMENT_NODE) 88 | .select(8) 89 | .select('nodeValue == "sloth"') 90 | .select(fn) 91 | ``` 92 | 93 | This is saying: 94 | 95 | > select all element nodes or comment nodes 96 | > or nodes with the nodeValue "sloth" or 97 | > nodes that pass the function `fn`. 98 | 99 | ### `iterator.reject(expr)` 100 | 101 | iterate over nodes that do not pass the expression `expr`. The `expr` can be an 102 | enum, number, string or function. If it's a number, the `nodeType` is compared. 103 | 104 | This function can be chained where all expressions are AND-ed. 105 | 106 | ```js 107 | it.reject(Node.ELEMENT_NODE) 108 | .reject(8) 109 | .reject('nodeValue == "sloth"') 110 | .reject(fn) 111 | ``` 112 | 113 | This is saying: 114 | 115 | > reject all element nodes and comment nodes 116 | > and nodes with the nodeValue sloth and 117 | > nodes that pass the function `fn`". 118 | 119 | ### `iterator.revisit(revisit)` 120 | 121 | You can also skip over elements you already visited, by setting `revisit` to false. By default, `revisit` is set to `true`. 122 | 123 | ```js 124 | it.revisit(false); 125 | ``` 126 | 127 | Here's how that would change the iterator: 128 | 129 | **it.next():** 130 | 131 | ![next](https://i.cloudup.com/VX6BbZEuzf.png) 132 | 133 | **it.prev()** 134 | 135 | ![prev](https://i.cloudup.com/NEKe6F4EUX.png) 136 | 137 | ### `iterator.opening()` 138 | 139 | Jump to the opening tag of an element. This is the default. 140 | 141 | ```js 142 | var dom = domify('hi'); 143 | var it = it(dom).opening() 144 | it.next() // 'hi' 145 | ``` 146 | 147 | ### `iterator.closing()` 148 | 149 | Jump to the closing tag of an element 150 | 151 | ```js 152 | var dom = domify('hi'); 153 | var it = it(dom).closing() 154 | it.prev() // 'hi' 155 | ``` 156 | 157 | ### `iterator.peek([expr], [n])` 158 | 159 | Sometimes you want to peek on the following or previous node without actually visiting it. With `peek` you can peek forward or backwards `n` steps. If no `n` is given, peek forward 1 step. 160 | 161 | Peaking forward: 162 | 163 | ```js 164 | it.peek(); // peek forward 1 165 | it.peek(3); // peek forward 3 steps 166 | ``` 167 | 168 | Peaking backwards: 169 | 170 | ```js 171 | it.peek(Node.ELEMENT_NODE, -3) // peek backwards 3 steps, only selecting element nodes 172 | ``` 173 | 174 | ### `iterator.reset([newNode])` 175 | 176 | Reset the iterator to the original `node`. Optionally pass a `newNode` to start at. 177 | 178 | ```js 179 | it.reset(); 180 | ``` 181 | 182 | ### `iterator.use(fn)` 183 | 184 | Add a plugin to the iterator. 185 | 186 | ## Run Tests 187 | 188 | On the server: 189 | 190 | ```js 191 | npm install 192 | make test 193 | ``` 194 | 195 | Or in the browser: 196 | 197 | ```js 198 | npm install 199 | make test-browser 200 | ``` 201 | 202 | ## License 203 | 204 | MIT 205 | -------------------------------------------------------------------------------- /component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dom-iterator", 3 | "Repo": "matthewmueller/dom-iterator", 4 | "description": "iterate through DOM nodes", 5 | "version": "1.0.2", 6 | "keywords": [ 7 | "iterate", 8 | "dom" 9 | ], 10 | "dependencies": { 11 | "component/xor": "0.0.3", 12 | "component/props": "1.1.1" 13 | }, 14 | "development": { 15 | "component/domify": "*", 16 | "component/assert": "*" 17 | }, 18 | "license": "MIT", 19 | "main": "index.js", 20 | "scripts": [ 21 | "index.js" 22 | ] 23 | } -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Module Dependencies 3 | */ 4 | 5 | var direction = process.argv[2] || 'next'; 6 | var html = 'hi
whateveromg
bye'; 7 | var parser = require('mini-html-parser'); 8 | var dom = parser(html).parse(); 9 | var iterator = require('./'); 10 | var chalk = require('chalk'); 11 | var current = chalk.cyan.underline.bold; 12 | var method = chalk.green.bold; 13 | 14 | process.stdout.write('\u001B[2J\u001B[0;0f'); 15 | 16 | var it = iterator(dom).revisit(false); 17 | !!process.argv[2] ? it.closing() : it.opening(); 18 | color(it); 19 | 20 | traverse(direction); 21 | 22 | function traverse(dir) { 23 | var dirs = [].slice.call(arguments); 24 | var remaining = dirs.pop(); 25 | var limit = 100; 26 | var node; 27 | 28 | if (!dirs.length) { 29 | node = it[remaining](); 30 | if (node) color(it, remaining) 31 | } 32 | 33 | for (var i = 0, len = dirs.length; i < len; i++) { 34 | node = it[dirs[i]](); 35 | color(it, dir[i]); 36 | }; 37 | 38 | while (node && limit--) { 39 | node = it[remaining](); 40 | if (node) color(it, remaining); 41 | } 42 | } 43 | 44 | function color(it, dir) { 45 | var node = it.node || it.node; 46 | var type = node.nodeType; 47 | var name = node.nodeName.toLowerCase(); 48 | var out = ''; 49 | 50 | if (3 == type) { 51 | out = node.nodeValue; 52 | } else if (1 == type) { 53 | out = it.atClosing() ? '' : '<' + name + '>'; 54 | } 55 | 56 | var prefix = !dir ? ' it.node: ' : 'it.' + dir + '(): '; 57 | console.log(method(prefix) + html.replace(out, current(out))); 58 | 59 | return true; 60 | } 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Module Dependencies 3 | */ 4 | 5 | var xor = require('component-xor'); 6 | var props = require('component-props'); 7 | 8 | 9 | /** 10 | * Export `Iterator` 11 | */ 12 | 13 | module.exports = Iterator; 14 | 15 | /** 16 | * Initialize `Iterator` 17 | * 18 | * @param {Node} node 19 | * @param {Node} root 20 | * @return {Iterator} self 21 | * @api public 22 | */ 23 | 24 | function Iterator(node, root) { 25 | if (!(this instanceof Iterator)) return new Iterator(node, root); 26 | this.node = this.start = this.peeked = node; 27 | this.root = root; 28 | this.closingTag = false; 29 | this._revisit = true; 30 | this._selects = []; 31 | this._rejects = []; 32 | 33 | if (node && this.higher(node)) { 34 | throw new Error('root must be a parent or ancestor to node'); 35 | } 36 | } 37 | 38 | /** 39 | * Reset the Iterator 40 | * 41 | * @param {Node} node (optional) 42 | * @return {Iterator} self 43 | * @api public 44 | */ 45 | 46 | Iterator.prototype.reset = function(node) { 47 | this.node = node || this.start; 48 | return this; 49 | }; 50 | 51 | /** 52 | * Revisit element nodes. Defaults to `true` 53 | */ 54 | 55 | Iterator.prototype.revisit = function(revisit) { 56 | this._revisit = undefined == revisit ? true : revisit; 57 | return this; 58 | }; 59 | 60 | /** 61 | * Jump to the opening tag 62 | */ 63 | 64 | Iterator.prototype.opening = function() { 65 | if (1 == this.node.nodeType) this.closingTag = false; 66 | return this; 67 | }; 68 | 69 | /** 70 | * Jump to the closing tag 71 | */ 72 | 73 | Iterator.prototype.atOpening = function() { 74 | return !this.closingTag; 75 | }; 76 | 77 | 78 | /** 79 | * Jump to the closing tag 80 | */ 81 | 82 | Iterator.prototype.closing = function() { 83 | if (1 == this.node.nodeType) this.closingTag = true; 84 | return this; 85 | }; 86 | 87 | /** 88 | * Jump to the closing tag 89 | */ 90 | 91 | Iterator.prototype.atClosing = function() { 92 | return this.closingTag; 93 | }; 94 | 95 | /** 96 | * Next node 97 | * 98 | * @param {Number} type 99 | * @return {Node|null} 100 | * @api public 101 | */ 102 | 103 | Iterator.prototype.next = traverse('nextSibling', 'firstChild'); 104 | 105 | /** 106 | * Previous node 107 | * 108 | * @param {Number} type 109 | * @return {Node|null} 110 | * @api public 111 | */ 112 | 113 | Iterator.prototype.previous = 114 | Iterator.prototype.prev = traverse('previousSibling', 'lastChild'); 115 | 116 | /** 117 | * Make traverse function 118 | * 119 | * @param {String} dir 120 | * @param {String} child 121 | * @return {Function} 122 | * @api private 123 | */ 124 | 125 | function traverse(dir, child) { 126 | var next = dir == 'nextSibling'; 127 | return function walk(expr, n, peek) { 128 | expr = this.compile(expr); 129 | n = n && n > 0 ? n : 1; 130 | var node = this.node; 131 | var closing = this.closingTag; 132 | var revisit = this._revisit; 133 | 134 | while (node) { 135 | if (xor(next, closing) && node[child]) { 136 | // element with children: ... 137 | node = node[child]; 138 | closing = !next; 139 | } else if (1 == node.nodeType && !node[child] && xor(next, closing)) { 140 | // empty element tag: 141 | closing = next; 142 | if (!revisit) continue; 143 | } else if (node[dir]) { 144 | // element has a neighbor: ...... 145 | node = node[dir]; 146 | closing = !next; 147 | } else { 148 | // done with current layer, move up. 149 | node = node.parentNode; 150 | closing = next; 151 | if (!revisit) continue; 152 | } 153 | 154 | if (!node || this.higher(node, this.root)) break; 155 | 156 | if (expr(node) && this.selects(node, peek) && this.rejects(node, peek)) { 157 | if (--n) continue; 158 | if (!peek) this.node = node; 159 | this.closingTag = closing; 160 | return node; 161 | } 162 | } 163 | 164 | return null; 165 | }; 166 | } 167 | 168 | /** 169 | * Select nodes that cause `expr(node)` 170 | * to be truthy 171 | * 172 | * @param {Number|String|Function} expr 173 | * @return {Iterator} self 174 | * @api public 175 | */ 176 | 177 | Iterator.prototype.select = function(expr) { 178 | expr = this.compile(expr); 179 | this._selects.push(expr); 180 | return this; 181 | }; 182 | 183 | /** 184 | * Run through the selects ORing each 185 | * 186 | * @param {Node} node 187 | * @param {Boolean} peek 188 | * @return {Boolean} 189 | * @api private 190 | */ 191 | 192 | Iterator.prototype.selects = function(node, peek) { 193 | var exprs = this._selects; 194 | var len = exprs.length; 195 | if (!len) return true; 196 | 197 | for (var i = 0; i < len; i++) { 198 | if (exprs[i].call(this, node, peek)) return true; 199 | }; 200 | 201 | return false; 202 | }; 203 | 204 | /** 205 | * Select nodes that cause `expr(node)` 206 | * to be falsy 207 | * 208 | * @param {Number|String|Function} expr 209 | * @return {Iterator} self 210 | * @api public 211 | */ 212 | 213 | Iterator.prototype.reject = function(expr) { 214 | expr = this.compile(expr); 215 | this._rejects.push(expr); 216 | return this; 217 | }; 218 | 219 | /** 220 | * Run through the reject expressions ANDing each 221 | * 222 | * @param {Node} node 223 | * @param {Boolean} peek 224 | * @return {Boolean} 225 | * @api private 226 | */ 227 | 228 | Iterator.prototype.rejects = function(node, peek) { 229 | var exprs = this._rejects; 230 | var len = exprs.length; 231 | if (!len) return true; 232 | 233 | for (var i = 0; i < len; i++) { 234 | if (exprs[i].call(this, node, peek)) return false; 235 | }; 236 | 237 | return true; 238 | }; 239 | 240 | /** 241 | * Check if node is higher 242 | * than root. 243 | * 244 | * @param {Node} node 245 | * @param {Node} root 246 | * @return {Boolean} 247 | * @api private 248 | */ 249 | 250 | Iterator.prototype.higher = function(node) { 251 | var root = this.root; 252 | if (!root) return false; 253 | node = node.parentNode; 254 | while (node && node != root) node = node.parentNode; 255 | return node != root; 256 | }; 257 | 258 | /** 259 | * Compile an expression 260 | * 261 | * @param {String|Function|Number} expr 262 | * @return {Function} 263 | */ 264 | 265 | Iterator.prototype.compile = function(expr) { 266 | switch (typeof expr) { 267 | case 'number': 268 | return function(node) { return expr == node.nodeType; }; 269 | case 'string': 270 | return new Function('node', 'Object.freeze(node); return ' + props(expr, 'node.')); 271 | case 'function': 272 | return expr; 273 | default: 274 | return function() { return true; }; 275 | } 276 | }; 277 | 278 | /** 279 | * Peek in either direction 280 | * `n` nodes. Peek backwards 281 | * using negative numbers. 282 | * 283 | * @param {Number} n (optional) 284 | * @return {Node|null} 285 | * @api public 286 | */ 287 | 288 | Iterator.prototype.peak = 289 | Iterator.prototype.peek = function(expr, n) { 290 | if (arguments.length == 1) n = expr, expr = true; 291 | n = undefined == n ? 1 : n; 292 | if (!n) return this.node; 293 | else if (n > 0) return this.next(expr, n, true); 294 | else return this.prev(expr, Math.abs(n), true); 295 | }; 296 | 297 | /** 298 | * Add a plugin 299 | * 300 | * @param {Function} fn 301 | * @return {Iterator} 302 | * @api public 303 | */ 304 | 305 | Iterator.prototype.use = function(fn) { 306 | fn(this); 307 | return this; 308 | }; 309 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dom-iterator", 3 | "version": "1.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "dom-iterator", 9 | "version": "1.0.1", 10 | "license": "MIT", 11 | "dependencies": { 12 | "component-props": "1.1.1", 13 | "component-xor": "0.0.4" 14 | }, 15 | "devDependencies": { 16 | "chalk": "2.1.0", 17 | "component": "0.x", 18 | "component-domify": "1.2.2", 19 | "component-test": "0.1.7", 20 | "mini-html-parser": "0.0.3", 21 | "mocha": "1.17.1" 22 | } 23 | }, 24 | "node_modules/abbrev": { 25 | "version": "1.1.1", 26 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 27 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 28 | "dev": true, 29 | "license": "ISC" 30 | }, 31 | "node_modules/acorn": { 32 | "version": "5.7.4", 33 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", 34 | "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", 35 | "dev": true, 36 | "license": "MIT", 37 | "bin": { 38 | "acorn": "bin/acorn" 39 | }, 40 | "engines": { 41 | "node": ">=0.4.0" 42 | } 43 | }, 44 | "node_modules/adm-zip": { 45 | "version": "0.2.1", 46 | "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.2.1.tgz", 47 | "integrity": "sha512-J2LiZpRxcLsJm2IwoekNa6COwzEZnMwCJ3vxz0UCw2NYUH2WFi7svuDrVccq5KpBGmzGUgFa0L0FwEmKmu/rzQ==", 48 | "dev": true, 49 | "engines": { 50 | "node": ">=0.3.0" 51 | } 52 | }, 53 | "node_modules/after": { 54 | "version": "0.8.1", 55 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", 56 | "integrity": "sha512-SuI3vWhCFeSmkmmJ3efyuOkrhGyp/AuHthh3F5DinGYh2kR9t/0xUlm3/Vn2qMScfgg+cKho5fW7TUEYUhYeiA==", 57 | "dev": true 58 | }, 59 | "node_modules/agent-base": { 60 | "version": "1.0.2", 61 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-1.0.2.tgz", 62 | "integrity": "sha512-IrdRInle5l28T2DjBsOojXniN91mXYkt9piDyPbPEoA/X+f7kjd0qiIb18vZThIZCJdLk2Zq/ukXxZp8NkcFsw==", 63 | "dev": true, 64 | "license": "MIT" 65 | }, 66 | "node_modules/align-text": { 67 | "version": "0.1.4", 68 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 69 | "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", 70 | "dev": true, 71 | "license": "MIT", 72 | "dependencies": { 73 | "kind-of": "^3.0.2", 74 | "longest": "^1.0.1", 75 | "repeat-string": "^1.5.2" 76 | }, 77 | "engines": { 78 | "node": ">=0.10.0" 79 | } 80 | }, 81 | "node_modules/alter": { 82 | "version": "0.2.0", 83 | "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", 84 | "integrity": "sha512-Wuss6JIZ6h4j2+NgU2t+9mSwS7gBSZJbU4Dg8xETguAD2veJUSuCrvTIiC78QgZE7/zX7h6OnXw2PiiCBirEGw==", 85 | "dev": true, 86 | "license": "MIT", 87 | "dependencies": { 88 | "stable": "~0.1.3" 89 | } 90 | }, 91 | "node_modules/ansi-styles": { 92 | "version": "3.2.1", 93 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 94 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 95 | "dev": true, 96 | "license": "MIT", 97 | "dependencies": { 98 | "color-convert": "^1.9.0" 99 | }, 100 | "engines": { 101 | "node": ">=4" 102 | } 103 | }, 104 | "node_modules/archiver": { 105 | "version": "0.4.10", 106 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.4.10.tgz", 107 | "integrity": "sha512-kZfIZkWWptGDLj1IHt8HgOLHe4oBGPmHSoAJ142HVt7adzSO657//wLbrkyxyOT+IuGJCA1wMBB4U90MAEiUjQ==", 108 | "dev": true, 109 | "dependencies": { 110 | "iconv-lite": "~0.2.11", 111 | "readable-stream": "~1.0.2" 112 | }, 113 | "engines": { 114 | "node": ">= 0.6.3" 115 | } 116 | }, 117 | "node_modules/archy": { 118 | "version": "0.0.2", 119 | "resolved": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz", 120 | "integrity": "sha512-8mMsetjXv4pCPTrMbPPO2cxy9vzJn2jwbd+ug+mf8fEUZG2E78Vo5erJMjrnGuLTKqOLtS5ulFHJSfg1yaCjxA==", 121 | "dev": true, 122 | "license": "MIT/X11", 123 | "engines": { 124 | "node": "*" 125 | } 126 | }, 127 | "node_modules/argparse": { 128 | "version": "0.1.16", 129 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", 130 | "integrity": "sha512-LjmC2dNpdn2L4UzyoaIr11ELYoLn37ZFy9zObrQFHsSuOepeUEMKnM8w5KL4Tnrp2gy88rRuQt6Ky8Bjml+Baw==", 131 | "dev": true, 132 | "license": "MIT", 133 | "dependencies": { 134 | "underscore": "~1.7.0", 135 | "underscore.string": "~2.4.0" 136 | } 137 | }, 138 | "node_modules/argparse/node_modules/underscore": { 139 | "version": "1.7.0", 140 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", 141 | "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==", 142 | "dev": true 143 | }, 144 | "node_modules/asn1": { 145 | "version": "0.1.11", 146 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", 147 | "integrity": "sha512-Fh9zh3G2mZ8qM/kwsiKwL2U2FmXxVsboP4x1mXjnhKHv3SmzaBZoYvxEQJz/YS2gnCgd8xlAVWcZnQyC9qZBsA==", 148 | "dev": true, 149 | "engines": { 150 | "node": ">=0.4.9" 151 | } 152 | }, 153 | "node_modules/assert-plus": { 154 | "version": "0.1.5", 155 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", 156 | "integrity": "sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==", 157 | "dev": true, 158 | "optional": true, 159 | "engines": { 160 | "node": ">=0.8" 161 | } 162 | }, 163 | "node_modules/ast-traverse": { 164 | "version": "0.1.1", 165 | "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", 166 | "integrity": "sha512-CPuE4BWIhJjsNMvFkrzjiBgOl56NJTuBPBkBqyRyfq/nZtx1Z1f5I+qx7G/Zt+FAOS+ABhghkEuWJrfW9Njjog==", 167 | "dev": true, 168 | "license": "MIT" 169 | }, 170 | "node_modules/ast-types": { 171 | "version": "0.14.2", 172 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", 173 | "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", 174 | "dev": true, 175 | "license": "MIT", 176 | "dependencies": { 177 | "tslib": "^2.0.1" 178 | }, 179 | "engines": { 180 | "node": ">=4" 181 | } 182 | }, 183 | "node_modules/async": { 184 | "version": "0.2.10", 185 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 186 | "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==", 187 | "dev": true 188 | }, 189 | "node_modules/aws-sign": { 190 | "version": "0.3.0", 191 | "resolved": "https://registry.npmjs.org/aws-sign/-/aws-sign-0.3.0.tgz", 192 | "integrity": "sha512-pEMJAknifcXqXqYVXzGPIu8mJvxtJxIdpVpAs8HNS+paT+9srRUDMQn+3hULS7WbLmttcmvgMvnDcFujqXJyPw==", 193 | "dev": true, 194 | "engines": { 195 | "node": "*" 196 | } 197 | }, 198 | "node_modules/aws-sign2": { 199 | "version": "0.5.0", 200 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", 201 | "integrity": "sha512-oqUX0DM5j7aPWPCnpWebiyNIj2wiNI87ZxnOMoGv0aE4TGlBy2N+5iWc6dQ/NOKZaBD2W6PVz8jtOGkWzSC5EA==", 202 | "dev": true, 203 | "optional": true, 204 | "engines": { 205 | "node": "*" 206 | } 207 | }, 208 | "node_modules/balanced-match": { 209 | "version": "1.0.2", 210 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 211 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 212 | "dev": true, 213 | "license": "MIT" 214 | }, 215 | "node_modules/batch": { 216 | "version": "0.5.0", 217 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz", 218 | "integrity": "sha512-avtDJBSxllB5QGphW1OXYF+ujhy/yIGgeFsvK6UiZLU86nWlqsNcZotUKd001wrl9MmZ9QIyVy8WFVEEpRIc5A==", 219 | "dev": true 220 | }, 221 | "node_modules/boolbase": { 222 | "version": "1.0.0", 223 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 224 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 225 | "dev": true, 226 | "license": "ISC" 227 | }, 228 | "node_modules/boom": { 229 | "version": "0.4.2", 230 | "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", 231 | "integrity": "sha512-OvfN8y1oAxxphzkl2SnCS+ztV/uVKTATtgLjWYg/7KwcNyf3rzpHxNQJZCKtsZd4+MteKczhWbSjtEX4bGgU9g==", 232 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 233 | "dev": true, 234 | "dependencies": { 235 | "hoek": "0.9.x" 236 | }, 237 | "engines": { 238 | "node": ">=0.8.0" 239 | } 240 | }, 241 | "node_modules/brace-expansion": { 242 | "version": "1.1.11", 243 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 244 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 245 | "dev": true, 246 | "license": "MIT", 247 | "dependencies": { 248 | "balanced-match": "^1.0.0", 249 | "concat-map": "0.0.1" 250 | } 251 | }, 252 | "node_modules/breakable": { 253 | "version": "1.0.0", 254 | "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", 255 | "integrity": "sha512-+ityJqcjhozQNrezzTd2dtH/lkIXmE52HL+FohK2TOLQDl3QURTNkim+2C0xcso4Zehq/HM4Wkumcdz7Ue+XmA==", 256 | "dev": true, 257 | "license": "MIT" 258 | }, 259 | "node_modules/buffer-crc32": { 260 | "version": "0.2.1", 261 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz", 262 | "integrity": "sha512-vMfBIRp/wjlpueSz7Sb0OmO7C5SH58SSmbsT8G4D48YfO/Zgbr29xNXMpZVSC14ujVJfrZZH1Bl+kXYRQPuvfQ==", 263 | "dev": true, 264 | "engines": { 265 | "node": "*" 266 | } 267 | }, 268 | "node_modules/bytes": { 269 | "version": "0.2.1", 270 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz", 271 | "integrity": "sha512-odbk8/wGazOuC1v8v4phoV285/yx8UN5kfQhhuxaVcceig4OUiCZQBtaEtmA1Q78QSTN9iXOQ7X2EViybrEvtQ==", 272 | "dev": true 273 | }, 274 | "node_modules/camelcase": { 275 | "version": "1.2.1", 276 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 277 | "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", 278 | "dev": true, 279 | "license": "MIT", 280 | "engines": { 281 | "node": ">=0.10.0" 282 | } 283 | }, 284 | "node_modules/center-align": { 285 | "version": "0.1.3", 286 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 287 | "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", 288 | "dev": true, 289 | "license": "MIT", 290 | "dependencies": { 291 | "align-text": "^0.1.3", 292 | "lazy-cache": "^1.0.3" 293 | }, 294 | "engines": { 295 | "node": ">=0.10.0" 296 | } 297 | }, 298 | "node_modules/chalk": { 299 | "version": "2.1.0", 300 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", 301 | "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", 302 | "dev": true, 303 | "license": "MIT", 304 | "dependencies": { 305 | "ansi-styles": "^3.1.0", 306 | "escape-string-regexp": "^1.0.5", 307 | "supports-color": "^4.0.0" 308 | }, 309 | "engines": { 310 | "node": ">=4" 311 | } 312 | }, 313 | "node_modules/cheerio": { 314 | "version": "0.12.4", 315 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.12.4.tgz", 316 | "integrity": "sha512-XZStQ+OVs2AcUeMdpBUI51tGN0F5Bmu0EQ+5PC8RI4yd+MD0DrgIgP5ejuK8j5TRtVinhZbQrwbCIU07EN7exQ==", 317 | "dev": true, 318 | "dependencies": { 319 | "cheerio-select": "*", 320 | "entities": "0.x", 321 | "htmlparser2": "3.1.4", 322 | "underscore": "~1.4" 323 | }, 324 | "engines": { 325 | "node": ">= 0.6" 326 | } 327 | }, 328 | "node_modules/cheerio-select": { 329 | "version": "0.0.3", 330 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-0.0.3.tgz", 331 | "integrity": "sha512-T547B31tofMJg2Hm7sthSuP7X1hxckUHqOZYXEnaCJnEFL47g1VJCvwi67WIAsWbxcKFvMJYHPekjhBfTjSD5Q==", 332 | "dev": true, 333 | "dependencies": { 334 | "CSSselect": "0.x" 335 | }, 336 | "engines": { 337 | "node": ">= 0.4.7" 338 | } 339 | }, 340 | "node_modules/cliui": { 341 | "version": "2.1.0", 342 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 343 | "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", 344 | "dev": true, 345 | "license": "ISC", 346 | "dependencies": { 347 | "center-align": "^0.1.1", 348 | "right-align": "^0.1.1", 349 | "wordwrap": "0.0.2" 350 | } 351 | }, 352 | "node_modules/cliui/node_modules/wordwrap": { 353 | "version": "0.0.2", 354 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 355 | "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", 356 | "dev": true, 357 | "license": "MIT/X11", 358 | "engines": { 359 | "node": ">=0.4.0" 360 | } 361 | }, 362 | "node_modules/co": { 363 | "version": "3.0.6", 364 | "resolved": "https://registry.npmjs.org/co/-/co-3.0.6.tgz", 365 | "integrity": "sha512-Vj29f/AYywpPtHPhN9YqC7yK+p3rfjv7l/mTu5iOtn89a7DdccD4MYQmfU6R9wGdLXwufDIV07+PjXM0taVKvw==", 366 | "dev": true, 367 | "license": "MIT" 368 | }, 369 | "node_modules/color-convert": { 370 | "version": "1.9.3", 371 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 372 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 373 | "dev": true, 374 | "license": "MIT", 375 | "dependencies": { 376 | "color-name": "1.1.3" 377 | } 378 | }, 379 | "node_modules/color-name": { 380 | "version": "1.1.3", 381 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 382 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 383 | "dev": true, 384 | "license": "MIT" 385 | }, 386 | "node_modules/combined-stream": { 387 | "version": "0.0.7", 388 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", 389 | "integrity": "sha512-qfexlmLp9MyrkajQVyjEDb0Vj+KhRgR/rxLiVhaihlT+ZkX0lReqtH6Ack40CvMDERR4b5eFp3CreskpBs1Pig==", 390 | "dev": true, 391 | "dependencies": { 392 | "delayed-stream": "0.0.5" 393 | }, 394 | "engines": { 395 | "node": ">= 0.8" 396 | } 397 | }, 398 | "node_modules/commander": { 399 | "version": "1.3.2", 400 | "resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz", 401 | "integrity": "sha512-uoVVA5dchmxZeTMv2Qsd0vhn/RebJYsWo4all1qtrUL3BBhQFn4AQDF4PL+ZvOeK7gczXKEZaSCyMDMwFBlpBg==", 402 | "dev": true, 403 | "dependencies": { 404 | "keypress": "0.1.x" 405 | }, 406 | "engines": { 407 | "node": ">= 0.6.x" 408 | } 409 | }, 410 | "node_modules/commoner": { 411 | "version": "0.10.8", 412 | "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", 413 | "integrity": "sha512-3/qHkNMM6o/KGXHITA14y78PcfmXh4+AOCJpSoF73h4VY1JpdGv3CHMS5+JW6SwLhfJt4RhNmLAa7+RRX/62EQ==", 414 | "dev": true, 415 | "license": "MIT", 416 | "dependencies": { 417 | "commander": "^2.5.0", 418 | "detective": "^4.3.1", 419 | "glob": "^5.0.15", 420 | "graceful-fs": "^4.1.2", 421 | "iconv-lite": "^0.4.5", 422 | "mkdirp": "^0.5.0", 423 | "private": "^0.1.6", 424 | "q": "^1.1.2", 425 | "recast": "^0.11.17" 426 | }, 427 | "bin": { 428 | "commonize": "bin/commonize" 429 | }, 430 | "engines": { 431 | "node": ">= 0.8" 432 | } 433 | }, 434 | "node_modules/commoner/node_modules/ast-types": { 435 | "version": "0.9.6", 436 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", 437 | "integrity": "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==", 438 | "dev": true, 439 | "license": "MIT", 440 | "engines": { 441 | "node": ">= 0.8" 442 | } 443 | }, 444 | "node_modules/commoner/node_modules/commander": { 445 | "version": "2.20.3", 446 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 447 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 448 | "dev": true, 449 | "license": "MIT" 450 | }, 451 | "node_modules/commoner/node_modules/glob": { 452 | "version": "5.0.15", 453 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 454 | "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", 455 | "deprecated": "Glob versions prior to v9 are no longer supported", 456 | "dev": true, 457 | "license": "ISC", 458 | "dependencies": { 459 | "inflight": "^1.0.4", 460 | "inherits": "2", 461 | "minimatch": "2 || 3", 462 | "once": "^1.3.0", 463 | "path-is-absolute": "^1.0.0" 464 | }, 465 | "engines": { 466 | "node": "*" 467 | } 468 | }, 469 | "node_modules/commoner/node_modules/graceful-fs": { 470 | "version": "4.2.11", 471 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 472 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 473 | "dev": true, 474 | "license": "ISC" 475 | }, 476 | "node_modules/commoner/node_modules/iconv-lite": { 477 | "version": "0.4.24", 478 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 479 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 480 | "dev": true, 481 | "license": "MIT", 482 | "dependencies": { 483 | "safer-buffer": ">= 2.1.2 < 3" 484 | }, 485 | "engines": { 486 | "node": ">=0.10.0" 487 | } 488 | }, 489 | "node_modules/commoner/node_modules/minimatch": { 490 | "version": "3.1.2", 491 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 492 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 493 | "dev": true, 494 | "license": "ISC", 495 | "dependencies": { 496 | "brace-expansion": "^1.1.7" 497 | }, 498 | "engines": { 499 | "node": "*" 500 | } 501 | }, 502 | "node_modules/commoner/node_modules/minimist": { 503 | "version": "1.2.8", 504 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 505 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 506 | "dev": true, 507 | "license": "MIT", 508 | "funding": { 509 | "url": "https://github.com/sponsors/ljharb" 510 | } 511 | }, 512 | "node_modules/commoner/node_modules/mkdirp": { 513 | "version": "0.5.6", 514 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 515 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 516 | "dev": true, 517 | "license": "MIT", 518 | "dependencies": { 519 | "minimist": "^1.2.6" 520 | }, 521 | "bin": { 522 | "mkdirp": "bin/cmd.js" 523 | } 524 | }, 525 | "node_modules/commoner/node_modules/once": { 526 | "version": "1.4.0", 527 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 528 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 529 | "dev": true, 530 | "license": "ISC", 531 | "dependencies": { 532 | "wrappy": "1" 533 | } 534 | }, 535 | "node_modules/commoner/node_modules/q": { 536 | "version": "1.5.1", 537 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 538 | "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", 539 | "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", 540 | "dev": true, 541 | "license": "MIT", 542 | "engines": { 543 | "node": ">=0.6.0", 544 | "teleport": ">=0.2.0" 545 | } 546 | }, 547 | "node_modules/commoner/node_modules/recast": { 548 | "version": "0.11.23", 549 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", 550 | "integrity": "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==", 551 | "dev": true, 552 | "license": "MIT", 553 | "dependencies": { 554 | "ast-types": "0.9.6", 555 | "esprima": "~3.1.0", 556 | "private": "~0.1.5", 557 | "source-map": "~0.5.0" 558 | }, 559 | "engines": { 560 | "node": ">= 0.8" 561 | } 562 | }, 563 | "node_modules/commoner/node_modules/source-map": { 564 | "version": "0.5.7", 565 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 566 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 567 | "dev": true, 568 | "license": "BSD-3-Clause", 569 | "engines": { 570 | "node": ">=0.10.0" 571 | } 572 | }, 573 | "node_modules/component": { 574 | "version": "0.19.9", 575 | "resolved": "https://registry.npmjs.org/component/-/component-0.19.9.tgz", 576 | "integrity": "sha512-5byMkjGyKTARRiWYJV5aP+Is7jDAGD4Oio70abrmytgv0qy4H5yK5MV/6qVlkWCmSHDM9d2PqoQ76fXbeClqyg==", 577 | "dev": true, 578 | "dependencies": { 579 | "archy": "0.0.2", 580 | "batch": "~0.5.0", 581 | "commander": "1.0.5", 582 | "component-builder": "0.10.1", 583 | "component-installer": "~0.0.8", 584 | "component-package": "~0.0.4", 585 | "debug": "*", 586 | "jog": "0.4.0", 587 | "mkdirp": "~0.3.4", 588 | "netrc": "~0.1.3", 589 | "open": "0.0.4", 590 | "proxy-agent": "~1.1.0", 591 | "rimraf": "~2.2.6", 592 | "string-to-js": "0.0.1", 593 | "superagent": "~0.15.4", 594 | "superagent-proxy": "~0.3.0", 595 | "win-fork": "~1.1.1" 596 | }, 597 | "bin": { 598 | "component": "bin/component", 599 | "component-build": "bin/component-build", 600 | "component-changes": "bin/component-changes", 601 | "component-convert": "bin/component-convert", 602 | "component-create": "bin/component-create", 603 | "component-help": "bin/component-help", 604 | "component-info": "bin/component-info", 605 | "component-install": "bin/component-install", 606 | "component-ls": "bin/component-ls", 607 | "component-search": "bin/component-search", 608 | "component-wiki": "bin/component-wiki" 609 | }, 610 | "engines": { 611 | "node": ">= 0.8.0" 612 | } 613 | }, 614 | "node_modules/component-builder": { 615 | "version": "0.10.1", 616 | "resolved": "https://registry.npmjs.org/component-builder/-/component-builder-0.10.1.tgz", 617 | "integrity": "sha512-ZM0qnljYsaoEED5wvicPtEMODR8KV46w2bM9fDkZf9nPTujTKpnJ9qN5Pm7ykUtTJdIln25RqBhiXML1XX/uyg==", 618 | "dev": true, 619 | "dependencies": { 620 | "batch": "0.2.1", 621 | "component-require": "0.3.1", 622 | "cp": "~0.1.0", 623 | "debug": "*", 624 | "mkdirp": "0.3.4", 625 | "string-to-js": "0.0.1" 626 | } 627 | }, 628 | "node_modules/component-builder/node_modules/batch": { 629 | "version": "0.2.1", 630 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.2.1.tgz", 631 | "integrity": "sha512-prVkjDV23cjQy3z89LUFWV96l+VtCvCNk2NBjDTXzssr6G+3RGdkuLfh3uKJ/GmzkE+jyBXBGmo2hn/J/W2Dcw==", 632 | "dev": true 633 | }, 634 | "node_modules/component-builder/node_modules/mkdirp": { 635 | "version": "0.3.4", 636 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.4.tgz", 637 | "integrity": "sha512-sZObLj65ImOahHTaycVJF559muyAvv1hYyBQSfVfZq9ajpgY9Da+cRQzbXDfsKJTwUMUABRjBMDHieYqbHKx0g==", 638 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 639 | "dev": true, 640 | "license": "MIT/X11", 641 | "engines": { 642 | "node": "*" 643 | } 644 | }, 645 | "node_modules/component-domify": { 646 | "version": "1.2.2", 647 | "resolved": "https://registry.npmjs.org/component-domify/-/component-domify-1.2.2.tgz", 648 | "integrity": "sha512-UZMcrRvthQhNT+MAM+F9USJMkcnZVKao2Ue3Y0r0tiIwBU2lxuReM1hzh5a0ce1pwCDSmR1UbGg5Jgn6kFUqZw==", 649 | "dev": true 650 | }, 651 | "node_modules/component-installer": { 652 | "version": "0.0.8", 653 | "resolved": "https://registry.npmjs.org/component-installer/-/component-installer-0.0.8.tgz", 654 | "integrity": "sha512-dHIMShYz8udBg189DrD+TZ6/ki7p8O0fNxYkqPU0NPMlGbmD7iuHm6YdeWlGvtgLHcP1A8erZvPkIAwa5Miy2g==", 655 | "dev": true, 656 | "license": "MIT", 657 | "dependencies": { 658 | "batch": "~0.5.0", 659 | "component-package": "*", 660 | "debug": "~0.7.4" 661 | } 662 | }, 663 | "node_modules/component-package": { 664 | "version": "0.0.4", 665 | "resolved": "https://registry.npmjs.org/component-package/-/component-package-0.0.4.tgz", 666 | "integrity": "sha512-HLvSQ14XIVCgalVF/wBZqxLnwMO+rnK2llV6fuIRhq80/bmqqrb5YeIm2oobUW67q3JyrTOI6aMNZLJfJiO1HA==", 667 | "dev": true, 668 | "dependencies": { 669 | "batch": "0.3.2", 670 | "debug": "*", 671 | "mkdirp": "0.3.4", 672 | "netrc": "~0.1.3", 673 | "proxy-agent": "~1.1.0", 674 | "rimraf": "~2.1.4", 675 | "superagent": "0.15.7", 676 | "superagent-proxy": "~0.3.0" 677 | }, 678 | "engines": { 679 | "node": ">= 0.8.0" 680 | } 681 | }, 682 | "node_modules/component-package/node_modules/batch": { 683 | "version": "0.3.2", 684 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.3.2.tgz", 685 | "integrity": "sha512-TIMqydnQ7j/svdKkp7oovtYKFwxSiLpU8E62A3cVbi9+T8KUlsJSAB7Cg+Z/4ioYGDF4anLfImvpZlUP46TPqQ==", 686 | "dev": true 687 | }, 688 | "node_modules/component-package/node_modules/graceful-fs": { 689 | "version": "1.2.3", 690 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 691 | "integrity": "sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==", 692 | "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", 693 | "dev": true, 694 | "license": "BSD", 695 | "optional": true, 696 | "engines": { 697 | "node": ">=0.4.0" 698 | } 699 | }, 700 | "node_modules/component-package/node_modules/mkdirp": { 701 | "version": "0.3.4", 702 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.4.tgz", 703 | "integrity": "sha512-sZObLj65ImOahHTaycVJF559muyAvv1hYyBQSfVfZq9ajpgY9Da+cRQzbXDfsKJTwUMUABRjBMDHieYqbHKx0g==", 704 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 705 | "dev": true, 706 | "license": "MIT/X11", 707 | "engines": { 708 | "node": "*" 709 | } 710 | }, 711 | "node_modules/component-package/node_modules/rimraf": { 712 | "version": "2.1.4", 713 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz", 714 | "integrity": "sha512-tzwmX16YQhcFu0T/m0gHBcFKx6yQAg77Z6WWaQSJsUekXYa6yaAmHhrDdmFicgauX/er7GsdN+vRao3mBhA4kQ==", 715 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 716 | "dev": true, 717 | "license": "MIT", 718 | "optionalDependencies": { 719 | "graceful-fs": "~1" 720 | } 721 | }, 722 | "node_modules/component-props": { 723 | "version": "1.1.1", 724 | "resolved": "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz", 725 | "integrity": "sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q==" 726 | }, 727 | "node_modules/component-require": { 728 | "version": "0.3.1", 729 | "resolved": "https://registry.npmjs.org/component-require/-/component-require-0.3.1.tgz", 730 | "integrity": "sha512-MpKgc0kIW93KPY2ew6Y0owtJiRtHJO6vJVtxst26FxNrtBdLHQ3k/rTbfSZSJ09F4QHUiKLh6fxZd3U2FZPHAg==", 731 | "dev": true 732 | }, 733 | "node_modules/component-test": { 734 | "version": "0.1.7", 735 | "resolved": "https://registry.npmjs.org/component-test/-/component-test-0.1.7.tgz", 736 | "integrity": "sha512-pTnW9TED5GK+JQoJUgp+MHLduMPPRdhR1i63VZJId9sOcKjk50FfpSZUAT7vlUkPRUZ4BazQ5kwXnVAX4K3Cqw==", 737 | "dev": true, 738 | "dependencies": { 739 | "cheerio": "0.12.4", 740 | "commander": "1.3.2", 741 | "cross-spawn": "^0.1.7", 742 | "debug": "~0.7.4", 743 | "express": "3.4.6", 744 | "glob": "3.2.7", 745 | "localtunnel": "~0.1.3", 746 | "mocha": "1.15.1", 747 | "mocha-cloud2": "0.1.0", 748 | "mocha-phantomjs": "^3.6.0", 749 | "open": "0.0.4", 750 | "optimist": "~0.6.0", 751 | "osenv": "0.0.3", 752 | "phantomjs": ">=1.9.1 - 1.9.7-15", 753 | "yamljs": "~0.1.4" 754 | }, 755 | "bin": { 756 | "component-test": "bin/component-test" 757 | } 758 | }, 759 | "node_modules/component-test/node_modules/mocha": { 760 | "version": "1.15.1", 761 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.15.1.tgz", 762 | "integrity": "sha512-MHGr9fhe9XsXcZyzdivcENG6TTMHmf53lLsZtWUf/txwRujAe18j49kbDPzzUFSM9GLTp+s8LcCirJnNHSGylQ==", 763 | "deprecated": "Mocha v1.x is no longer supported.", 764 | "dev": true, 765 | "dependencies": { 766 | "commander": "2.0.0", 767 | "debug": "*", 768 | "diff": "1.0.7", 769 | "glob": "3.2.3", 770 | "growl": "1.7.x", 771 | "jade": "0.26.3", 772 | "mkdirp": "0.3.5" 773 | }, 774 | "bin": { 775 | "_mocha": "bin/_mocha", 776 | "mocha": "bin/mocha" 777 | }, 778 | "engines": { 779 | "node": ">= 0.4.x" 780 | } 781 | }, 782 | "node_modules/component-test/node_modules/mocha/node_modules/commander": { 783 | "version": "2.0.0", 784 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", 785 | "integrity": "sha512-qebjpyeaA/nJ4w3EO2cV2++/zEkccPnjWogzA2rff+Lk8ILI75vULeTmyd4wPxWdKwtP3J+G39IXVZadh0UHyw==", 786 | "dev": true, 787 | "engines": { 788 | "node": ">= 0.6.x" 789 | } 790 | }, 791 | "node_modules/component-test/node_modules/mocha/node_modules/glob": { 792 | "version": "3.2.3", 793 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", 794 | "integrity": "sha512-WPaLsMHD1lYEqAmIQI6VOJSPwuBdGShDWnj1yUo0vQqEO809R8W3LM9OVU13CnnDhyv/EiNwOtxEW74SmrzS6w==", 795 | "deprecated": "Glob versions prior to v9 are no longer supported", 796 | "dev": true, 797 | "license": "BSD", 798 | "dependencies": { 799 | "graceful-fs": "~2.0.0", 800 | "inherits": "2", 801 | "minimatch": "~0.2.11" 802 | }, 803 | "engines": { 804 | "node": "*" 805 | } 806 | }, 807 | "node_modules/component-xor": { 808 | "version": "0.0.4", 809 | "resolved": "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz", 810 | "integrity": "sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA==", 811 | "license": "MIT" 812 | }, 813 | "node_modules/component/node_modules/commander": { 814 | "version": "1.0.5", 815 | "resolved": "https://registry.npmjs.org/commander/-/commander-1.0.5.tgz", 816 | "integrity": "sha512-Iil6cZ1vitahfQSTrGO3L4v3dtvnfyGpKkXN+aJV9uR24JYxhM9bUfBLat65nU7cIXzOcnkjGtfdCuqaO1caIQ==", 817 | "dev": true, 818 | "dependencies": { 819 | "keypress": "0.1.x" 820 | }, 821 | "engines": { 822 | "node": ">= 0.6.x" 823 | } 824 | }, 825 | "node_modules/concat-map": { 826 | "version": "0.0.1", 827 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 828 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 829 | "dev": true, 830 | "license": "MIT" 831 | }, 832 | "node_modules/config-chain": { 833 | "version": "1.1.13", 834 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 835 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 836 | "dev": true, 837 | "license": "MIT", 838 | "dependencies": { 839 | "ini": "^1.3.4", 840 | "proto-list": "~1.2.1" 841 | } 842 | }, 843 | "node_modules/config-chain/node_modules/ini": { 844 | "version": "1.3.8", 845 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 846 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 847 | "dev": true, 848 | "license": "ISC" 849 | }, 850 | "node_modules/connect": { 851 | "version": "2.11.2", 852 | "resolved": "https://registry.npmjs.org/connect/-/connect-2.11.2.tgz", 853 | "integrity": "sha512-L7BluesOCZYMWFFRURAqoBnaNSppW0pjZRDIW9MSvlgD1r8XicnVdq0pYLa66vXnLguGimQ7SO/U9QliBy3vmw==", 854 | "deprecated": "connect 2.x series is deprecated", 855 | "dev": true, 856 | "dependencies": { 857 | "buffer-crc32": "0.2.1", 858 | "bytes": "0.2.1", 859 | "cookie": "0.1.0", 860 | "cookie-signature": "1.0.1", 861 | "debug": ">= 0.7.3 < 1", 862 | "fresh": "0.2.0", 863 | "methods": "0.1.0", 864 | "multiparty": "2.2.0", 865 | "negotiator": "0.3.0", 866 | "pause": "0.0.1", 867 | "qs": "0.6.5", 868 | "raw-body": "1.1.2", 869 | "send": "0.1.4", 870 | "uid2": "0.0.3" 871 | }, 872 | "engines": { 873 | "node": ">= 0.8.0" 874 | } 875 | }, 876 | "node_modules/cookie": { 877 | "version": "0.1.0", 878 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", 879 | "integrity": "sha512-YSNOBX085/nzHvrTLEHYHoNdkvpLU1MPjU3r1IGawudZJjfuqnRNIFrcOJJ7bfwC+HWbHL1Y4yMkC0O+HWjV7w==", 880 | "dev": true, 881 | "engines": { 882 | "node": "*" 883 | } 884 | }, 885 | "node_modules/cookie-jar": { 886 | "version": "0.3.0", 887 | "resolved": "https://registry.npmjs.org/cookie-jar/-/cookie-jar-0.3.0.tgz", 888 | "integrity": "sha512-dX1400pzPULr+ZovkIsDEqe7XH8xCAYGT5Dege4Eot44Qs2mS2iJmnh45TxTO5MIsCfrV/JGZVloLhm46AHxNw==", 889 | "dev": true, 890 | "engines": { 891 | "node": "*" 892 | } 893 | }, 894 | "node_modules/cookie-signature": { 895 | "version": "1.0.1", 896 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz", 897 | "integrity": "sha512-FMG5ziBzXZ5d4j5obbWOH1X7AtIpsU9ce9mQ+lHo/I1++kzz/isNarOj6T1lBPRspP3mZpuIutc7OVDVcaN1Kg==", 898 | "dev": true 899 | }, 900 | "node_modules/cookiejar": { 901 | "version": "1.3.0", 902 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-1.3.0.tgz", 903 | "integrity": "sha512-U+NgxxtwHIokuL04FqKEkqsaWBDtnCQo+wvYjUCtBA56Lcg8vpV3SGtBx+RAmw92SV3VT8PwsYcCFK/cC3Dw+A==", 904 | "dev": true, 905 | "engines": { 906 | "node": "*" 907 | } 908 | }, 909 | "node_modules/core-util-is": { 910 | "version": "1.0.3", 911 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 912 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 913 | "dev": true, 914 | "license": "MIT" 915 | }, 916 | "node_modules/cp": { 917 | "version": "0.1.1", 918 | "resolved": "https://registry.npmjs.org/cp/-/cp-0.1.1.tgz", 919 | "integrity": "sha512-ht9oKVsn1lAqV8FdUuSwBUQB8AG2cSyYbPim/mEwj+Dt3d21IRu2H5diDumMpKb77tsIAGM3eU484KvcTrPvHw==", 920 | "dev": true, 921 | "license": "MIT" 922 | }, 923 | "node_modules/cross-spawn": { 924 | "version": "0.1.7", 925 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.1.7.tgz", 926 | "integrity": "sha512-yJ53LJMJiTh1AL0uL7gD+hAK6WJZ6G7gKXw2xRjkqlPswYSIns7fKVXVYJbPelrWLHEBKI/XhreQREzK4TbawQ==", 927 | "dev": true, 928 | "license": "MIT" 929 | }, 930 | "node_modules/cryptiles": { 931 | "version": "0.2.2", 932 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", 933 | "integrity": "sha512-gvWSbgqP+569DdslUiCelxIv3IYK5Lgmq1UrRnk+s1WxQOQ16j3GPDcjdtgL5Au65DU/xQi6q3xPtf5Kta+3IQ==", 934 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 935 | "dev": true, 936 | "dependencies": { 937 | "boom": "0.4.x" 938 | }, 939 | "engines": { 940 | "node": ">=0.8.0" 941 | } 942 | }, 943 | "node_modules/CSSselect": { 944 | "version": "0.7.0", 945 | "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.7.0.tgz", 946 | "integrity": "sha512-nO3y7XdfjxNxiw9MU7zr7y5KyiorBmL/SGx0hqPDp4oQmm7uFoFQLvC+kYZWGHo7cM23Zwog0KL00d0RJhd/4w==", 947 | "deprecated": "the module is now available as 'css-select'", 948 | "dev": true, 949 | "license": "BSD-like", 950 | "dependencies": { 951 | "boolbase": "~1.0.0", 952 | "CSSwhat": "0.4", 953 | "domutils": "1.4", 954 | "nth-check": "~1.0.0" 955 | } 956 | }, 957 | "node_modules/CSSwhat": { 958 | "version": "0.4.7", 959 | "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz", 960 | "integrity": "sha512-bU5cYG02crjQGDN6wm8USThp/sr/MUulMTrVA1CENSBhv3B+mlJfYDP1em/wJlMT0aYcWso0cuT9NXW74yPfog==", 961 | "deprecated": "the module is now available as 'css-what'", 962 | "dev": true, 963 | "license": "BSD-like", 964 | "engines": { 965 | "node": "*" 966 | } 967 | }, 968 | "node_modules/ctype": { 969 | "version": "0.5.3", 970 | "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", 971 | "integrity": "sha512-T6CEkoSV4q50zW3TlTHMbzy1E5+zlnNcY+yb7tWVYlTwPhx9LpnfAkd4wecpWknDyptp4k97LUZeInlf6jdzBg==", 972 | "dev": true, 973 | "optional": true, 974 | "engines": { 975 | "node": ">= 0.4" 976 | } 977 | }, 978 | "node_modules/data-uri-to-buffer": { 979 | "version": "0.0.4", 980 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz", 981 | "integrity": "sha512-nntmCbCupHk2zFSWe64pTt0LJ2U6Bt3K1MWgwXiEAj9IEaowSXbGLYN7m8xCb4hbpQl8QSCRBkKT9tFRUMkU7A==", 982 | "dev": true, 983 | "license": "MIT" 984 | }, 985 | "node_modules/debug": { 986 | "version": "0.7.4", 987 | "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", 988 | "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==", 989 | "dev": true, 990 | "engines": { 991 | "node": "*" 992 | } 993 | }, 994 | "node_modules/decamelize": { 995 | "version": "1.2.0", 996 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 997 | "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", 998 | "dev": true, 999 | "license": "MIT", 1000 | "engines": { 1001 | "node": ">=0.10.0" 1002 | } 1003 | }, 1004 | "node_modules/deep-is": { 1005 | "version": "0.1.4", 1006 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1007 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1008 | "dev": true, 1009 | "license": "MIT" 1010 | }, 1011 | "node_modules/defined": { 1012 | "version": "1.0.1", 1013 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 1014 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 1015 | "dev": true, 1016 | "license": "MIT", 1017 | "funding": { 1018 | "url": "https://github.com/sponsors/ljharb" 1019 | } 1020 | }, 1021 | "node_modules/defs": { 1022 | "version": "1.1.1", 1023 | "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", 1024 | "integrity": "sha512-KgGV1vmSa2UPKeDXaWE5FiXjix8BOtYMgiPGpYhd/42wxiC6YGwtscj/zU9gD5/xk4K2iLDpyGhGA5puZxaeMg==", 1025 | "dev": true, 1026 | "license": "MIT", 1027 | "dependencies": { 1028 | "alter": "~0.2.0", 1029 | "ast-traverse": "~0.1.1", 1030 | "breakable": "~1.0.0", 1031 | "esprima-fb": "~15001.1001.0-dev-harmony-fb", 1032 | "simple-fmt": "~0.1.0", 1033 | "simple-is": "~0.2.0", 1034 | "stringmap": "~0.2.2", 1035 | "stringset": "~0.2.1", 1036 | "tryor": "~0.1.2", 1037 | "yargs": "~3.27.0" 1038 | }, 1039 | "bin": { 1040 | "defs": "build/es5/defs" 1041 | } 1042 | }, 1043 | "node_modules/degenerator": { 1044 | "version": "1.0.4", 1045 | "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", 1046 | "integrity": "sha512-EMAC+riLSC64jKfOs1jp8J7M4ZXstUUwTdwFBEv6HOzL/Ae+eAzMKEK0nJnpof2fnw9IOjmE6u6qXFejVyk8AA==", 1047 | "dev": true, 1048 | "license": "MIT", 1049 | "dependencies": { 1050 | "ast-types": "0.x.x", 1051 | "escodegen": "1.x.x", 1052 | "esprima": "3.x.x" 1053 | } 1054 | }, 1055 | "node_modules/delayed-stream": { 1056 | "version": "0.0.5", 1057 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", 1058 | "integrity": "sha512-v+7uBd1pqe5YtgPacIIbZ8HuHeLFVNe4mUEyFDXL6KiqzEykjbw+5mXZXpGFgNVasdL4jWKgaKIXrEHiynN1LA==", 1059 | "dev": true, 1060 | "engines": { 1061 | "node": ">=0.4.0" 1062 | } 1063 | }, 1064 | "node_modules/detective": { 1065 | "version": "4.7.1", 1066 | "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", 1067 | "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", 1068 | "dev": true, 1069 | "license": "MIT", 1070 | "dependencies": { 1071 | "acorn": "^5.2.1", 1072 | "defined": "^1.0.0" 1073 | } 1074 | }, 1075 | "node_modules/diff": { 1076 | "version": "1.0.7", 1077 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", 1078 | "integrity": "sha512-0bTLzyr1S59cPsgAD/lR+ivvHTbgPb+k/mUR6WGqma1J6QDU+kUegI8uQFuH/cMUNK7JGN3Tk1Y5Jf2MO85WrA==", 1079 | "dev": true, 1080 | "engines": { 1081 | "node": ">=0.3.1" 1082 | } 1083 | }, 1084 | "node_modules/domelementtype": { 1085 | "version": "1.3.1", 1086 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 1087 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 1088 | "dev": true, 1089 | "license": "BSD-2-Clause" 1090 | }, 1091 | "node_modules/domutils": { 1092 | "version": "1.4.3", 1093 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", 1094 | "integrity": "sha512-ZkVgS/PpxjyJMb+S2iVHHEZjVnOUtjGp0/zstqKGTE9lrZtNHlNQmLwP/lhLMEApYbzc08BKMx9IFpKhaSbW1w==", 1095 | "dev": true, 1096 | "dependencies": { 1097 | "domelementtype": "1" 1098 | } 1099 | }, 1100 | "node_modules/emitter-component": { 1101 | "version": "1.0.0", 1102 | "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.0.0.tgz", 1103 | "integrity": "sha512-GZrLdp4Z7OERecoYQYElVVqf6/gcbGUs8nvaE+nmu2dGy453lLgGyPLNX9DdSyojdMqI86fCT9XQqsWJymciEw==", 1104 | "dev": true 1105 | }, 1106 | "node_modules/entities": { 1107 | "version": "0.5.0", 1108 | "resolved": "https://registry.npmjs.org/entities/-/entities-0.5.0.tgz", 1109 | "integrity": "sha512-T5XQtlzuW+PfeSsGp3uryfYQof820zYbnUnUDEkwUVIAfgYeixIN16c4jh8gs0SqJUTGLU0XD6QsvjEPbmdwzQ==", 1110 | "dev": true, 1111 | "license": "BSD-like" 1112 | }, 1113 | "node_modules/escape-string-regexp": { 1114 | "version": "1.0.5", 1115 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1116 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1117 | "dev": true, 1118 | "license": "MIT", 1119 | "engines": { 1120 | "node": ">=0.8.0" 1121 | } 1122 | }, 1123 | "node_modules/escodegen": { 1124 | "version": "1.14.3", 1125 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", 1126 | "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", 1127 | "dev": true, 1128 | "license": "BSD-2-Clause", 1129 | "dependencies": { 1130 | "esprima": "^4.0.1", 1131 | "estraverse": "^4.2.0", 1132 | "esutils": "^2.0.2", 1133 | "optionator": "^0.8.1" 1134 | }, 1135 | "bin": { 1136 | "escodegen": "bin/escodegen.js", 1137 | "esgenerate": "bin/esgenerate.js" 1138 | }, 1139 | "engines": { 1140 | "node": ">=4.0" 1141 | }, 1142 | "optionalDependencies": { 1143 | "source-map": "~0.6.1" 1144 | } 1145 | }, 1146 | "node_modules/escodegen/node_modules/esprima": { 1147 | "version": "4.0.1", 1148 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1149 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1150 | "dev": true, 1151 | "license": "BSD-2-Clause", 1152 | "bin": { 1153 | "esparse": "bin/esparse.js", 1154 | "esvalidate": "bin/esvalidate.js" 1155 | }, 1156 | "engines": { 1157 | "node": ">=4" 1158 | } 1159 | }, 1160 | "node_modules/esprima": { 1161 | "version": "3.1.3", 1162 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 1163 | "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", 1164 | "dev": true, 1165 | "license": "BSD-2-Clause", 1166 | "bin": { 1167 | "esparse": "bin/esparse.js", 1168 | "esvalidate": "bin/esvalidate.js" 1169 | }, 1170 | "engines": { 1171 | "node": ">=4" 1172 | } 1173 | }, 1174 | "node_modules/esprima-fb": { 1175 | "version": "15001.1001.0-dev-harmony-fb", 1176 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", 1177 | "integrity": "sha512-m7OsYzocA8OQ3+9CxmhIv7NPHtyDR2ixaLCO7kLZ+YH+xQ/BpaZmll9EXmc+kBxzWA8BRBXbNEuEQqQ6vfsgDw==", 1178 | "dev": true, 1179 | "bin": { 1180 | "esparse": "bin/esparse.js", 1181 | "esvalidate": "bin/esvalidate.js" 1182 | }, 1183 | "engines": { 1184 | "node": ">=0.4.0" 1185 | } 1186 | }, 1187 | "node_modules/estraverse": { 1188 | "version": "4.3.0", 1189 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1190 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1191 | "dev": true, 1192 | "license": "BSD-2-Clause", 1193 | "engines": { 1194 | "node": ">=4.0" 1195 | } 1196 | }, 1197 | "node_modules/esutils": { 1198 | "version": "2.0.3", 1199 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1200 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1201 | "dev": true, 1202 | "license": "BSD-2-Clause", 1203 | "engines": { 1204 | "node": ">=0.10.0" 1205 | } 1206 | }, 1207 | "node_modules/express": { 1208 | "version": "3.4.6", 1209 | "resolved": "https://registry.npmjs.org/express/-/express-3.4.6.tgz", 1210 | "integrity": "sha512-QC38nmyD0vAFJzZAPxqcw64hTrYRWolwRMIbzz6J3QaBV6xA2iq8Ik0fvpEC73RzKaFubGGNOdYCrNbE0Juhjw==", 1211 | "dev": true, 1212 | "dependencies": { 1213 | "buffer-crc32": "0.2.1", 1214 | "commander": "1.3.2", 1215 | "connect": "2.11.2", 1216 | "cookie": "0.1.0", 1217 | "cookie-signature": "1.0.1", 1218 | "debug": ">= 0.7.3 < 1", 1219 | "fresh": "0.2.0", 1220 | "methods": "0.1.0", 1221 | "mkdirp": "0.3.5", 1222 | "range-parser": "0.0.4", 1223 | "send": "0.1.4" 1224 | }, 1225 | "bin": { 1226 | "express": "bin/express" 1227 | }, 1228 | "engines": { 1229 | "node": ">= 0.8.0" 1230 | } 1231 | }, 1232 | "node_modules/extend": { 1233 | "version": "3.0.2", 1234 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1235 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1236 | "dev": true, 1237 | "license": "MIT" 1238 | }, 1239 | "node_modules/fast-levenshtein": { 1240 | "version": "2.0.6", 1241 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1242 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1243 | "dev": true, 1244 | "license": "MIT" 1245 | }, 1246 | "node_modules/file-uri-to-path": { 1247 | "version": "0.0.2", 1248 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-0.0.2.tgz", 1249 | "integrity": "sha512-jNmalsdk1enTf+tjxrMb3nutLleumh96WWtXJQHU700Jmjyl/CHj33Di5iFECNNfgb9GwlMNKU18tukUPlFXMg==", 1250 | "dev": true, 1251 | "license": "MIT" 1252 | }, 1253 | "node_modules/forever-agent": { 1254 | "version": "0.5.2", 1255 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", 1256 | "integrity": "sha512-PDG5Ef0Dob/JsZUxUltJOhm/Y9mlteAE+46y3M9RBz/Rd3QVENJ75aGRhN56yekTUboaBIkd8KVWX2NjF6+91A==", 1257 | "dev": true, 1258 | "engines": { 1259 | "node": "*" 1260 | } 1261 | }, 1262 | "node_modules/form-data": { 1263 | "version": "0.1.4", 1264 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", 1265 | "integrity": "sha512-x8eE+nzFtAMA0YYlSxf/Qhq6vP1f8wSoZ7Aw1GuctBcmudCNuTUmmx45TfEplyb6cjsZO/jvh6+1VpZn24ez+w==", 1266 | "dev": true, 1267 | "optional": true, 1268 | "dependencies": { 1269 | "async": "~0.9.0", 1270 | "combined-stream": "~0.0.4", 1271 | "mime": "~1.2.11" 1272 | }, 1273 | "engines": { 1274 | "node": ">= 0.8" 1275 | } 1276 | }, 1277 | "node_modules/form-data/node_modules/async": { 1278 | "version": "0.9.2", 1279 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 1280 | "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==", 1281 | "dev": true, 1282 | "license": "MIT", 1283 | "optional": true 1284 | }, 1285 | "node_modules/formidable": { 1286 | "version": "1.0.14", 1287 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz", 1288 | "integrity": "sha512-aOskFHEfYwkSKSzGui5jhQ+uyLo2NTwpzhndggz2YZHlv0HkAi+zG5ZEBCL3GTvqLyr/FzX9Mvx9DueCmu2HzQ==", 1289 | "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", 1290 | "dev": true, 1291 | "engines": { 1292 | "node": ">=0.8.0" 1293 | } 1294 | }, 1295 | "node_modules/fresh": { 1296 | "version": "0.2.0", 1297 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz", 1298 | "integrity": "sha512-ckGdAuSRr1wBmnq7CsW7eU37DBwQxHx3vW8foJUIrF56rkOy8Osm6Fe8KSwemwyKejivKki7jVBgpBpBJexmrw==", 1299 | "dev": true 1300 | }, 1301 | "node_modules/ftp": { 1302 | "version": "0.3.10", 1303 | "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", 1304 | "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", 1305 | "dev": true, 1306 | "dependencies": { 1307 | "readable-stream": "1.1.x", 1308 | "xregexp": "2.0.0" 1309 | }, 1310 | "engines": { 1311 | "node": ">=0.8.0" 1312 | } 1313 | }, 1314 | "node_modules/ftp/node_modules/readable-stream": { 1315 | "version": "1.1.14", 1316 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1317 | "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", 1318 | "dev": true, 1319 | "license": "MIT", 1320 | "dependencies": { 1321 | "core-util-is": "~1.0.0", 1322 | "inherits": "~2.0.1", 1323 | "isarray": "0.0.1", 1324 | "string_decoder": "~0.10.x" 1325 | } 1326 | }, 1327 | "node_modules/get-uri": { 1328 | "version": "0.1.4", 1329 | "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-0.1.4.tgz", 1330 | "integrity": "sha512-xV5cksh/mERjnnDgZe0wKO2VokqUeTe/QaKrhUHhm77eiLXhGrWi5qiz20tF6NKRTcY47YP1OzSRgTHadNY3mQ==", 1331 | "dev": true, 1332 | "license": "MIT", 1333 | "dependencies": { 1334 | "data-uri-to-buffer": "0", 1335 | "debug": "2", 1336 | "extend": "3", 1337 | "file-uri-to-path": "0", 1338 | "ftp": "~0.3.5", 1339 | "readable-stream": "2" 1340 | } 1341 | }, 1342 | "node_modules/get-uri/node_modules/debug": { 1343 | "version": "2.6.9", 1344 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1345 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1346 | "dev": true, 1347 | "license": "MIT", 1348 | "dependencies": { 1349 | "ms": "2.0.0" 1350 | } 1351 | }, 1352 | "node_modules/get-uri/node_modules/isarray": { 1353 | "version": "1.0.0", 1354 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1355 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1356 | "dev": true, 1357 | "license": "MIT" 1358 | }, 1359 | "node_modules/get-uri/node_modules/ms": { 1360 | "version": "2.0.0", 1361 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1362 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1363 | "dev": true, 1364 | "license": "MIT" 1365 | }, 1366 | "node_modules/get-uri/node_modules/readable-stream": { 1367 | "version": "2.3.8", 1368 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1369 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1370 | "dev": true, 1371 | "license": "MIT", 1372 | "dependencies": { 1373 | "core-util-is": "~1.0.0", 1374 | "inherits": "~2.0.3", 1375 | "isarray": "~1.0.0", 1376 | "process-nextick-args": "~2.0.0", 1377 | "safe-buffer": "~5.1.1", 1378 | "string_decoder": "~1.1.1", 1379 | "util-deprecate": "~1.0.1" 1380 | } 1381 | }, 1382 | "node_modules/get-uri/node_modules/string_decoder": { 1383 | "version": "1.1.1", 1384 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1385 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1386 | "dev": true, 1387 | "license": "MIT", 1388 | "dependencies": { 1389 | "safe-buffer": "~5.1.0" 1390 | } 1391 | }, 1392 | "node_modules/glob": { 1393 | "version": "3.2.7", 1394 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.7.tgz", 1395 | "integrity": "sha512-DaADhstzS42quruVnBdaZUrbSv3I+8K+7QQ5WrKQ1oFcBYJR9iuDNoz4MVxJlOhL4b8ETTAFZA6x755SiaUx2A==", 1396 | "deprecated": "Glob versions prior to v9 are no longer supported", 1397 | "dev": true, 1398 | "license": "BSD", 1399 | "dependencies": { 1400 | "inherits": "2", 1401 | "minimatch": "~0.2.11" 1402 | }, 1403 | "engines": { 1404 | "node": "*" 1405 | } 1406 | }, 1407 | "node_modules/graceful-fs": { 1408 | "version": "2.0.3", 1409 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", 1410 | "integrity": "sha512-hcj/NTUWv+C3MbqrVb9F+aH6lvTwEHJdx2foBxlrVq5h6zE8Bfu4pv4CAAqbDcZrw/9Ak5lsRXlY9Ao8/F0Tuw==", 1411 | "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", 1412 | "dev": true, 1413 | "license": "BSD", 1414 | "engines": { 1415 | "node": ">=0.4.0" 1416 | } 1417 | }, 1418 | "node_modules/growl": { 1419 | "version": "1.7.0", 1420 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", 1421 | "integrity": "sha512-VWv7s1EI41AG2LiCr7uAuxWikLDN1SQOuEUc37d/P34NAIIYgkvWYngNw0d9d9iCrDFL0SYCE9UQpxhIjjtuLg==", 1422 | "dev": true 1423 | }, 1424 | "node_modules/has-flag": { 1425 | "version": "2.0.0", 1426 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1427 | "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", 1428 | "dev": true, 1429 | "license": "MIT", 1430 | "engines": { 1431 | "node": ">=0.10.0" 1432 | } 1433 | }, 1434 | "node_modules/hawk": { 1435 | "version": "1.0.0", 1436 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz", 1437 | "integrity": "sha512-Sg+VzrI7TjUomO0rjD6UXawsj50ykn5sB/xKNW/IenxzRVyw/wt9A2FLzYpGL/r0QG5hyXY8nLx/2m8UutoDcg==", 1438 | "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 1439 | "dev": true, 1440 | "optional": true, 1441 | "dependencies": { 1442 | "boom": "0.4.x", 1443 | "cryptiles": "0.2.x", 1444 | "hoek": "0.9.x", 1445 | "sntp": "0.2.x" 1446 | }, 1447 | "engines": { 1448 | "node": ">=0.8.0" 1449 | } 1450 | }, 1451 | "node_modules/hoek": { 1452 | "version": "0.9.1", 1453 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", 1454 | "integrity": "sha512-ZZ6eGyzGjyMTmpSPYVECXy9uNfqBR7x5CavhUaLOeD6W0vWK1mp/b7O3f86XE0Mtfo9rZ6Bh3fnuw9Xr8MF9zA==", 1455 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 1456 | "dev": true, 1457 | "engines": { 1458 | "node": ">=0.8.0" 1459 | } 1460 | }, 1461 | "node_modules/htmlparser2": { 1462 | "version": "3.1.4", 1463 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.1.4.tgz", 1464 | "integrity": "sha512-45m656EiWxsqzeKl3UZIk9CW47Jodbl2JaawHMHuH8JKU2BF5q0UV+aq89kUjc+6SG5LSkJBW/UlrI1+AlKdHg==", 1465 | "dev": true, 1466 | "dependencies": { 1467 | "domelementtype": "1", 1468 | "domhandler": "2.0", 1469 | "domutils": "1.1", 1470 | "readable-stream": "1.0" 1471 | } 1472 | }, 1473 | "node_modules/htmlparser2/node_modules/domhandler": { 1474 | "version": "2.0.3", 1475 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.0.3.tgz", 1476 | "integrity": "sha512-D8+qeCUo6LpYvBZsmXWunDJ9zOD8mVg6EwZIdgxmnT+xGWRsReF/TwsZ5EzlIJDipxlE6qJh1dXt9oeplGN3Bg==", 1477 | "dev": true, 1478 | "dependencies": { 1479 | "domelementtype": "1" 1480 | } 1481 | }, 1482 | "node_modules/htmlparser2/node_modules/domutils": { 1483 | "version": "1.1.6", 1484 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", 1485 | "integrity": "sha512-ZeagMzMKyk9GSFMqV3x3uHgRN36hLpSOF6LIRXmftce0UUqFsAx/azJAJ4Jc+9DYKmwROH5HLOcOu1OPARWwNg==", 1486 | "dev": true, 1487 | "dependencies": { 1488 | "domelementtype": "1" 1489 | } 1490 | }, 1491 | "node_modules/http-proxy-agent": { 1492 | "version": "0.2.7", 1493 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-0.2.7.tgz", 1494 | "integrity": "sha512-9W3grrlsrW2kRGNRbGkBNVFx4voQS1H1TxWR60MVHKQ+rw+kRtA9JXVGQiiDgYsp315Ex5HPk+3it4lBNyk4WA==", 1495 | "dev": true, 1496 | "license": "MIT", 1497 | "dependencies": { 1498 | "agent-base": "~1.0.1", 1499 | "debug": "2", 1500 | "extend": "3" 1501 | } 1502 | }, 1503 | "node_modules/http-proxy-agent/node_modules/debug": { 1504 | "version": "2.6.9", 1505 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1506 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1507 | "dev": true, 1508 | "license": "MIT", 1509 | "dependencies": { 1510 | "ms": "2.0.0" 1511 | } 1512 | }, 1513 | "node_modules/http-proxy-agent/node_modules/ms": { 1514 | "version": "2.0.0", 1515 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1516 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1517 | "dev": true, 1518 | "license": "MIT" 1519 | }, 1520 | "node_modules/http-signature": { 1521 | "version": "0.10.1", 1522 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", 1523 | "integrity": "sha512-coK8uR5rq2IMj+Hen+sKPA5ldgbCc1/spPdKCL1Fw6h+D0s/2LzMcRK0Cqufs1h0ryx/niwBHGFu8HC3hwU+lA==", 1524 | "dev": true, 1525 | "license": "MIT", 1526 | "optional": true, 1527 | "dependencies": { 1528 | "asn1": "0.1.11", 1529 | "assert-plus": "^0.1.5", 1530 | "ctype": "0.5.3" 1531 | }, 1532 | "engines": { 1533 | "node": ">=0.8" 1534 | } 1535 | }, 1536 | "node_modules/https-proxy-agent": { 1537 | "version": "0.3.6", 1538 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-0.3.6.tgz", 1539 | "integrity": "sha512-ZuLafAeUu97abfbpAO9Cwjl3slsx6yZ7apTYBNVtMdoDhlVzUhxXO0qh+Xxqc5FAm7oq747k2jjbICYJdEYShg==", 1540 | "dev": true, 1541 | "license": "MIT", 1542 | "dependencies": { 1543 | "agent-base": "~1.0.1", 1544 | "debug": "2", 1545 | "extend": "3" 1546 | } 1547 | }, 1548 | "node_modules/https-proxy-agent/node_modules/debug": { 1549 | "version": "2.6.9", 1550 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1551 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1552 | "dev": true, 1553 | "license": "MIT", 1554 | "dependencies": { 1555 | "ms": "2.0.0" 1556 | } 1557 | }, 1558 | "node_modules/https-proxy-agent/node_modules/ms": { 1559 | "version": "2.0.0", 1560 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1561 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1562 | "dev": true, 1563 | "license": "MIT" 1564 | }, 1565 | "node_modules/iconv-lite": { 1566 | "version": "0.2.11", 1567 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", 1568 | "integrity": "sha512-KhmFWgaQZY83Cbhi+ADInoUQ8Etn6BG5fikM9syeOjQltvR45h7cRKJ/9uvQEuD61I3Uju77yYce0/LhKVClQw==", 1569 | "dev": true, 1570 | "license": "MIT", 1571 | "engines": { 1572 | "node": ">=0.4.0" 1573 | } 1574 | }, 1575 | "node_modules/inflight": { 1576 | "version": "1.0.6", 1577 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1578 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1579 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 1580 | "dev": true, 1581 | "license": "ISC", 1582 | "dependencies": { 1583 | "once": "^1.3.0", 1584 | "wrappy": "1" 1585 | } 1586 | }, 1587 | "node_modules/inflight/node_modules/once": { 1588 | "version": "1.4.0", 1589 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1590 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1591 | "dev": true, 1592 | "license": "ISC", 1593 | "dependencies": { 1594 | "wrappy": "1" 1595 | } 1596 | }, 1597 | "node_modules/inherits": { 1598 | "version": "2.0.4", 1599 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1600 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1601 | "dev": true, 1602 | "license": "ISC" 1603 | }, 1604 | "node_modules/ini": { 1605 | "version": "1.1.0", 1606 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.1.0.tgz", 1607 | "integrity": "sha512-B6L/jfyFRcG2dqKiHggWnfby52Iy07iabE4F6srQAr/OmVKBRE5uU+B5MQ+nQ7NiYnjz93gENh1GhqHzpDgHgA==", 1608 | "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", 1609 | "dev": true, 1610 | "engines": { 1611 | "node": "*" 1612 | } 1613 | }, 1614 | "node_modules/invert-kv": { 1615 | "version": "1.0.0", 1616 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 1617 | "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", 1618 | "dev": true, 1619 | "license": "MIT", 1620 | "engines": { 1621 | "node": ">=0.10.0" 1622 | } 1623 | }, 1624 | "node_modules/ip": { 1625 | "version": "1.1.9", 1626 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", 1627 | "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", 1628 | "dev": true, 1629 | "license": "MIT" 1630 | }, 1631 | "node_modules/is-buffer": { 1632 | "version": "1.1.6", 1633 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1634 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1635 | "dev": true, 1636 | "license": "MIT" 1637 | }, 1638 | "node_modules/isarray": { 1639 | "version": "0.0.1", 1640 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1641 | "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", 1642 | "dev": true, 1643 | "license": "MIT" 1644 | }, 1645 | "node_modules/jade": { 1646 | "version": "0.26.3", 1647 | "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", 1648 | "integrity": "sha512-mkk3vzUHFjzKjpCXeu+IjXeZD+QOTjUUdubgmHtHTDwvAO2ZTkMTTVrapts5CWz3JvJryh/4KWZpjeZrCepZ3A==", 1649 | "deprecated": "Jade has been renamed to pug, please install the latest version of pug instead of jade", 1650 | "dev": true, 1651 | "dependencies": { 1652 | "commander": "0.6.1", 1653 | "mkdirp": "0.3.0" 1654 | }, 1655 | "bin": { 1656 | "jade": "bin/jade" 1657 | } 1658 | }, 1659 | "node_modules/jade/node_modules/commander": { 1660 | "version": "0.6.1", 1661 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", 1662 | "integrity": "sha512-0fLycpl1UMTGX257hRsu/arL/cUbcvQM4zMKwvLvzXtfdezIV4yotPS2dYtknF+NmEfWSoCEF6+hj9XLm/6hEw==", 1663 | "dev": true, 1664 | "engines": { 1665 | "node": ">= 0.4.x" 1666 | } 1667 | }, 1668 | "node_modules/jade/node_modules/mkdirp": { 1669 | "version": "0.3.0", 1670 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", 1671 | "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", 1672 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 1673 | "dev": true, 1674 | "license": "MIT/X11", 1675 | "engines": { 1676 | "node": "*" 1677 | } 1678 | }, 1679 | "node_modules/jog": { 1680 | "version": "0.4.0", 1681 | "resolved": "https://registry.npmjs.org/jog/-/jog-0.4.0.tgz", 1682 | "integrity": "sha512-yhLpqkWesxFD7uI5X9Jzzu5gOlnpuzcURpVxzuLePLCBizhWlKrHzR+Rln2Ror/WiU+nteey8DFINisKeC64wA==", 1683 | "dev": true, 1684 | "dependencies": { 1685 | "commander": "0.5.2", 1686 | "debug": "*", 1687 | "ms": "0.1.0", 1688 | "redis": "0.7.1" 1689 | }, 1690 | "bin": { 1691 | "jog": "bin/jog" 1692 | }, 1693 | "engines": { 1694 | "node": "*" 1695 | } 1696 | }, 1697 | "node_modules/jog/node_modules/commander": { 1698 | "version": "0.5.2", 1699 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.5.2.tgz", 1700 | "integrity": "sha512-/IKo89++b1UhClEhWvKk00gKgw6iwvwD8TOPTqqN9AyvjgPCnf9OrjnDNY3dPDOj+K+OhN9SRjYQH0AfX0bROw==", 1701 | "dev": true, 1702 | "engines": { 1703 | "node": ">= 0.4.x" 1704 | } 1705 | }, 1706 | "node_modules/json-stringify-safe": { 1707 | "version": "5.0.1", 1708 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1709 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1710 | "dev": true, 1711 | "license": "ISC" 1712 | }, 1713 | "node_modules/kew": { 1714 | "version": "0.1.7", 1715 | "resolved": "https://registry.npmjs.org/kew/-/kew-0.1.7.tgz", 1716 | "integrity": "sha512-TQRJfHoVm4f2exuRqjcpURhzGcC4GEIPyiLquo4mBfz0JgsVg19VeyTmKp6RKSOIhHQ6F4SgEhsnUlBduGV9Yw==", 1717 | "dev": true 1718 | }, 1719 | "node_modules/keypress": { 1720 | "version": "0.1.0", 1721 | "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", 1722 | "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==", 1723 | "dev": true, 1724 | "license": "MIT" 1725 | }, 1726 | "node_modules/kind-of": { 1727 | "version": "3.2.2", 1728 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1729 | "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", 1730 | "dev": true, 1731 | "license": "MIT", 1732 | "dependencies": { 1733 | "is-buffer": "^1.1.5" 1734 | }, 1735 | "engines": { 1736 | "node": ">=0.10.0" 1737 | } 1738 | }, 1739 | "node_modules/lazy-cache": { 1740 | "version": "1.0.4", 1741 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 1742 | "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", 1743 | "dev": true, 1744 | "license": "MIT", 1745 | "engines": { 1746 | "node": ">=0.10.0" 1747 | } 1748 | }, 1749 | "node_modules/lcid": { 1750 | "version": "1.0.0", 1751 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 1752 | "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", 1753 | "dev": true, 1754 | "license": "MIT", 1755 | "dependencies": { 1756 | "invert-kv": "^1.0.0" 1757 | }, 1758 | "engines": { 1759 | "node": ">=0.10.0" 1760 | } 1761 | }, 1762 | "node_modules/levn": { 1763 | "version": "0.3.0", 1764 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1765 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 1766 | "dev": true, 1767 | "license": "MIT", 1768 | "dependencies": { 1769 | "prelude-ls": "~1.1.2", 1770 | "type-check": "~0.3.2" 1771 | }, 1772 | "engines": { 1773 | "node": ">= 0.8.0" 1774 | } 1775 | }, 1776 | "node_modules/localtunnel": { 1777 | "version": "0.1.3", 1778 | "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-0.1.3.tgz", 1779 | "integrity": "sha512-p8mc+u0mNymjTNcKCMcY+oyYP0PlcnN5LukHtZZ7lZVIOVXigsc9C2MJGoM5uVem9Rbk7WWkXyay2YeuCbe/0Q==", 1780 | "dev": true, 1781 | "dependencies": { 1782 | "after": "0.8.1", 1783 | "optimist": "0.3.4", 1784 | "request": "2.11.4" 1785 | }, 1786 | "bin": { 1787 | "lt": "bin/client" 1788 | } 1789 | }, 1790 | "node_modules/localtunnel/node_modules/optimist": { 1791 | "version": "0.3.4", 1792 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.4.tgz", 1793 | "integrity": "sha512-CM668OmXLjrLKlVPze/bc0BIOZ0qoM5gWwEVurkjXPv6cgkybJ2TSt86nmaud+niwPfWHLOcgbbcRtA5zJgOIQ==", 1794 | "dev": true, 1795 | "license": "MIT/X11", 1796 | "dependencies": { 1797 | "wordwrap": "~0.0.2" 1798 | }, 1799 | "engines": { 1800 | "node": "*" 1801 | } 1802 | }, 1803 | "node_modules/lodash": { 1804 | "version": "1.3.1", 1805 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.3.1.tgz", 1806 | "integrity": "sha512-F7AB8u+6d00CCgnbjWzq9fFLpzOMCgq6mPjOW4+8+dYbrnc0obRrC+IHctzfZ1KKTQxX0xo/punrlpOWcf4gpw==", 1807 | "dev": true, 1808 | "engines": [ 1809 | "node", 1810 | "rhino" 1811 | ], 1812 | "license": "MIT" 1813 | }, 1814 | "node_modules/longest": { 1815 | "version": "1.0.1", 1816 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 1817 | "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", 1818 | "dev": true, 1819 | "license": "MIT", 1820 | "engines": { 1821 | "node": ">=0.10.0" 1822 | } 1823 | }, 1824 | "node_modules/lru-cache": { 1825 | "version": "2.7.3", 1826 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 1827 | "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==", 1828 | "dev": true, 1829 | "license": "ISC" 1830 | }, 1831 | "node_modules/methods": { 1832 | "version": "0.1.0", 1833 | "resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz", 1834 | "integrity": "sha512-N4cn4CbDqu7Fp3AT4z3AsO19calgczhsmCGzXLCiUOrWg9sjb1B+yKFKOrnnPGKKvjyJBmw+k6b3adFN2LbuBw==", 1835 | "dev": true, 1836 | "license": "MIT" 1837 | }, 1838 | "node_modules/mime": { 1839 | "version": "1.2.11", 1840 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", 1841 | "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==", 1842 | "dev": true 1843 | }, 1844 | "node_modules/mini-html-parser": { 1845 | "version": "0.0.3", 1846 | "resolved": "https://registry.npmjs.org/mini-html-parser/-/mini-html-parser-0.0.3.tgz", 1847 | "integrity": "sha512-qFDnh3zny/LtK5VLmXIX3V+MgC/D9ZV+exiXWIeoo8aaSoVrvfgsek0VJRq24sMUMWCq0gxBo6X2bY4mMfamag==", 1848 | "dev": true, 1849 | "dependencies": { 1850 | "debug": "~0.7.4" 1851 | } 1852 | }, 1853 | "node_modules/minimatch": { 1854 | "version": "0.2.14", 1855 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 1856 | "integrity": "sha512-zZ+Jy8lVWlvqqeM8iZB7w7KmQkoJn8djM585z88rywrEbzoqawVa9FR5p2hwD+y74nfuKOjmNvi9gtWJNLqHvA==", 1857 | "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", 1858 | "dev": true, 1859 | "license": "MIT", 1860 | "dependencies": { 1861 | "lru-cache": "2", 1862 | "sigmund": "~1.0.0" 1863 | }, 1864 | "engines": { 1865 | "node": "*" 1866 | } 1867 | }, 1868 | "node_modules/minimist": { 1869 | "version": "0.0.10", 1870 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 1871 | "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", 1872 | "dev": true, 1873 | "license": "MIT" 1874 | }, 1875 | "node_modules/mkdirp": { 1876 | "version": "0.3.5", 1877 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", 1878 | "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", 1879 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 1880 | "dev": true, 1881 | "license": "MIT" 1882 | }, 1883 | "node_modules/mocha": { 1884 | "version": "1.17.1", 1885 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", 1886 | "integrity": "sha512-aBQCzWY7hhHwof3dJU1vLEy23C/kW3tKsoR/C7enwchqKsGJnDtARYfnobNZnKlZMrAlRtIjpv8o0uw+FFAUng==", 1887 | "deprecated": "Mocha v1.x is no longer supported.", 1888 | "dev": true, 1889 | "dependencies": { 1890 | "commander": "2.0.0", 1891 | "debug": "*", 1892 | "diff": "1.0.7", 1893 | "glob": "3.2.3", 1894 | "growl": "1.7.x", 1895 | "jade": "0.26.3", 1896 | "mkdirp": "0.3.5" 1897 | }, 1898 | "bin": { 1899 | "_mocha": "bin/_mocha", 1900 | "mocha": "bin/mocha" 1901 | }, 1902 | "engines": { 1903 | "node": ">= 0.4.x" 1904 | } 1905 | }, 1906 | "node_modules/mocha-cloud2": { 1907 | "version": "0.1.0", 1908 | "resolved": "https://registry.npmjs.org/mocha-cloud2/-/mocha-cloud2-0.1.0.tgz", 1909 | "integrity": "sha512-9GMXq1IAlpriEvhhWnwfTazQ94AXJ6nEHz46m+fDob0eRkMPbwfRk73Ql24QJ04aFD9sq+ZKPVBDLrAMBiPf2Q==", 1910 | "dev": true, 1911 | "dependencies": { 1912 | "batch": "0.5.0", 1913 | "debug": "0.7.3", 1914 | "wd": "0.2.2" 1915 | } 1916 | }, 1917 | "node_modules/mocha-cloud2/node_modules/debug": { 1918 | "version": "0.7.3", 1919 | "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.3.tgz", 1920 | "integrity": "sha512-kmMlLkXbeTeQlihhfXraOJMDImxDpFyo36vGq4LBepdq5+TwLwnupy1hI0ykK1A52WfDgmO4XJ0iYIiEkmSquA==", 1921 | "dev": true, 1922 | "engines": { 1923 | "node": "*" 1924 | } 1925 | }, 1926 | "node_modules/mocha-phantomjs": { 1927 | "version": "3.6.0", 1928 | "resolved": "https://registry.npmjs.org/mocha-phantomjs/-/mocha-phantomjs-3.6.0.tgz", 1929 | "integrity": "sha512-siI6m2uw3Xyjruz9eEP8JTVHOtnOxdmnEqXM0IrOt3Nbw4oPJw6u8Q6MG6hqnbH9fJ3i60F3bYlmSEbgwuNsQw==", 1930 | "dev": true, 1931 | "dependencies": { 1932 | "commander": "~2.0.0", 1933 | "mocha": "~1.20.1" 1934 | }, 1935 | "bin": { 1936 | "mocha-phantomjs": "bin/mocha-phantomjs" 1937 | }, 1938 | "peerDependencies": { 1939 | "phantomjs": "1.9.1 - 1.9.7-15" 1940 | } 1941 | }, 1942 | "node_modules/mocha-phantomjs/node_modules/commander": { 1943 | "version": "2.0.0", 1944 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", 1945 | "integrity": "sha512-qebjpyeaA/nJ4w3EO2cV2++/zEkccPnjWogzA2rff+Lk8ILI75vULeTmyd4wPxWdKwtP3J+G39IXVZadh0UHyw==", 1946 | "dev": true, 1947 | "engines": { 1948 | "node": ">= 0.6.x" 1949 | } 1950 | }, 1951 | "node_modules/mocha-phantomjs/node_modules/glob": { 1952 | "version": "3.2.3", 1953 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", 1954 | "integrity": "sha512-WPaLsMHD1lYEqAmIQI6VOJSPwuBdGShDWnj1yUo0vQqEO809R8W3LM9OVU13CnnDhyv/EiNwOtxEW74SmrzS6w==", 1955 | "deprecated": "Glob versions prior to v9 are no longer supported", 1956 | "dev": true, 1957 | "license": "BSD", 1958 | "dependencies": { 1959 | "graceful-fs": "~2.0.0", 1960 | "inherits": "2", 1961 | "minimatch": "~0.2.11" 1962 | }, 1963 | "engines": { 1964 | "node": "*" 1965 | } 1966 | }, 1967 | "node_modules/mocha-phantomjs/node_modules/mocha": { 1968 | "version": "1.20.1", 1969 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.20.1.tgz", 1970 | "integrity": "sha512-25Nq3BuIYCy80uEix+hBlZcr/gnLzpcYqfsaPAxZm2qbMFmed8I3nP8N05KagK4BTkGYUvsRJ47istvRqFO8fw==", 1971 | "deprecated": "Mocha v1.x is no longer supported.", 1972 | "dev": true, 1973 | "dependencies": { 1974 | "commander": "2.0.0", 1975 | "debug": "*", 1976 | "diff": "1.0.7", 1977 | "glob": "3.2.3", 1978 | "growl": "1.7.x", 1979 | "jade": "0.26.3", 1980 | "mkdirp": "0.3.5" 1981 | }, 1982 | "bin": { 1983 | "_mocha": "bin/_mocha", 1984 | "mocha": "bin/mocha" 1985 | }, 1986 | "engines": { 1987 | "node": ">= 0.4.x" 1988 | } 1989 | }, 1990 | "node_modules/mocha/node_modules/commander": { 1991 | "version": "2.0.0", 1992 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", 1993 | "integrity": "sha512-qebjpyeaA/nJ4w3EO2cV2++/zEkccPnjWogzA2rff+Lk8ILI75vULeTmyd4wPxWdKwtP3J+G39IXVZadh0UHyw==", 1994 | "dev": true, 1995 | "engines": { 1996 | "node": ">= 0.6.x" 1997 | } 1998 | }, 1999 | "node_modules/mocha/node_modules/glob": { 2000 | "version": "3.2.3", 2001 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", 2002 | "integrity": "sha512-WPaLsMHD1lYEqAmIQI6VOJSPwuBdGShDWnj1yUo0vQqEO809R8W3LM9OVU13CnnDhyv/EiNwOtxEW74SmrzS6w==", 2003 | "deprecated": "Glob versions prior to v9 are no longer supported", 2004 | "dev": true, 2005 | "license": "BSD", 2006 | "dependencies": { 2007 | "graceful-fs": "~2.0.0", 2008 | "inherits": "2", 2009 | "minimatch": "~0.2.11" 2010 | }, 2011 | "engines": { 2012 | "node": "*" 2013 | } 2014 | }, 2015 | "node_modules/ms": { 2016 | "version": "0.1.0", 2017 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", 2018 | "integrity": "sha512-7uwYj3Xip4rOFpe5dDy+C25Ad0nAXkT4yAVMSpuh1UYR2Z7tAswSh4wb/HghRa533wofFUsvg54OQ90Mu1dCJg==", 2019 | "dev": true, 2020 | "engines": { 2021 | "node": "*" 2022 | } 2023 | }, 2024 | "node_modules/multiparty": { 2025 | "version": "2.2.0", 2026 | "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz", 2027 | "integrity": "sha512-fiFMI4tSze1TsrWFZNABRwy7kF/VycEWz4t0UFESOoP5IdJh29AUFmbirWXv/Ih/rNw62OO2YaQpQEiw1BFQpQ==", 2028 | "dev": true, 2029 | "license": "MIT", 2030 | "dependencies": { 2031 | "readable-stream": "~1.1.9", 2032 | "stream-counter": "~0.2.0" 2033 | }, 2034 | "engines": { 2035 | "node": ">=0.8.0" 2036 | } 2037 | }, 2038 | "node_modules/multiparty/node_modules/readable-stream": { 2039 | "version": "1.1.14", 2040 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2041 | "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", 2042 | "dev": true, 2043 | "license": "MIT", 2044 | "dependencies": { 2045 | "core-util-is": "~1.0.0", 2046 | "inherits": "~2.0.1", 2047 | "isarray": "0.0.1", 2048 | "string_decoder": "~0.10.x" 2049 | } 2050 | }, 2051 | "node_modules/ncp": { 2052 | "version": "0.4.2", 2053 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", 2054 | "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==", 2055 | "dev": true, 2056 | "license": "MIT", 2057 | "bin": { 2058 | "ncp": "bin/ncp" 2059 | } 2060 | }, 2061 | "node_modules/negotiator": { 2062 | "version": "0.3.0", 2063 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz", 2064 | "integrity": "sha512-q9wF64uB31BDZQ44DWf+8gE7y8xSpBdREAsJfnBO2WX9ecsutfUO6S9uWEdixlDLOlWaqnlnFXXwZxUUmyLfgg==", 2065 | "dev": true, 2066 | "license": "MIT", 2067 | "engines": { 2068 | "node": "*" 2069 | } 2070 | }, 2071 | "node_modules/netmask": { 2072 | "version": "1.0.6", 2073 | "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", 2074 | "integrity": "sha512-3DWDqAtIiPSkBXZyYEjwebfK56nrlQfRGt642fu8RPaL+ePu750+HCMHxjJCG3iEHq/0aeMvX6KIzlv7nuhfrA==", 2075 | "dev": true, 2076 | "license": "MIT", 2077 | "engines": { 2078 | "node": ">= 0.4.0" 2079 | } 2080 | }, 2081 | "node_modules/netrc": { 2082 | "version": "0.1.4", 2083 | "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", 2084 | "integrity": "sha512-ye8AIYWQcP9MvoM1i0Z2jV0qed31Z8EWXYnyGNkiUAd+Fo8J+7uy90xTV8g/oAbhtjkY7iZbNTizQaXdKUuwpQ==", 2085 | "dev": true, 2086 | "license": "MIT" 2087 | }, 2088 | "node_modules/node-uuid": { 2089 | "version": "1.4.8", 2090 | "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", 2091 | "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==", 2092 | "deprecated": "Use uuid module instead", 2093 | "dev": true, 2094 | "bin": { 2095 | "uuid": "bin/uuid" 2096 | } 2097 | }, 2098 | "node_modules/nopt": { 2099 | "version": "2.2.1", 2100 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz", 2101 | "integrity": "sha512-gIOTA/uJuhPwFqp+spY7VQ1satbnGlD+iQVZxI18K6hs8Evq4sX81Ml7BB5byP/LsbR2yBVtmvdEmhi7evJ6Aw==", 2102 | "dev": true, 2103 | "license": "MIT", 2104 | "dependencies": { 2105 | "abbrev": "1" 2106 | }, 2107 | "bin": { 2108 | "nopt": "bin/nopt.js" 2109 | } 2110 | }, 2111 | "node_modules/npmconf": { 2112 | "version": "0.0.24", 2113 | "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-0.0.24.tgz", 2114 | "integrity": "sha512-LX0bX+RmuBuEITg26i7+dx+d9cfYU+giB7eOiSkT5IwvuAzzIx02u4GXwSC3jsQMDMb/kXC57R8tybRSVYfbWw==", 2115 | "deprecated": "this package has been reintegrated into npm and is now out of date with respect to npm", 2116 | "dev": true, 2117 | "license": "BSD", 2118 | "dependencies": { 2119 | "config-chain": "~1.1.1", 2120 | "inherits": "~1.0.0", 2121 | "ini": "~1.1.0", 2122 | "mkdirp": "~0.3.3", 2123 | "nopt": "2", 2124 | "once": "~1.1.1", 2125 | "osenv": "0.0.3", 2126 | "semver": "~1.1.0" 2127 | } 2128 | }, 2129 | "node_modules/npmconf/node_modules/inherits": { 2130 | "version": "1.0.2", 2131 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 2132 | "integrity": "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA==", 2133 | "dev": true 2134 | }, 2135 | "node_modules/nth-check": { 2136 | "version": "1.0.2", 2137 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 2138 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 2139 | "dev": true, 2140 | "license": "BSD-2-Clause", 2141 | "dependencies": { 2142 | "boolbase": "~1.0.0" 2143 | } 2144 | }, 2145 | "node_modules/oauth-sign": { 2146 | "version": "0.3.0", 2147 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", 2148 | "integrity": "sha512-Tr31Sh5FnK9YKm7xTUPyDMsNOvMqkVDND0zvK/Wgj7/H9q8mpye0qG2nVzrnsvLhcsX5DtqXD0la0ks6rkPCGQ==", 2149 | "dev": true, 2150 | "engines": { 2151 | "node": "*" 2152 | } 2153 | }, 2154 | "node_modules/once": { 2155 | "version": "1.1.1", 2156 | "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz", 2157 | "integrity": "sha512-frdJr++QKEg4+JylTX+NNLgSoO6M2pDNYOOXe4WGIYKKBADBI9nU3oa06y4D4FpAJ3obAsjExeBOnscYJB9Blw==", 2158 | "dev": true, 2159 | "license": "BSD" 2160 | }, 2161 | "node_modules/open": { 2162 | "version": "0.0.4", 2163 | "resolved": "https://registry.npmjs.org/open/-/open-0.0.4.tgz", 2164 | "integrity": "sha512-89TW6JswxDIlkXZ6gBscNCE7x+A3oN/J0OqGhiLNhFnWiphTVnXOMsi5ggo72DqpB5PzinTu9ZU508z7Af2TnA==", 2165 | "dev": true, 2166 | "license": "MIT", 2167 | "engines": { 2168 | "node": ">= 0.6.0" 2169 | } 2170 | }, 2171 | "node_modules/optimist": { 2172 | "version": "0.6.1", 2173 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 2174 | "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", 2175 | "dev": true, 2176 | "license": "MIT/X11", 2177 | "dependencies": { 2178 | "minimist": "~0.0.1", 2179 | "wordwrap": "~0.0.2" 2180 | } 2181 | }, 2182 | "node_modules/optionator": { 2183 | "version": "0.8.3", 2184 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2185 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2186 | "dev": true, 2187 | "license": "MIT", 2188 | "dependencies": { 2189 | "deep-is": "~0.1.3", 2190 | "fast-levenshtein": "~2.0.6", 2191 | "levn": "~0.3.0", 2192 | "prelude-ls": "~1.1.2", 2193 | "type-check": "~0.3.2", 2194 | "word-wrap": "~1.2.3" 2195 | }, 2196 | "engines": { 2197 | "node": ">= 0.8.0" 2198 | } 2199 | }, 2200 | "node_modules/os-locale": { 2201 | "version": "1.4.0", 2202 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 2203 | "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", 2204 | "dev": true, 2205 | "license": "MIT", 2206 | "dependencies": { 2207 | "lcid": "^1.0.0" 2208 | }, 2209 | "engines": { 2210 | "node": ">=0.10.0" 2211 | } 2212 | }, 2213 | "node_modules/osenv": { 2214 | "version": "0.0.3", 2215 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz", 2216 | "integrity": "sha512-VBk1bfdaO4gh3OWO8LBuDY2alp0buL8YzQ6t13xyc8PQPrnUg5AgQvINQx3UkS4dom8UGCL597q4Y2+M4TPvmw==", 2217 | "deprecated": "This package is no longer supported.", 2218 | "dev": true, 2219 | "license": "BSD" 2220 | }, 2221 | "node_modules/pac-proxy-agent": { 2222 | "version": "0.2.0", 2223 | "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-0.2.0.tgz", 2224 | "integrity": "sha512-n7a4CFNSiKfr0Kr2XbJxUEQOab5JMJk3si0SNEjKdKAorg15dW4PZWpKZ+J5rr0S91TbuyLnl37vRS0zU7K4cg==", 2225 | "dev": true, 2226 | "license": "MIT", 2227 | "dependencies": { 2228 | "agent-base": "~1.0.1", 2229 | "debug": "2", 2230 | "extend": "~1.2.1", 2231 | "get-uri": "~0.1.0", 2232 | "pac-resolver": "~1.2.1", 2233 | "proxy-agent": "1", 2234 | "stream-to-array": "~1.0.0" 2235 | } 2236 | }, 2237 | "node_modules/pac-proxy-agent/node_modules/debug": { 2238 | "version": "2.6.9", 2239 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2240 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2241 | "dev": true, 2242 | "license": "MIT", 2243 | "dependencies": { 2244 | "ms": "2.0.0" 2245 | } 2246 | }, 2247 | "node_modules/pac-proxy-agent/node_modules/extend": { 2248 | "version": "1.2.1", 2249 | "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", 2250 | "integrity": "sha512-2/JwIYRpMBDSjbQjUUppNSrmc719crhFaWIdT+TRSVA8gE+6HEobQWqJ6VkPt/H8twS7h/0WWs7veh8wmp98Ng==", 2251 | "dev": true 2252 | }, 2253 | "node_modules/pac-proxy-agent/node_modules/ms": { 2254 | "version": "2.0.0", 2255 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2256 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 2257 | "dev": true, 2258 | "license": "MIT" 2259 | }, 2260 | "node_modules/pac-resolver": { 2261 | "version": "1.2.6", 2262 | "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-1.2.6.tgz", 2263 | "integrity": "sha512-hgYjw6snhgn68Rdb2Sgrd/rUKMkZ9EpXiA7G9Gqr9BsC6Bb+l1tAZ11WoYfNYzqamdkXU4m3VOb29H4VHOinyA==", 2264 | "dev": true, 2265 | "license": "MIT", 2266 | "dependencies": { 2267 | "co": "~3.0.6", 2268 | "degenerator": "~1.0.0", 2269 | "netmask": "~1.0.4", 2270 | "regenerator": "~0.8.13", 2271 | "thunkify": "~2.1.1" 2272 | } 2273 | }, 2274 | "node_modules/path-is-absolute": { 2275 | "version": "1.0.1", 2276 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2277 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2278 | "dev": true, 2279 | "license": "MIT", 2280 | "engines": { 2281 | "node": ">=0.10.0" 2282 | } 2283 | }, 2284 | "node_modules/pause": { 2285 | "version": "0.0.1", 2286 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 2287 | "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==", 2288 | "dev": true 2289 | }, 2290 | "node_modules/phantomjs": { 2291 | "version": "1.9.7-15", 2292 | "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.7-15.tgz", 2293 | "integrity": "sha512-s4PSN1L0iVwgv9ZkrSKcfojyPAtwGWhXxjn2p1P/ljuw3cx+FW3hKP00x247mIYbKeKSMylOd4euDQOMpUIAsg==", 2294 | "dev": true, 2295 | "hasInstallScript": true, 2296 | "dependencies": { 2297 | "adm-zip": "0.2.1", 2298 | "kew": "~0.1.7", 2299 | "mkdirp": "0.3.5", 2300 | "ncp": "0.4.2", 2301 | "npmconf": "0.0.24", 2302 | "progress": "^1.1.5", 2303 | "request": "2.36.0", 2304 | "request-progress": "^0.3.1", 2305 | "rimraf": "~2.2.2", 2306 | "which": "~1.0.5" 2307 | }, 2308 | "bin": { 2309 | "phantomjs": "bin/phantomjs" 2310 | } 2311 | }, 2312 | "node_modules/phantomjs/node_modules/request": { 2313 | "version": "2.36.0", 2314 | "resolved": "https://registry.npmjs.org/request/-/request-2.36.0.tgz", 2315 | "integrity": "sha512-iVii/ruMH9i8k++HYYPqi+nb1Pbgz7UOTGbFEiyhl7uDN8PhyFV2lGJa8XLIUS5tyt5scERcLkwqvCNF84Vv2Q==", 2316 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 2317 | "dev": true, 2318 | "engines": [ 2319 | "node >= 0.8.0" 2320 | ], 2321 | "license": "Apache, Version 2.0", 2322 | "dependencies": { 2323 | "forever-agent": "~0.5.0", 2324 | "json-stringify-safe": "~5.0.0", 2325 | "mime": "~1.2.9", 2326 | "node-uuid": "~1.4.0", 2327 | "qs": "~0.6.0" 2328 | }, 2329 | "optionalDependencies": { 2330 | "aws-sign2": "~0.5.0", 2331 | "form-data": "~0.1.0", 2332 | "hawk": "~1.0.0", 2333 | "http-signature": "~0.10.0", 2334 | "oauth-sign": "~0.3.0", 2335 | "tough-cookie": ">=0.12.0", 2336 | "tunnel-agent": "~0.4.0" 2337 | } 2338 | }, 2339 | "node_modules/prelude-ls": { 2340 | "version": "1.1.2", 2341 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2342 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 2343 | "dev": true, 2344 | "engines": { 2345 | "node": ">= 0.8.0" 2346 | } 2347 | }, 2348 | "node_modules/private": { 2349 | "version": "0.1.8", 2350 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2351 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 2352 | "dev": true, 2353 | "license": "MIT", 2354 | "engines": { 2355 | "node": ">= 0.6" 2356 | } 2357 | }, 2358 | "node_modules/process-nextick-args": { 2359 | "version": "2.0.1", 2360 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2361 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2362 | "dev": true, 2363 | "license": "MIT" 2364 | }, 2365 | "node_modules/progress": { 2366 | "version": "1.1.8", 2367 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 2368 | "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", 2369 | "dev": true, 2370 | "engines": { 2371 | "node": ">=0.4.0" 2372 | } 2373 | }, 2374 | "node_modules/proto-list": { 2375 | "version": "1.2.4", 2376 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 2377 | "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", 2378 | "dev": true, 2379 | "license": "ISC" 2380 | }, 2381 | "node_modules/proxy-agent": { 2382 | "version": "1.1.1", 2383 | "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-1.1.1.tgz", 2384 | "integrity": "sha512-25H5ZU12cl82fjFJmlq8iYy9gHjw4jdNmJQBbdztwcpPl4URsepnlTZUqAXKwrxwtPXg4z6NbrIiB7e3arxVUw==", 2385 | "dev": true, 2386 | "license": "MIT", 2387 | "dependencies": { 2388 | "http-proxy-agent": "0", 2389 | "https-proxy-agent": "0", 2390 | "lru-cache": "~2.5.0", 2391 | "pac-proxy-agent": "0", 2392 | "socks-proxy-agent": "1" 2393 | } 2394 | }, 2395 | "node_modules/proxy-agent/node_modules/lru-cache": { 2396 | "version": "2.5.2", 2397 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz", 2398 | "integrity": "sha512-wyqfj+623mgqv+bpjTdivSoC/LtY9oOrmKz2Cke0NZcgYW9Kce/qWjd9e5PDYf8wuiKfVeo8VnyOSSyeRiUsLw==", 2399 | "dev": true, 2400 | "license": "MIT" 2401 | }, 2402 | "node_modules/q": { 2403 | "version": "0.9.7", 2404 | "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", 2405 | "integrity": "sha512-ijt0LhxWClXBtc1RCt8H0WhlZLAdVX26nWbpsJy+Hblmp81d2F/pFsvlrJhJDDruFHM+ECtxP0H0HzGSrARkwg==", 2406 | "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", 2407 | "dev": true, 2408 | "license": "MIT", 2409 | "engines": { 2410 | "node": ">=0.6.0", 2411 | "teleport": ">=0.2.0" 2412 | } 2413 | }, 2414 | "node_modules/qs": { 2415 | "version": "0.6.5", 2416 | "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz", 2417 | "integrity": "sha512-n7wA/f30O3SsOw2BVkGUDzjWMw7kXvQJWKtDdgfq5HJvDoad+Jbc6osN1AQ0Iain5plo9e7Cs5fE+xR+DVkPTw==", 2418 | "dev": true, 2419 | "engines": { 2420 | "node": "*" 2421 | } 2422 | }, 2423 | "node_modules/range-parser": { 2424 | "version": "0.0.4", 2425 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", 2426 | "integrity": "sha512-okJVEq9DbZyg+5lD8pr6ooQmeA0uu8DYIyAU7VK1WUUK7hctI1yw2ZHhKiKjB6RXaDrYRmTR4SsIHkyiQpaLMA==", 2427 | "dev": true, 2428 | "engines": { 2429 | "node": "*" 2430 | } 2431 | }, 2432 | "node_modules/raw-body": { 2433 | "version": "1.1.2", 2434 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz", 2435 | "integrity": "sha512-9Vyxam2+QrtmNIc3mFrwazAXOeQdxgFvS3vvkvH02R5YbdsaSqL4N9M93s0znkh0q4cGBk8CbrqOSGkz3BUeDg==", 2436 | "dev": true, 2437 | "license": "MIT", 2438 | "dependencies": { 2439 | "bytes": "~0.2.1" 2440 | }, 2441 | "engines": { 2442 | "node": ">= 0.8.0" 2443 | } 2444 | }, 2445 | "node_modules/readable-stream": { 2446 | "version": "1.0.34", 2447 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2448 | "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", 2449 | "dev": true, 2450 | "license": "MIT", 2451 | "dependencies": { 2452 | "core-util-is": "~1.0.0", 2453 | "inherits": "~2.0.1", 2454 | "isarray": "0.0.1", 2455 | "string_decoder": "~0.10.x" 2456 | } 2457 | }, 2458 | "node_modules/recast": { 2459 | "version": "0.10.33", 2460 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", 2461 | "integrity": "sha512-RxAVgvgWGzfFYsdc3PB6TM4/cq8HMgBH8PC9r+SkO7j1MeHZvIMxLSVlUhin3sv9wbAy8CMAPXSGSGkWPovyKQ==", 2462 | "dev": true, 2463 | "license": "MIT", 2464 | "dependencies": { 2465 | "ast-types": "0.8.12", 2466 | "esprima-fb": "~15001.1001.0-dev-harmony-fb", 2467 | "private": "~0.1.5", 2468 | "source-map": "~0.5.0" 2469 | }, 2470 | "engines": { 2471 | "node": ">= 0.8" 2472 | } 2473 | }, 2474 | "node_modules/recast/node_modules/ast-types": { 2475 | "version": "0.8.12", 2476 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", 2477 | "integrity": "sha512-rWhsoD0aHKpx+aKIP0Sf92bai1HC5iZcB1n/HCnkIMR8Bhx0gYRQySo062Y65ND4oRgcuxpLcPrcco09I1shpg==", 2478 | "dev": true, 2479 | "license": "MIT", 2480 | "engines": { 2481 | "node": ">= 0.8" 2482 | } 2483 | }, 2484 | "node_modules/recast/node_modules/source-map": { 2485 | "version": "0.5.7", 2486 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2487 | "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", 2488 | "dev": true, 2489 | "license": "BSD-3-Clause", 2490 | "engines": { 2491 | "node": ">=0.10.0" 2492 | } 2493 | }, 2494 | "node_modules/redis": { 2495 | "version": "0.7.1", 2496 | "resolved": "https://registry.npmjs.org/redis/-/redis-0.7.1.tgz", 2497 | "integrity": "sha512-kG/XY5DBOBo7NngF4+Ylj5FSbcjxGPHayDfjaGPAXTzay0f4vo+zFd4YPkL+2ANAkxQJYDISfoDa/qjgnYphCw==", 2498 | "dev": true, 2499 | "engines": { 2500 | "node": "*" 2501 | } 2502 | }, 2503 | "node_modules/reduce-component": { 2504 | "version": "1.0.1", 2505 | "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz", 2506 | "integrity": "sha512-y0wyCcdQul3hI3xHfIs0vg/jSbboQc/YTOAqaxjFG7At+XSexduuOqBVL9SmOLSwa/ldkbzVzdwuk9s2EKTAZg==", 2507 | "dev": true, 2508 | "license": "Apache, Version 2.0" 2509 | }, 2510 | "node_modules/regenerator": { 2511 | "version": "0.8.46", 2512 | "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.46.tgz", 2513 | "integrity": "sha512-jFhAPsOnJ/UIZCG1+iISKiczjnLWaQ4RatPkg5BZIcgz0m3C+txY28U0H7ij+fLSADmY+kHj9HZff6CLq9hrVA==", 2514 | "dev": true, 2515 | "license": "BSD", 2516 | "dependencies": { 2517 | "commoner": "~0.10.3", 2518 | "defs": "~1.1.0", 2519 | "esprima-fb": "~15001.1001.0-dev-harmony-fb", 2520 | "private": "~0.1.5", 2521 | "recast": "0.10.33", 2522 | "regenerator-runtime": "~0.9.5", 2523 | "through": "~2.3.8" 2524 | }, 2525 | "bin": { 2526 | "regenerator": "bin/regenerator" 2527 | }, 2528 | "engines": { 2529 | "node": ">= 0.6" 2530 | } 2531 | }, 2532 | "node_modules/regenerator-runtime": { 2533 | "version": "0.9.6", 2534 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", 2535 | "integrity": "sha512-D0Y/JJ4VhusyMOd/o25a3jdUqN/bC85EFsaoL9Oqmy/O4efCh+xhp7yj2EEOsj974qvMkcW8AwUzJ1jB/MbxCw==", 2536 | "dev": true, 2537 | "license": "MIT" 2538 | }, 2539 | "node_modules/repeat-string": { 2540 | "version": "1.6.1", 2541 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2542 | "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", 2543 | "dev": true, 2544 | "license": "MIT", 2545 | "engines": { 2546 | "node": ">=0.10" 2547 | } 2548 | }, 2549 | "node_modules/request": { 2550 | "version": "2.11.4", 2551 | "resolved": "https://registry.npmjs.org/request/-/request-2.11.4.tgz", 2552 | "integrity": "sha512-lL+DgCpVn4b8scEhyGGel3kAipjMyHHfIEcP1SCbdJq9jCuaJLSBELJ7pel5RhK3oXl/xTI9HecR4NnHSV+Hrg==", 2553 | "bundleDependencies": [ 2554 | "form-data", 2555 | "mime" 2556 | ], 2557 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 2558 | "dev": true, 2559 | "engines": [ 2560 | "node >= 0.3.6" 2561 | ], 2562 | "dependencies": { 2563 | "form-data": "~0.0.3", 2564 | "mime": "~1.2.7" 2565 | } 2566 | }, 2567 | "node_modules/request-progress": { 2568 | "version": "0.3.1", 2569 | "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz", 2570 | "integrity": "sha512-+IAgzH8yWAEgHjOOQzYEqRm0BpNlE6xFgsziGMiTxxMhrkBcCOe9bNWH7bDR+XtHToUMgCZlDgLqjk6cAP/+Ig==", 2571 | "dev": true, 2572 | "license": "MIT", 2573 | "dependencies": { 2574 | "throttleit": "~0.0.2" 2575 | } 2576 | }, 2577 | "node_modules/request/node_modules/form-data": { 2578 | "version": "0.0.3", 2579 | "dev": true, 2580 | "inBundle": true, 2581 | "dependencies": { 2582 | "async": "~0.1.9", 2583 | "combined-stream": "0.0.3", 2584 | "mime": "~1.2.2" 2585 | }, 2586 | "engines": { 2587 | "node": "*" 2588 | } 2589 | }, 2590 | "node_modules/request/node_modules/form-data/node_modules/async": { 2591 | "version": "0.1.9", 2592 | "dev": true, 2593 | "inBundle": true, 2594 | "engines": { 2595 | "node": "*" 2596 | } 2597 | }, 2598 | "node_modules/request/node_modules/form-data/node_modules/combined-stream": { 2599 | "version": "0.0.3", 2600 | "dev": true, 2601 | "inBundle": true, 2602 | "dependencies": { 2603 | "delayed-stream": "0.0.5" 2604 | }, 2605 | "engines": { 2606 | "node": "*" 2607 | } 2608 | }, 2609 | "node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream": { 2610 | "version": "0.0.5", 2611 | "dev": true, 2612 | "inBundle": true, 2613 | "engines": { 2614 | "node": ">=0.4.0" 2615 | } 2616 | }, 2617 | "node_modules/request/node_modules/mime": { 2618 | "version": "1.2.7", 2619 | "dev": true, 2620 | "inBundle": true, 2621 | "engines": { 2622 | "node": "*" 2623 | } 2624 | }, 2625 | "node_modules/right-align": { 2626 | "version": "0.1.3", 2627 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 2628 | "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", 2629 | "dev": true, 2630 | "license": "MIT", 2631 | "dependencies": { 2632 | "align-text": "^0.1.1" 2633 | }, 2634 | "engines": { 2635 | "node": ">=0.10.0" 2636 | } 2637 | }, 2638 | "node_modules/rimraf": { 2639 | "version": "2.2.8", 2640 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", 2641 | "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", 2642 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 2643 | "dev": true, 2644 | "license": "MIT", 2645 | "bin": { 2646 | "rimraf": "bin.js" 2647 | } 2648 | }, 2649 | "node_modules/safe-buffer": { 2650 | "version": "5.1.2", 2651 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2652 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2653 | "dev": true, 2654 | "license": "MIT" 2655 | }, 2656 | "node_modules/safer-buffer": { 2657 | "version": "2.1.2", 2658 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2659 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2660 | "dev": true, 2661 | "license": "MIT" 2662 | }, 2663 | "node_modules/semver": { 2664 | "version": "1.1.4", 2665 | "resolved": "https://registry.npmjs.org/semver/-/semver-1.1.4.tgz", 2666 | "integrity": "sha512-9causpLEkYDrfTz7cprleLz9dnlb0oKsKRHl33K92wJmXLhVc2dGlrQGJT/sjtLOAyuoQZl+ClI77+lnvzPSKg==", 2667 | "dev": true, 2668 | "license": "MIT", 2669 | "bin": { 2670 | "semver": "bin/semver" 2671 | } 2672 | }, 2673 | "node_modules/send": { 2674 | "version": "0.1.4", 2675 | "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", 2676 | "integrity": "sha512-NJnIaB29/EcNqkNneUAm16oEVnzM2LeNBc/hmgKuExv2k9pCZQEw8SHJeCdjqesHJTyWAr7x5HjeOmRFS4BoFw==", 2677 | "dev": true, 2678 | "dependencies": { 2679 | "debug": "*", 2680 | "fresh": "0.2.0", 2681 | "mime": "~1.2.9", 2682 | "range-parser": "0.0.4" 2683 | } 2684 | }, 2685 | "node_modules/sigmund": { 2686 | "version": "1.0.1", 2687 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2688 | "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", 2689 | "dev": true, 2690 | "license": "ISC" 2691 | }, 2692 | "node_modules/simple-fmt": { 2693 | "version": "0.1.0", 2694 | "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", 2695 | "integrity": "sha512-9a3zTDDh9LXbTR37qBhACWIQ/mP/ry5xtmbE98BJM8GR02sanCkfMzp7AdCTqYhkBZggK/w7hJtc8Pb9nmo16A==", 2696 | "dev": true, 2697 | "license": "MIT" 2698 | }, 2699 | "node_modules/simple-is": { 2700 | "version": "0.2.0", 2701 | "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", 2702 | "integrity": "sha512-GJXhv3r5vdj5tGWO+rcrWgjU2azLB+fb7Ehh3SmZpXE0o4KrrFLti0w4mdDCbR29X/z0Ls20ApjZitlpAXhAeg==", 2703 | "dev": true, 2704 | "license": "MIT" 2705 | }, 2706 | "node_modules/smart-buffer": { 2707 | "version": "1.1.15", 2708 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", 2709 | "integrity": "sha512-1+8bxygjTsNfvQe0/0pNBesTOlSHtOeG6b6LYbvsZCCHDKYZ40zcQo6YTnZBWrBSLWOCbrHljLdEmGMYebu7aQ==", 2710 | "dev": true, 2711 | "license": "MIT", 2712 | "engines": { 2713 | "node": ">= 0.10.15", 2714 | "npm": ">= 1.3.5" 2715 | } 2716 | }, 2717 | "node_modules/sntp": { 2718 | "version": "0.2.4", 2719 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", 2720 | "integrity": "sha512-bDLrKa/ywz65gCl+LmOiIhteP1bhEsAAzhfMedPoiHP3dyYnAevlaJshdqb9Yu0sRifyP/fRqSt8t+5qGIWlGQ==", 2721 | "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 2722 | "dev": true, 2723 | "dependencies": { 2724 | "hoek": "0.9.x" 2725 | }, 2726 | "engines": { 2727 | "node": ">=0.8.0" 2728 | } 2729 | }, 2730 | "node_modules/socks": { 2731 | "version": "1.1.10", 2732 | "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", 2733 | "integrity": "sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==", 2734 | "deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0", 2735 | "dev": true, 2736 | "license": "MIT", 2737 | "dependencies": { 2738 | "ip": "^1.1.4", 2739 | "smart-buffer": "^1.0.13" 2740 | }, 2741 | "engines": { 2742 | "node": ">= 0.10.0", 2743 | "npm": ">= 1.3.5" 2744 | } 2745 | }, 2746 | "node_modules/socks-proxy-agent": { 2747 | "version": "1.0.2", 2748 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-1.0.2.tgz", 2749 | "integrity": "sha512-F8xR1C4uplta4XIwHvvpIxhLO8oCWLuC48hSgFpMqps45WqtOZQ4JadJ5YGo0eGMvIp94qV3bX3Tqi2iHGlNvw==", 2750 | "dev": true, 2751 | "license": "MIT", 2752 | "dependencies": { 2753 | "agent-base": "~1.0.1", 2754 | "extend": "~1.2.1", 2755 | "socks": "~1.1.5" 2756 | } 2757 | }, 2758 | "node_modules/socks-proxy-agent/node_modules/extend": { 2759 | "version": "1.2.1", 2760 | "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", 2761 | "integrity": "sha512-2/JwIYRpMBDSjbQjUUppNSrmc719crhFaWIdT+TRSVA8gE+6HEobQWqJ6VkPt/H8twS7h/0WWs7veh8wmp98Ng==", 2762 | "dev": true 2763 | }, 2764 | "node_modules/source-map": { 2765 | "version": "0.6.1", 2766 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2767 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2768 | "dev": true, 2769 | "license": "BSD-3-Clause", 2770 | "optional": true, 2771 | "engines": { 2772 | "node": ">=0.10.0" 2773 | } 2774 | }, 2775 | "node_modules/stable": { 2776 | "version": "0.1.8", 2777 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", 2778 | "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", 2779 | "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", 2780 | "dev": true, 2781 | "license": "MIT" 2782 | }, 2783 | "node_modules/stream-counter": { 2784 | "version": "0.2.0", 2785 | "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", 2786 | "integrity": "sha512-GjA2zKc2iXUUKRcOxXQmhEx0Ev3XHJ6c8yWGqhQjWwhGrqNwSsvq9YlRLgoGtZ5Kx2Ln94IedaqJ5GUG6aBbxA==", 2787 | "dev": true, 2788 | "license": "BSD", 2789 | "dependencies": { 2790 | "readable-stream": "~1.1.8" 2791 | }, 2792 | "engines": { 2793 | "node": ">=0.8.0" 2794 | } 2795 | }, 2796 | "node_modules/stream-counter/node_modules/readable-stream": { 2797 | "version": "1.1.14", 2798 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2799 | "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", 2800 | "dev": true, 2801 | "license": "MIT", 2802 | "dependencies": { 2803 | "core-util-is": "~1.0.0", 2804 | "inherits": "~2.0.1", 2805 | "isarray": "0.0.1", 2806 | "string_decoder": "~0.10.x" 2807 | } 2808 | }, 2809 | "node_modules/stream-to-array": { 2810 | "version": "1.0.0", 2811 | "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-1.0.0.tgz", 2812 | "integrity": "sha512-Z+ny0tylkXcRS4Jq49BNcKVmt0MrF3E/I500a18zckGt0ZMrOh1ILlbUz+FSjJePYeVbNUBCdvjfDDol27Ld1g==", 2813 | "dev": true, 2814 | "license": "MIT", 2815 | "engines": { 2816 | "node": ">= 0.10.0" 2817 | } 2818 | }, 2819 | "node_modules/string_decoder": { 2820 | "version": "0.10.31", 2821 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2822 | "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 2823 | "dev": true, 2824 | "license": "MIT" 2825 | }, 2826 | "node_modules/string-to-js": { 2827 | "version": "0.0.1", 2828 | "resolved": "https://registry.npmjs.org/string-to-js/-/string-to-js-0.0.1.tgz", 2829 | "integrity": "sha512-6/1FZ26C+iPY1+cfbScGQ91Br3ZixQn13s/wiOwVBMHZr/OrzrOcAp64li6OeoM1WiG8MZIk9kJZE5Q+Vr8dDg==", 2830 | "dev": true 2831 | }, 2832 | "node_modules/stringmap": { 2833 | "version": "0.2.2", 2834 | "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", 2835 | "integrity": "sha512-mR1LEHDw6TsHa+LwJeeBc9ZqZqEOm7bHidgxMmDg8HB/rbA1HhDeT08gS67CCCG/xrgIfQx5tW42pd8vFpLUow==", 2836 | "dev": true, 2837 | "license": "MIT" 2838 | }, 2839 | "node_modules/stringset": { 2840 | "version": "0.2.1", 2841 | "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", 2842 | "integrity": "sha512-km3jeiRpmySChl1oLiBE2ESdG5k/4+6tjENVL6BB3mdmKBiUikI5ks4paad2WAKsxzpNiBqBBbXCC12QqlpLWA==", 2843 | "dev": true, 2844 | "license": "MIT" 2845 | }, 2846 | "node_modules/superagent": { 2847 | "version": "0.15.7", 2848 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-0.15.7.tgz", 2849 | "integrity": "sha512-etQB4NmXUYWg07EiQTLPd2P+8Ti6g3e0g60A6l26SI99bFi/HERvSIPbJCNSf8N+V1a6YqYakj7JoFgLVwax/A==", 2850 | "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", 2851 | "dev": true, 2852 | "dependencies": { 2853 | "cookiejar": "1.3.0", 2854 | "debug": "~0.7.2", 2855 | "emitter-component": "1.0.0", 2856 | "formidable": "1.0.14", 2857 | "methods": "0.0.1", 2858 | "mime": "1.2.5", 2859 | "qs": "0.6.5", 2860 | "reduce-component": "1.0.1" 2861 | }, 2862 | "engines": { 2863 | "node": "*" 2864 | } 2865 | }, 2866 | "node_modules/superagent-proxy": { 2867 | "version": "0.3.2", 2868 | "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-0.3.2.tgz", 2869 | "integrity": "sha512-BxH1ktouj4LqlgytDD288IBrqEmyioUs5xenEc4y+8fmFo3ixKIpZgMJVYucmunAj2qHb6VFlLK+u9L7642Srg==", 2870 | "dev": true, 2871 | "license": "MIT", 2872 | "dependencies": { 2873 | "debug": "~2.2.0", 2874 | "proxy-agent": "1" 2875 | }, 2876 | "peerDependencies": { 2877 | "superagent": ">= 0.15.4 && < 2" 2878 | } 2879 | }, 2880 | "node_modules/superagent-proxy/node_modules/debug": { 2881 | "version": "2.2.0", 2882 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 2883 | "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", 2884 | "dev": true, 2885 | "license": "MIT", 2886 | "dependencies": { 2887 | "ms": "0.7.1" 2888 | } 2889 | }, 2890 | "node_modules/superagent-proxy/node_modules/ms": { 2891 | "version": "0.7.1", 2892 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 2893 | "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", 2894 | "dev": true 2895 | }, 2896 | "node_modules/superagent/node_modules/methods": { 2897 | "version": "0.0.1", 2898 | "resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz", 2899 | "integrity": "sha512-pB8oFfci/xcfUgM6DTxc7lbTKifPPgs3mZUOsEgaH+1TTWpmcmv3sHl+5sUHIj2X2W8aPYa2+nJealRHK+Lo6A==", 2900 | "dev": true, 2901 | "license": "MIT" 2902 | }, 2903 | "node_modules/superagent/node_modules/mime": { 2904 | "version": "1.2.5", 2905 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.5.tgz", 2906 | "integrity": "sha512-QfwTOA+zRHSZXxl9Y7ue5ifKDhU1prnh0dO67Vgcl7Lcx0+79vL9A1ln0qtVur8CFSdYq5Zhnw9DDZQgwDh8Ng==", 2907 | "dev": true, 2908 | "engines": { 2909 | "node": "*" 2910 | } 2911 | }, 2912 | "node_modules/supports-color": { 2913 | "version": "4.5.0", 2914 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 2915 | "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", 2916 | "dev": true, 2917 | "license": "MIT", 2918 | "dependencies": { 2919 | "has-flag": "^2.0.0" 2920 | }, 2921 | "engines": { 2922 | "node": ">=4" 2923 | } 2924 | }, 2925 | "node_modules/throttleit": { 2926 | "version": "0.0.2", 2927 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", 2928 | "integrity": "sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag==", 2929 | "dev": true, 2930 | "license": "MIT" 2931 | }, 2932 | "node_modules/through": { 2933 | "version": "2.3.8", 2934 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2935 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 2936 | "dev": true, 2937 | "license": "MIT" 2938 | }, 2939 | "node_modules/thunkify": { 2940 | "version": "2.1.2", 2941 | "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", 2942 | "integrity": "sha512-w9foI80XcGImrhMQ19pxunaEC5Rp2uzxZZg4XBAFRfiLOplk3F0l7wo+bO16vC2/nlQfR/mXZxcduo0MF2GWLg==", 2943 | "dev": true, 2944 | "license": "MIT" 2945 | }, 2946 | "node_modules/tldts": { 2947 | "version": "6.1.71", 2948 | "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.71.tgz", 2949 | "integrity": "sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==", 2950 | "dev": true, 2951 | "license": "MIT", 2952 | "optional": true, 2953 | "dependencies": { 2954 | "tldts-core": "^6.1.71" 2955 | }, 2956 | "bin": { 2957 | "tldts": "bin/cli.js" 2958 | } 2959 | }, 2960 | "node_modules/tldts-core": { 2961 | "version": "6.1.71", 2962 | "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.71.tgz", 2963 | "integrity": "sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==", 2964 | "dev": true, 2965 | "license": "MIT", 2966 | "optional": true 2967 | }, 2968 | "node_modules/tough-cookie": { 2969 | "version": "5.1.0", 2970 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", 2971 | "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", 2972 | "dev": true, 2973 | "license": "BSD-3-Clause", 2974 | "optional": true, 2975 | "dependencies": { 2976 | "tldts": "^6.1.32" 2977 | }, 2978 | "engines": { 2979 | "node": ">=16" 2980 | } 2981 | }, 2982 | "node_modules/tryor": { 2983 | "version": "0.1.2", 2984 | "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", 2985 | "integrity": "sha512-2+ilNA00DGvbUYYbRrm3ux+snbo7I6uPXMw8I4p/QMl7HUOWBBZFbk+Mpr8/IAPDQE+LQ8vOdlI6xEzjc+e/BQ==", 2986 | "dev": true, 2987 | "license": "MIT" 2988 | }, 2989 | "node_modules/tslib": { 2990 | "version": "2.8.1", 2991 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 2992 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 2993 | "dev": true, 2994 | "license": "0BSD" 2995 | }, 2996 | "node_modules/tunnel-agent": { 2997 | "version": "0.4.3", 2998 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", 2999 | "integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==", 3000 | "dev": true, 3001 | "license": "Apache-2.0", 3002 | "optional": true, 3003 | "engines": { 3004 | "node": "*" 3005 | } 3006 | }, 3007 | "node_modules/type-check": { 3008 | "version": "0.3.2", 3009 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3010 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 3011 | "dev": true, 3012 | "license": "MIT", 3013 | "dependencies": { 3014 | "prelude-ls": "~1.1.2" 3015 | }, 3016 | "engines": { 3017 | "node": ">= 0.8.0" 3018 | } 3019 | }, 3020 | "node_modules/uid2": { 3021 | "version": "0.0.3", 3022 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", 3023 | "integrity": "sha512-5gSP1liv10Gjp8cMEnFd6shzkL/D6W1uhXSFNCxDC+YI8+L8wkCYCbJ7n77Ezb4wE/xzMogecE+DtamEe9PZjg==", 3024 | "dev": true 3025 | }, 3026 | "node_modules/underscore": { 3027 | "version": "1.4.4", 3028 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", 3029 | "integrity": "sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==", 3030 | "dev": true 3031 | }, 3032 | "node_modules/underscore.string": { 3033 | "version": "2.4.0", 3034 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", 3035 | "integrity": "sha512-yxkabuCaIBnzfIvX3kBxQqCs0ar/bfJwDnFEHJUm/ZrRVhT3IItdRF5cZjARLzEnyQYtIUhsZ2LG2j3HidFOFQ==", 3036 | "dev": true, 3037 | "engines": { 3038 | "node": "*" 3039 | } 3040 | }, 3041 | "node_modules/util-deprecate": { 3042 | "version": "1.0.2", 3043 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3044 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3045 | "dev": true, 3046 | "license": "MIT" 3047 | }, 3048 | "node_modules/vargs": { 3049 | "version": "0.1.0", 3050 | "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz", 3051 | "integrity": "sha512-d/j1kMUt0YjLCQPAI+VMZ7IKwNGjk8dSHMCrHq9txFOCcCIDoe8ck9FmPvABJgxIaZO1tabXmNojQG6mBkLLCw==", 3052 | "dev": true, 3053 | "engines": { 3054 | "node": ">=0.1.93" 3055 | } 3056 | }, 3057 | "node_modules/wd": { 3058 | "version": "0.2.2", 3059 | "resolved": "https://registry.npmjs.org/wd/-/wd-0.2.2.tgz", 3060 | "integrity": "sha512-RBIx1zvHIfk3ynyX7fwZXOkdfksc/EKTq7VPN+ondJG/tamagckm0S9ILq45FLXiBBA9rob+ZmBRJ+7GiQkdzg==", 3061 | "dev": true, 3062 | "engines": [ 3063 | "node" 3064 | ], 3065 | "dependencies": { 3066 | "archiver": "~0.4.10", 3067 | "async": "~0.2.9", 3068 | "lodash": "~1.3.1", 3069 | "q": "~0.9.7", 3070 | "request": "~2.21.0", 3071 | "vargs": "~0.1.0" 3072 | }, 3073 | "bin": { 3074 | "wd": "lib/bin.js" 3075 | } 3076 | }, 3077 | "node_modules/wd/node_modules/assert-plus": { 3078 | "version": "0.1.2", 3079 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.2.tgz", 3080 | "integrity": "sha512-BbJV8Hq6grYTokkHi/qKS34kfYIFYpu4wKd/H0dARsa6qOqEFH1wboxMwrccAmFjyRjkemjElaVC/sZSUMxHnA==", 3081 | "dev": true, 3082 | "engines": { 3083 | "node": ">=0.6" 3084 | } 3085 | }, 3086 | "node_modules/wd/node_modules/ctype": { 3087 | "version": "0.5.2", 3088 | "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.2.tgz", 3089 | "integrity": "sha512-C+CbWLSk0xdPcp7evo2YEF0o8SLKcDCQsw//accyrf8/NAWYzmUhmL8ZiSokvuwwMQ08RK10U9pkRcyy8EmA5A==", 3090 | "dev": true, 3091 | "engines": { 3092 | "node": ">= 0.4" 3093 | } 3094 | }, 3095 | "node_modules/wd/node_modules/form-data": { 3096 | "version": "0.0.8", 3097 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.8.tgz", 3098 | "integrity": "sha512-yzpBIhe8Ll+dYTXjd+4ORxbQktke+abD0dJjedvqsVVayMkb+PgLGatJNLwo95Va75l3YDZ01SrouzyW9bC2Fg==", 3099 | "dev": true, 3100 | "dependencies": { 3101 | "async": "~0.2.7", 3102 | "combined-stream": "~0.0.4", 3103 | "mime": "~1.2.2" 3104 | }, 3105 | "engines": { 3106 | "node": ">= 0.6" 3107 | } 3108 | }, 3109 | "node_modules/wd/node_modules/hawk": { 3110 | "version": "0.13.1", 3111 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-0.13.1.tgz", 3112 | "integrity": "sha512-f/1H9bruKJfgLN2KFd+666ILQvJYsJcxaCoIdHaaD2zgl7RUa08/202pGJXhOmQ1kTEdMTSxPnbCsu4l6JARhQ==", 3113 | "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 3114 | "dev": true, 3115 | "dependencies": { 3116 | "boom": "0.4.x", 3117 | "cryptiles": "0.2.x", 3118 | "hoek": "0.8.x", 3119 | "sntp": "0.2.x" 3120 | }, 3121 | "engines": { 3122 | "node": ">=0.8.0" 3123 | } 3124 | }, 3125 | "node_modules/wd/node_modules/hoek": { 3126 | "version": "0.8.5", 3127 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.8.5.tgz", 3128 | "integrity": "sha512-NoKdeYUBOlQ7j9dgvT9BEX90rE6HtDkaMFwR6hfOj26LA2Mwyg5026jOpNBhmNrWIGdPnbBK3sQJI3POwh8wqg==", 3129 | "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 3130 | "dev": true, 3131 | "engines": { 3132 | "node": ">=0.8.0" 3133 | } 3134 | }, 3135 | "node_modules/wd/node_modules/http-signature": { 3136 | "version": "0.9.11", 3137 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.9.11.tgz", 3138 | "integrity": "sha512-OleF+71prrzyaWDTfTXWvv24N/45SjKCPu/3pzzhj8+MgdGaB7Am3NY0ot5uynrzgTwyQ+yoejuFCncCQxyRSA==", 3139 | "dev": true, 3140 | "dependencies": { 3141 | "asn1": "0.1.11", 3142 | "assert-plus": "0.1.2", 3143 | "ctype": "0.5.2" 3144 | }, 3145 | "engines": { 3146 | "node": ">=0.8" 3147 | } 3148 | }, 3149 | "node_modules/wd/node_modules/json-stringify-safe": { 3150 | "version": "4.0.0", 3151 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-4.0.0.tgz", 3152 | "integrity": "sha512-qzEpz1SDUb9xvA+LDOkNgjekdV7tuC7zDQf14sqMBtujh8kVbQhF11VWm4DeR99yFNjVSjTTfKa40c9ZQOtwXA==", 3153 | "dev": true, 3154 | "license": "BSD" 3155 | }, 3156 | "node_modules/wd/node_modules/request": { 3157 | "version": "2.21.0", 3158 | "resolved": "https://registry.npmjs.org/request/-/request-2.21.0.tgz", 3159 | "integrity": "sha512-jvDa6FC46ystc0cn+EqtJ4B32SSz/cMX7fEIv0UHX4wsYAKJYXjA5EyAMWpRQ+hWCnX9jPD1b4o7xZ/r1Tyx/Q==", 3160 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 3161 | "dev": true, 3162 | "engines": [ 3163 | "node >= 0.8.0" 3164 | ], 3165 | "dependencies": { 3166 | "aws-sign": "~0.3.0", 3167 | "cookie-jar": "~0.3.0", 3168 | "forever-agent": "~0.5.0", 3169 | "form-data": "0.0.8", 3170 | "hawk": "~0.13.0", 3171 | "http-signature": "~0.9.11", 3172 | "json-stringify-safe": "~4.0.0", 3173 | "mime": "~1.2.9", 3174 | "node-uuid": "~1.4.0", 3175 | "oauth-sign": "~0.3.0", 3176 | "qs": "~0.6.0", 3177 | "tunnel-agent": "~0.3.0" 3178 | } 3179 | }, 3180 | "node_modules/wd/node_modules/tunnel-agent": { 3181 | "version": "0.3.0", 3182 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.3.0.tgz", 3183 | "integrity": "sha512-jlGqHGoKzyyjhwv/c9omAgohntThMcGtw8RV/RDLlkbbc08kni/akVxO62N8HaXMVbVsK1NCnpSK3N2xCt22ww==", 3184 | "dev": true, 3185 | "engines": { 3186 | "node": "*" 3187 | } 3188 | }, 3189 | "node_modules/which": { 3190 | "version": "1.0.9", 3191 | "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", 3192 | "integrity": "sha512-E87fdQ/eRJr9W1X4wTPejNy9zTW3FI2vpCZSJ/HAY+TkjKVC0TUm1jk6vn2Z7qay0DQy0+RBGdXxj+RmmiGZKQ==", 3193 | "dev": true, 3194 | "license": "ISC", 3195 | "bin": { 3196 | "which": "bin/which" 3197 | } 3198 | }, 3199 | "node_modules/win-fork": { 3200 | "version": "1.1.1", 3201 | "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz", 3202 | "integrity": "sha512-kMnrXXHyb/Zx1ynkiMtcEgq+rxXFIfs/IhhxVBmIk+1KwPyIggZU0RAiADExhSyf0NESvCWQyfO4eGdlU9fBSw==", 3203 | "dev": true, 3204 | "license": "BSD", 3205 | "bin": { 3206 | "win-fork": "bin/win-spawn", 3207 | "win-line-endings": "bin/win-line-endings", 3208 | "win-spawn": "bin/win-spawn" 3209 | } 3210 | }, 3211 | "node_modules/window-size": { 3212 | "version": "0.1.4", 3213 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", 3214 | "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", 3215 | "dev": true, 3216 | "license": "MIT", 3217 | "bin": { 3218 | "window-size": "cli.js" 3219 | }, 3220 | "engines": { 3221 | "node": ">= 0.10.0" 3222 | } 3223 | }, 3224 | "node_modules/word-wrap": { 3225 | "version": "1.2.5", 3226 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3227 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3228 | "dev": true, 3229 | "license": "MIT", 3230 | "engines": { 3231 | "node": ">=0.10.0" 3232 | } 3233 | }, 3234 | "node_modules/wordwrap": { 3235 | "version": "0.0.3", 3236 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 3237 | "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", 3238 | "dev": true, 3239 | "license": "MIT", 3240 | "engines": { 3241 | "node": ">=0.4.0" 3242 | } 3243 | }, 3244 | "node_modules/wrappy": { 3245 | "version": "1.0.2", 3246 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3247 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3248 | "dev": true, 3249 | "license": "ISC" 3250 | }, 3251 | "node_modules/xregexp": { 3252 | "version": "2.0.0", 3253 | "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", 3254 | "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", 3255 | "dev": true, 3256 | "license": "MIT", 3257 | "engines": { 3258 | "node": "*" 3259 | } 3260 | }, 3261 | "node_modules/y18n": { 3262 | "version": "3.2.2", 3263 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", 3264 | "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", 3265 | "dev": true, 3266 | "license": "ISC" 3267 | }, 3268 | "node_modules/yamljs": { 3269 | "version": "0.1.6", 3270 | "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.1.6.tgz", 3271 | "integrity": "sha512-DwuJFcJIiz6b61o9dRs/Tnd1zMDNIceNMyd+2VmscHTfkBBZjMnnpjb0EqznCKVpVE/EXv0tTEfoUqgIn3gFUg==", 3272 | "dev": true, 3273 | "dependencies": { 3274 | "argparse": "~0.1.4", 3275 | "glob": "~3.1.11" 3276 | }, 3277 | "bin": { 3278 | "json2yaml": "bin/json2yaml", 3279 | "yaml2json": "bin/yaml2json" 3280 | } 3281 | }, 3282 | "node_modules/yamljs/node_modules/glob": { 3283 | "version": "3.1.21", 3284 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 3285 | "integrity": "sha512-ANhy2V2+tFpRajE3wN4DhkNQ08KDr0Ir1qL12/cUe5+a7STEK8jkW4onUYuY8/06qAFuT5je7mjAqzx0eKI2tQ==", 3286 | "deprecated": "Glob versions prior to v9 are no longer supported", 3287 | "dev": true, 3288 | "license": "BSD", 3289 | "dependencies": { 3290 | "graceful-fs": "~1.2.0", 3291 | "inherits": "1", 3292 | "minimatch": "~0.2.11" 3293 | }, 3294 | "engines": { 3295 | "node": "*" 3296 | } 3297 | }, 3298 | "node_modules/yamljs/node_modules/graceful-fs": { 3299 | "version": "1.2.3", 3300 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 3301 | "integrity": "sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==", 3302 | "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", 3303 | "dev": true, 3304 | "license": "BSD", 3305 | "engines": { 3306 | "node": ">=0.4.0" 3307 | } 3308 | }, 3309 | "node_modules/yamljs/node_modules/inherits": { 3310 | "version": "1.0.2", 3311 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 3312 | "integrity": "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA==", 3313 | "dev": true 3314 | }, 3315 | "node_modules/yargs": { 3316 | "version": "3.27.0", 3317 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", 3318 | "integrity": "sha512-6atYjGACjX/OYWico7LwdBx9eiGlkMnIw6OwqfBb+uJQpaT82tQ7oI+BI6Dvq62qZvSbzGzQCVLQdMd59tR2eA==", 3319 | "dev": true, 3320 | "license": "MIT", 3321 | "dependencies": { 3322 | "camelcase": "^1.2.1", 3323 | "cliui": "^2.1.0", 3324 | "decamelize": "^1.0.0", 3325 | "os-locale": "^1.4.0", 3326 | "window-size": "^0.1.2", 3327 | "y18n": "^3.2.0" 3328 | } 3329 | } 3330 | } 3331 | } 3332 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dom-iterator", 3 | "version": "1.0.2", 4 | "description": "iterator for mini-html-parser", 5 | "main": "index.js", 6 | "directories": { 7 | "example": "examples", 8 | "test": "test" 9 | }, 10 | "dependencies": { 11 | "component-props": "1.1.1", 12 | "component-xor": "0.0.4" 13 | }, 14 | "devDependencies": { 15 | "chalk": "2.1.0", 16 | "component": "0.x", 17 | "component-domify": "1.2.2", 18 | "component-test": "0.1.7", 19 | "mini-html-parser": "0.0.3", 20 | "mocha": "1.17.1" 21 | }, 22 | "scripts": { 23 | "test": "make test" 24 | }, 25 | "repository": { 26 | "type": "git", 27 | "url": "https://github.com/MatthewMueller/dom-iterator.git" 28 | }, 29 | "keywords": [ 30 | "iterator", 31 | "dom", 32 | "mini-html-parser" 33 | ], 34 | "author": "Matthew Mueller", 35 | "license": "MIT", 36 | "bugs": { 37 | "url": "https://github.com/MatthewMueller/dom-iterator/issues" 38 | }, 39 | "homepage": "https://github.com/MatthewMueller/dom-iterator" 40 | } -------------------------------------------------------------------------------- /test/iterator.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Module Dependencies 3 | */ 4 | 5 | var assert = require('assert'); 6 | 7 | try { 8 | var iterator = require('dom-iterator'); 9 | var parse = require('domify'); 10 | } catch (e) { 11 | var iterator = require('../'); 12 | var parse = function(str) { return require('mini-html-parser')(str).parse(); }; 13 | } 14 | 15 | 16 | /** 17 | * Tests 18 | */ 19 | 20 | describe('iterator', function() { 21 | var dom, i, article; 22 | 23 | beforeEach(function() { 24 | dom = parse('hi
whateveromg
bye'); 25 | article = dom.childNodes[1]; 26 | }); 27 | 28 | describe('(dom)', function() { 29 | 30 | it('should iterate from the top', function() { 31 | i = iterator(dom); 32 | assert('' == format(i)); 33 | assert('hi' == format(i.next(), i)); 34 | assert('
' == format(i.next(), i)); 35 | assert('' == format(i.next(), i)); 36 | assert('whatever' == format(i.next(), i)); 37 | assert('' == format(i.next(), i)); 38 | assert('omg' == format(i.next(), i)); 39 | assert('' == format(i.next(), i)); 40 | assert('' == format(i.next(), i)); 41 | assert('
' == format(i.next(), i)); 42 | assert('bye' == format(i.next(), i)); 43 | assert('' == format(i.next(), i)); 44 | assert(null == i.next()); 45 | assert(null == i.next()); 46 | assert(null == i.next()); 47 | assert('' == format(i)); 48 | assert('bye' == format(i.prev(), i)); 49 | assert('' == format(i.prev(), i)); 50 | }); 51 | 52 | it('should iterate from the middle (opening)', function() { 53 | i = iterator(article); 54 | 55 | assert('
' == format(i)); 56 | assert('hi' == format(i.prev(), i)); 57 | assert('' == format(i.prev(), i)); 58 | assert(null == i.prev()); 59 | 60 | i.reset(); 61 | 62 | assert('
' == format(i)); 63 | assert('' == format(i.next(), i)); 64 | assert('whatever' == format(i.next(), i)); 65 | assert('' == format(i.next(), i)); 66 | assert('omg' == format(i.next(), i)); 67 | assert('' == format(i.next(), i)); 68 | assert('' == format(i.next(), i)); 69 | assert('
' == format(i.next(), i)); 70 | assert('bye' == format(i.next(), i)); 71 | assert('' == format(i.next(), i)); 72 | assert(null == i.next()); 73 | }); 74 | 75 | 76 | it('should iterate from the middle (closing)', function() { 77 | i = iterator(article).closing(); 78 | 79 | assert('
' == format(i)); 80 | assert('bye' == format(i.next(), i)); 81 | assert('' == format(i.next(), i)); 82 | assert(null == i.next()); 83 | 84 | i.reset(); 85 | 86 | assert('' == format(i)); 87 | assert('' == format(i.prev(), i)); 88 | assert('' == format(i.prev(), i)); 89 | assert('omg' == format(i.prev(), i)); 90 | assert('' == format(i.prev(), i)); 91 | assert('whatever' == format(i.prev(), i)); 92 | assert('' == format(i.prev(), i)); 93 | assert('
' == format(i.prev(), i)); 94 | assert('hi' == format(i.prev(), i)); 95 | assert('' == format(i.prev(), i)); 96 | assert(null == i.prev()); 97 | }); 98 | 99 | it('should iterate from the bottom', function() { 100 | i = iterator(dom).closing(); 101 | assert('' == format(i)); 102 | assert('bye' == format(i.prev(), i)); 103 | assert('
' == format(i.prev(), i)); 104 | assert('
' == format(i.prev(), i)); 105 | assert('' == format(i.prev(), i)); 106 | assert('omg' == format(i.prev(), i)); 107 | assert('' == format(i.prev(), i)); 108 | assert('whatever' == format(i.prev(), i)); 109 | assert('' == format(i.prev(), i)); 110 | assert('
' == format(i.prev(), i)); 111 | assert('hi' == format(i.prev(), i)); 112 | assert('' == format(i.prev(), i)); 113 | assert(null == i.prev()); 114 | assert(null == i.prev()); 115 | assert(null == i.prev()); 116 | assert('' == format(i)); 117 | assert('hi' == format(i.next(), i)); 118 | assert('
' == format(i.next(), i)); 119 | }); 120 | }); 121 | 122 | describe('(dom, root)', function() { 123 | it('should support roots to limit iterator (opening)', function() { 124 | i = iterator(article.firstChild, article); 125 | assert('' == format(i)); 126 | assert(null == i.prev()); 127 | assert(null == i.prev()); 128 | assert('' == format(i)); 129 | assert('whatever' == format(i.next(), i)); 130 | assert('' == format(i.next(), i)); 131 | assert('omg' == format(i.next(), i)); 132 | assert('' == format(i.next(), i)); 133 | assert('' == format(i.next(), i)); 134 | assert(null == i.next()); 135 | assert(null == i.next()); 136 | assert('' == format(i)); 137 | }); 138 | 139 | it('should support roots to limit iterator (closing)', function() { 140 | i = iterator(article.lastChild, article).closing(); 141 | assert('' == format(i)); 142 | assert(null == i.next()); 143 | assert(null == i.next()); 144 | assert('' == format(i.prev(), i)); 145 | assert('omg' == format(i.prev(), i)); 146 | assert('' == format(i.prev(), i)); 147 | assert('whatever' == format(i.prev(), i)); 148 | assert('' == format(i.prev(), i)); 149 | assert(null == i.prev()); 150 | assert(null == i.prev()); 151 | assert('' == format(i)); 152 | }); 153 | 154 | it('should not throw an Error when given a falsey DOM node', function() { 155 | var dom = parse('
'); 156 | var it = iterator(dom.firstChild, dom); 157 | assert(null == it.next()); 158 | }); 159 | }); 160 | 161 | describe('atOpening() & atClosing()', function() { 162 | it('should accurately return atOpening() or atClosing()', function() { 163 | i = iterator(dom); 164 | assert(i.atOpening()); 165 | i.next(); // hi 166 | assert(i.atOpening()); 167 | i.next(); // article 168 | assert(i.atOpening()); 169 | i.next(); // em 170 | assert(i.atOpening()); 171 | i.next(); // whatever 172 | assert(i.atOpening()); 173 | i.next(); // /em 174 | assert(i.atClosing()); 175 | i.next(); // omg 176 | assert(i.atOpening()); 177 | i.next(); // strong 178 | assert(i.atOpening()); 179 | i.next(); // /strong 180 | assert(i.atClosing()); 181 | i.next(); // /article 182 | assert(i.atClosing()); 183 | i.next(); // bye 184 | assert(i.atOpening()); 185 | i.next(); // /body 186 | assert(i.atClosing()); 187 | i.next(); // /body 188 | assert(i.atClosing()); 189 | i.next(); // /body 190 | assert(i.atClosing()); 191 | }); 192 | }); 193 | 194 | describe('revisit(false)', function() { 195 | it('from top: should ignore the element if you pass it again', function() { 196 | i = iterator(dom).revisit(false); 197 | assert('' == format(i)); 198 | assert('hi' == format(i.next(), i)); 199 | assert('
' == format(i.next(), i)); 200 | assert('' == format(i.next(), i)); 201 | assert('whatever' == format(i.next(), i)); 202 | assert('omg' == format(i.next(), i)); 203 | assert('' == format(i.next(), i)); 204 | assert('bye' == format(i.next(), i)); 205 | assert(null == i.next()); 206 | assert(null == i.next()); 207 | assert(null == i.next()); 208 | assert('bye' == format(i)); 209 | assert('
' == format(i.prev(), i)); 210 | assert('' == format(i.prev(), i)); 211 | assert('omg' == format(i.prev(), i)); 212 | }); 213 | 214 | it('from bottom: should ignore the element if you pass it again', function() { 215 | i = iterator(dom).revisit(false).closing(); 216 | assert('' == format(i)); 217 | assert('bye' == format(i.prev(), i)); 218 | assert('
' == format(i.prev(), i)); 219 | assert('' == format(i.prev(), i)); 220 | assert('omg' == format(i.prev(), i)); 221 | assert('' == format(i.prev(), i)); 222 | assert('whatever' == format(i.prev(), i)); 223 | assert('hi' == format(i.prev(), i)); 224 | assert(null == i.prev()); 225 | assert(null == i.prev()); 226 | assert(null == i.prev()); 227 | assert('hi' == format(i)); 228 | assert('
' == format(i.next(), i)); 229 | assert('' == format(i.next(), i)); 230 | assert('whatever' == format(i.next(), i)); 231 | }); 232 | }); 233 | 234 | describe('peak', function() { 235 | 236 | it('should allow you to peak in front', function() { 237 | i = iterator(dom); 238 | assert('hi' == i.peak().nodeValue); 239 | assert('BODY' == i.node.nodeName); 240 | assert('hi' == i.next().nodeValue); 241 | }); 242 | 243 | it('should allow you to peak behind', function() { 244 | i = iterator(article).closing(); 245 | assert('STRONG' == i.peak(-1).nodeName); 246 | assert('ARTICLE' == i.node.nodeName); 247 | assert('STRONG' == i.prev().nodeName); 248 | }); 249 | 250 | it('should allow you to peak forward multiple nodes', function() { 251 | i = iterator(dom); 252 | assert('EM' == i.peak(3).nodeName); 253 | assert('BODY' == i.node.nodeName); 254 | assert('hi' == i.next().nodeValue); 255 | }); 256 | 257 | it('should allow you to peak behind multiple nodes', function() { 258 | i = iterator(article).closing(); 259 | assert('omg' == i.peak(-3).nodeValue); 260 | assert('ARTICLE' == i.node.nodeName); 261 | assert('STRONG' == i.prev().nodeName); 262 | }); 263 | }); 264 | 265 | describe('it.{next,prev}(expr)', function() { 266 | it('should work with numbers', function() { 267 | i = iterator(dom); 268 | assert('hi' == format(i.next(3), i)); 269 | assert('
' == format(i.next(1), i)); 270 | assert('' == format(i.next(1), i)); 271 | assert('whatever' == format(i.next(3), i)); 272 | assert('' == format(i.next(1), i)); 273 | assert('' == format(i.next(1), i)); 274 | assert('' == format(i.next(1), i)); 275 | assert('omg' == format(i.prev(3), i)); 276 | assert('whatever' == format(i.prev(3), i)); 277 | assert('hi' == format(i.prev(3), i)); 278 | }); 279 | 280 | it('should work with strings', function() { 281 | i = iterator(dom); 282 | assert('omg' == i.next('nodeValue == "omg"').nodeValue); 283 | assert('bye' == i.next('nodeType == 3 && nodeValue == "bye"').nodeValue); 284 | assert('omg' == i.prev('nodeType == 3 && nodeValue == "omg"').nodeValue); 285 | assert('BODY' == i.prev('nodeType == 1 && nodeName == "BODY"').nodeName); 286 | assert(null == i.prev('nodeType == 1 && nodeName == "BODY"')); 287 | assert('' == format(i)); 288 | }); 289 | 290 | it('should work with functions', function() { 291 | i = iterator(dom); 292 | assert('omg' == i.next(function(node) { return node.nodeValue == 'omg'; }).nodeValue); 293 | assert('BODY' == i.prev(function(node) { return node.nodeName == 'BODY'; }).nodeName); 294 | }); 295 | }); 296 | 297 | describe('it.select(expr)', function() { 298 | it('should work with numbers', function() { 299 | i = iterator(dom) 300 | .select(3) 301 | .select(8); 302 | 303 | assert('' == format(i)); 304 | assert('hi' == format(i.next(), i)); 305 | assert('whatever' == format(i.next(), i)); 306 | assert('omg' == format(i.next(), i)); 307 | assert('bye' == format(i.next(), i)); 308 | assert(null == i.next()); 309 | assert('bye' == format(i)); 310 | assert('omg' == format(i.prev(), i)); 311 | assert('whatever' == format(i.prev(), i)); 312 | assert('hi' == format(i.prev(), i)); 313 | assert(null == i.prev()); 314 | assert('hi' == format(i)); 315 | }); 316 | 317 | it('should work with strings', function() { 318 | i = iterator(dom) 319 | .select('nodeValue == "omg"') 320 | .select('nodeName == "ARTICLE"'); 321 | 322 | assert('' == format(i)); 323 | assert('
' == format(i.next(), i)); 324 | assert('omg' == format(i.next(), i)); 325 | assert('
' == format(i.next(), i)); 326 | assert(null == i.next()); 327 | assert('
' == format(i)); 328 | }); 329 | }); 330 | 331 | describe('it.reject(expr)', function() { 332 | it('should work with numbers', function() { 333 | i = iterator(dom) 334 | .reject(1) 335 | .reject(8); 336 | 337 | assert('' == format(i)); 338 | assert('hi' == format(i.next(), i)); 339 | assert('whatever' == format(i.next(), i)); 340 | assert('omg' == format(i.next(), i)); 341 | assert('bye' == format(i.next(), i)); 342 | assert(null == i.next()); 343 | assert('bye' == format(i)); 344 | assert('omg' == format(i.prev(), i)); 345 | assert('whatever' == format(i.prev(), i)); 346 | assert('hi' == format(i.prev(), i)); 347 | assert(null == i.prev()); 348 | assert('hi' == format(i)); 349 | }); 350 | 351 | it('should work with strings', function() { 352 | i = iterator(dom) 353 | .reject('nodeValue == "omg"') 354 | .reject('nodeName == "ARTICLE"'); 355 | 356 | assert('' == format(i)); 357 | assert('hi' == format(i.next(), i)); 358 | assert('' == format(i.next(), i)); 359 | assert('whatever' == format(i.next(), i)); 360 | assert('' == format(i.next(), i)); 361 | assert('' == format(i.next(), i)); 362 | assert('' == format(i.next(), i)); 363 | assert('bye' == format(i.next(), i)); 364 | assert('' == format(i.next(), i)); 365 | assert(null == i.next()); 366 | assert(null == i.next()); 367 | assert(null == i.next()); 368 | assert('' == format(i)); 369 | assert('bye' == format(i.prev(), i)); 370 | assert('' == format(i.prev(), i)); 371 | }); 372 | }); 373 | 374 | function format(node, it) { 375 | if (arguments.length == 1) it = node, node = it.node; 376 | var name = node.nodeName.toLowerCase(); 377 | var type = node.nodeType; 378 | var closing = it.atClosing(); 379 | var out = null; 380 | 381 | if (3 == type) { 382 | out = node.nodeValue; 383 | } else if (1 == type) { 384 | out = it.atClosing() ? '' : '<' + name + '>'; 385 | } 386 | 387 | return out; 388 | } 389 | 390 | }); 391 | --------------------------------------------------------------------------------