├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── index.js ├── package-lock.json ├── package.json └── test ├── fixtures ├── Categories.js ├── customers.json ├── models │ ├── Categories.js │ ├── Products.js │ ├── Regions.js │ ├── Sellers.js │ └── Tags.js ├── products.json ├── regions.json ├── sellers.json └── tags.json ├── index.test.js └── mocha.opts /.gitignore: -------------------------------------------------------------------------------- 1 | ######################## 2 | # Sails.js 3 | ######################## 4 | .tmp 5 | 6 | ######################## 7 | # node.js / npm 8 | ######################## 9 | lib-cov 10 | *.seed 11 | *.log 12 | *.csv 13 | *.dat 14 | *.out 15 | *.pid 16 | *.gz 17 | 18 | pids 19 | logs 20 | results 21 | 22 | node_modules 23 | 24 | npm-debug.log 25 | 26 | 27 | ######################## 28 | # misc / editors 29 | ######################## 30 | *~ 31 | *# 32 | .DS_STORE 33 | .netbeans 34 | nbproject 35 | .idea 36 | *.iml 37 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2013 Ruslan Bredikhin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 6 | documentation files (the 'Software'), to deal in the Software without restriction, including without limitation 7 | the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 8 | and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all copies or substantial portions 11 | of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 14 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 15 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 16 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 17 | DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simple DB Fixtures for Sails.js with Associations Support 2 | 3 | [![Build Status](https://travis-ci.org/bredikhin/barrels.png?branch=master)](https://travis-ci.org/bredikhin/barrels) 4 | [![Dependency Status](https://gemnasium.com/bredikhin/barrels.png)](https://gemnasium.com/bredikhin/barrels) 5 | 6 | ## Project Status 7 | 8 | This project is currently UNMAINTAINED since the topic is out of my current interests. 9 | 10 | **A newer, Sails v1 compatible version is available via the [`Fixted`](https://www.npmjs.com/package/fixted) package by NeoNexus.** 11 | 12 | ## Installation 13 | 14 | `$ npm i --save-dev barrels` 15 | 16 | ## Usage 17 | 18 | Drop your fixtures in `test/fixtures` as JSON files (or CommonJS modules) named after your models. 19 | 20 | Once your [Sails.js](http://sailsjs.org/) server is started: 21 | 22 | var Barrels = require('barrels'); 23 | var barrels = new Barrels(); 24 | var fixtures = barrels.data; 25 | barrels.populate(function(err) { 26 | ... 27 | }); 28 | 29 | Pass to the constructor the path to the folder containing your fixtures 30 | (defaults to `./test/fixtures`). 31 | 32 | `Populate`'ing the test database involves three steps: 33 | 34 | * Removing any existing data from the collection corresponding to the fixture 35 | * Loading the fixture data into the test database 36 | * Automatically applying associations (can be disabled by passing `false` as 37 | the last parameter to `populate`) 38 | 39 | `Populate` also accepts an array of names of collections to populate as 40 | the first (optional) argument, for example: 41 | 42 | barrels.populate(['products'], function(err) { 43 | // Only products will be populated 44 | ... 45 | }); 46 | 47 | ## Automatic association 48 | 49 | Use the number of position (starting from one) of an entry in the JSON fixture 50 | as a reference to associate models (see 51 | https://github.com/bredikhin/barrels/blob/master/test/fixtures/products.json 52 | for example). This feature can be disabled by passing `false` as the last 53 | parameter to `populate`. 54 | 55 | ## Required associations 56 | 57 | If you have any associations described as `required: true`, they will be 58 | added automatically, no matter if the last parameter to `populate` is `false` 59 | or not. However, you have to load your fixtures gradually (by passing an array 60 | of collection names as the first parameter) in such an order that collections 61 | corresponding to the required associations get populated first. 62 | 63 | Let's say, for example, you are implementing a `Passport.js`-based 64 | authentication, and every `Passport` has `User` as a required association. You'd 65 | write something like this: 66 | 67 | ```javascript 68 | barrels.populate(['user', 'passport'], function(err) { 69 | if (err) 70 | return done(err); // Higher level callback 71 | 72 | // Do your thing... 73 | done(); 74 | }); 75 | ``` 76 | 77 | ## Dependencies 78 | 79 | * [Async.js](https://github.com/caolan/async) 80 | * [Lo-Dash](http://lodash.com/) 81 | 82 | ## License 83 | 84 | [The MIT License](http://opensource.org/licenses/MIT) 85 | 86 | Copyright (c) 2013-2015 [Ruslan Bredikhin](http://ruslanbredikhin.com/) 87 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /*jslint node: true */ 2 | 'use strict'; 3 | 4 | /** 5 | * Barrels: Simple fixtures for Sails.js 6 | */ 7 | 8 | /** 9 | * Dependencies 10 | */ 11 | var fs = require('fs'); 12 | var path = require('path'); 13 | var async = require('async'); 14 | var _ = require('lodash'); 15 | 16 | module.exports = Barrels; 17 | 18 | /** 19 | * Barrels module 20 | * @param {string} sourceFolder defaults to /test/fixtures 21 | */ 22 | function Barrels(sourceFolder) { 23 | if (!(this instanceof Barrels)) 24 | return new Barrels(sourceFolder); 25 | 26 | // Fixture objects loaded from the JSON files 27 | this.data = {}; 28 | 29 | // Map fixture positions in JSON files to the real DB IDs 30 | this.idMap = {}; 31 | 32 | // The list of associations by model 33 | this.associations = {}; 34 | 35 | // Load the fixtures 36 | sourceFolder = sourceFolder || process.cwd() + '/test/fixtures'; 37 | var files = fs.readdirSync(sourceFolder); 38 | 39 | for (var i = 0; i < files.length; i++) { 40 | if (['.json', '.js'].indexOf(path.extname(files[i]).toLowerCase()) !== -1) { 41 | var modelName = path.basename(files[i]).split('.')[0].toLowerCase(); 42 | this.data[modelName] = require(path.join(sourceFolder, files[i])); 43 | } 44 | } 45 | 46 | // The list of the fixtures model names 47 | this.modelNames = Object.keys(this.data); 48 | } 49 | 50 | /** 51 | * Add associations 52 | * @param {function} done callback 53 | */ 54 | Barrels.prototype.associate = function(collections, done) { 55 | if (!_.isArray(collections)) { 56 | done = collections; 57 | collections = this.modelNames; 58 | } 59 | var that = this; 60 | 61 | // Add associations whenever needed 62 | async.each(collections, function(modelName, nextModel) { 63 | var Model = sails.models[modelName]; 64 | if (Model) { 65 | var fixtureObjects = _.cloneDeep(that.data[modelName]); 66 | async.each(fixtureObjects, function(item, nextItem) { 67 | // Item position in the file 68 | var itemIndex = fixtureObjects.indexOf(item); 69 | 70 | // Find and associate 71 | Model.findOne(that.idMap[modelName][itemIndex]).exec(function(err, model) { 72 | if (err) 73 | return nextItem(err); 74 | 75 | // Pick associations only 76 | item = _.pick(item, Object.keys(that.associations[modelName])); 77 | async.each(Object.keys(item), function(attr, nextAttr) { 78 | var association = that.associations[modelName][attr]; 79 | // Required associations should have beed added earlier 80 | if (association.required) 81 | return nextAttr(); 82 | var joined = association[association.type]; 83 | 84 | if (!_.isArray(item[attr])) 85 | model[attr] = that.idMap[joined][item[attr]-1]; 86 | else { 87 | for (var j = 0; j < item[attr].length; j++) { 88 | model[attr].add(that.idMap[joined][item[attr][j]-1]); 89 | } 90 | } 91 | 92 | model.save(function(err) { 93 | if (err) 94 | return nextAttr(err); 95 | 96 | nextAttr(); 97 | }); 98 | }, nextItem); 99 | }); 100 | }, nextModel); 101 | } else { 102 | nextModel(); 103 | } 104 | }, done); 105 | }; 106 | 107 | /** 108 | * Put loaded fixtures in the database, associations excluded 109 | * @param {array} collections optional list of collections to populate 110 | * @param {function} done callback 111 | * @param {boolean} autoAssociations automatically associate based on the order in the fixture files 112 | */ 113 | Barrels.prototype.populate = function(collections, done, autoAssociations) { 114 | var preserveLoadOrder = true; 115 | if (!_.isArray(collections)) { 116 | autoAssociations = done; 117 | done = collections; 118 | collections = this.modelNames; 119 | preserveLoadOrder = false; 120 | } 121 | else { 122 | collections = _.map(collections, function(collection) { 123 | return collection.toLowerCase(); 124 | }); 125 | } 126 | autoAssociations = !(autoAssociations === false); 127 | var that = this; 128 | 129 | // Populate each table / collection 130 | async[preserveLoadOrder ? 'eachSeries' : 'each'](collections, function(modelName, nextModel) { 131 | var Model = sails.models[modelName]; 132 | if (Model) { 133 | // Cleanup existing data in the table / collection 134 | Model.destroy().exec(function(err) { 135 | if (err) 136 | return nextModel(err); 137 | 138 | // Save model's association information 139 | that.associations[modelName] = {}; 140 | for (var i = 0; i < Model.associations.length; i++) { 141 | var alias = Model.associations[i].alias; 142 | that.associations[modelName][alias] = Model.associations[i]; 143 | that.associations[modelName][alias].required = !!(Model._validator.validations[alias].required); 144 | } 145 | 146 | // Insert all the fixture items 147 | that.idMap[modelName] = []; 148 | var fixtureObjects = _.cloneDeep(that.data[modelName]); 149 | async.each(fixtureObjects, function(item, nextItem) { 150 | // Item position in the file 151 | var itemIndex = fixtureObjects.indexOf(item); 152 | 153 | for (var alias in that.associations[modelName]) { 154 | if (that.associations[modelName][alias].required) { 155 | // With required associations present, the associated fixtures 156 | // must be already loaded, so we can map the ids 157 | var collectionName = that.associations[modelName][alias].collection; // many-to-many 158 | var associatedModelName = that.associations[modelName][alias].model; // one-to-many 159 | 160 | if ((_.isArray(item[alias]))&&(collectionName)) { 161 | if (!that.idMap[collectionName]) 162 | return nextItem(new Error('Please provide a loading order acceptable for required associations')); 163 | for (var i = 0; i < item[alias].length; i++) { 164 | item[alias][i] = that.idMap[collectionName][item[alias][i] - 1]; 165 | } 166 | } else if (associatedModelName) { 167 | if (!that.idMap[associatedModelName]) 168 | return nextItem(new Error('Please provide a loading order acceptable for required associations')); 169 | item[alias] = that.idMap[associatedModelName][item[alias] - 1]; 170 | } 171 | } else if (autoAssociations) { 172 | // The order is not important, so we can strip 173 | // associations data and associate later 174 | item = _.omit(item, alias); 175 | } 176 | } 177 | 178 | // Insert 179 | Model.create(item).exec(function(err, model) { 180 | if (err) 181 | return nextItem(err); 182 | 183 | // Primary key mapping 184 | that.idMap[modelName][itemIndex] = model[Model.primaryKey]; 185 | 186 | nextItem(); 187 | }); 188 | }, nextModel); 189 | }); 190 | } else { 191 | nextModel(); 192 | } 193 | }, function(err) { 194 | if (err) 195 | return done(err); 196 | 197 | // Create associations if requested 198 | if (autoAssociations) 199 | return that.associate(collections, done); 200 | 201 | done(); 202 | }); 203 | }; 204 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "barrels", 3 | "version": "1.6.6", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@sailshq/lodash": { 8 | "version": "3.10.4", 9 | "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.4.tgz", 10 | "integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q==", 11 | "dev": true 12 | }, 13 | "accepts": { 14 | "version": "1.3.7", 15 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 16 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 17 | "dev": true, 18 | "requires": { 19 | "mime-types": "~2.1.24", 20 | "negotiator": "0.6.2" 21 | } 22 | }, 23 | "anchor": { 24 | "version": "1.4.0", 25 | "resolved": "https://registry.npmjs.org/anchor/-/anchor-1.4.0.tgz", 26 | "integrity": "sha512-xEu0UWxNa3p5v3MmXN9id5tsMSiniCyzWamf/R3KRkJieSRdXdAWu0Z+tXIpDZbbVLWZSMnD1VEguuYX2s9xag==", 27 | "dev": true, 28 | "requires": { 29 | "@sailshq/lodash": "^3.10.2", 30 | "validator": "5.7.0" 31 | } 32 | }, 33 | "ansi-regex": { 34 | "version": "2.1.1", 35 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 36 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 37 | "dev": true 38 | }, 39 | "ansi-styles": { 40 | "version": "2.2.1", 41 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 42 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 43 | "dev": true 44 | }, 45 | "array-filter": { 46 | "version": "1.0.0", 47 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", 48 | "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", 49 | "dev": true 50 | }, 51 | "array-flatten": { 52 | "version": "1.1.1", 53 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 54 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 55 | "dev": true 56 | }, 57 | "async": { 58 | "version": "1.5.2", 59 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 60 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 61 | }, 62 | "available-typed-arrays": { 63 | "version": "1.0.2", 64 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", 65 | "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", 66 | "dev": true, 67 | "requires": { 68 | "array-filter": "^1.0.0" 69 | } 70 | }, 71 | "balanced-match": { 72 | "version": "1.0.0", 73 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 74 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 75 | "dev": true 76 | }, 77 | "bluebird": { 78 | "version": "3.2.1", 79 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz", 80 | "integrity": "sha1-POzzUEkEwwzj55wXCHfok6EZEP0=", 81 | "dev": true 82 | }, 83 | "body-parser": { 84 | "version": "1.19.0", 85 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 86 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 87 | "dev": true, 88 | "requires": { 89 | "bytes": "3.1.0", 90 | "content-type": "~1.0.4", 91 | "debug": "2.6.9", 92 | "depd": "~1.1.2", 93 | "http-errors": "1.7.2", 94 | "iconv-lite": "0.4.24", 95 | "on-finished": "~2.3.0", 96 | "qs": "6.7.0", 97 | "raw-body": "2.4.0", 98 | "type-is": "~1.6.17" 99 | }, 100 | "dependencies": { 101 | "bytes": { 102 | "version": "3.1.0", 103 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 104 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 105 | "dev": true 106 | }, 107 | "debug": { 108 | "version": "2.6.9", 109 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 110 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 111 | "dev": true, 112 | "requires": { 113 | "ms": "2.0.0" 114 | } 115 | }, 116 | "http-errors": { 117 | "version": "1.7.2", 118 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 119 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 120 | "dev": true, 121 | "requires": { 122 | "depd": "~1.1.2", 123 | "inherits": "2.0.3", 124 | "setprototypeof": "1.1.1", 125 | "statuses": ">= 1.5.0 < 2", 126 | "toidentifier": "1.0.0" 127 | } 128 | }, 129 | "inherits": { 130 | "version": "2.0.3", 131 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 132 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 133 | "dev": true 134 | }, 135 | "ms": { 136 | "version": "2.0.0", 137 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 138 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 139 | "dev": true 140 | }, 141 | "statuses": { 142 | "version": "1.5.0", 143 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 144 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 145 | "dev": true 146 | } 147 | } 148 | }, 149 | "brace-expansion": { 150 | "version": "1.1.11", 151 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 152 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 153 | "dev": true, 154 | "requires": { 155 | "balanced-match": "^1.0.0", 156 | "concat-map": "0.0.1" 157 | } 158 | }, 159 | "buffer-from": { 160 | "version": "1.1.1", 161 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 162 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 163 | "dev": true 164 | }, 165 | "bytes": { 166 | "version": "3.0.0", 167 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 168 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", 169 | "dev": true 170 | }, 171 | "call-bind": { 172 | "version": "1.0.0", 173 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", 174 | "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", 175 | "dev": true, 176 | "requires": { 177 | "function-bind": "^1.1.1", 178 | "get-intrinsic": "^1.0.0" 179 | } 180 | }, 181 | "camelcase": { 182 | "version": "1.2.1", 183 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 184 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 185 | "dev": true 186 | }, 187 | "captains-log": { 188 | "version": "2.0.3", 189 | "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.3.tgz", 190 | "integrity": "sha512-hKlNLw/4Qz1vPDhAbn3pRexi8fzY7d3SwX/BtI2lMG09UqK1W1mf2pYFslau3ZPWxdcwBBcsLLi9ngs+xhqD2Q==", 191 | "dev": true, 192 | "requires": { 193 | "@sailshq/lodash": "^3.10.2", 194 | "chalk": "1.1.3", 195 | "rc": "1.2.8", 196 | "semver": "5.4.1" 197 | }, 198 | "dependencies": { 199 | "chalk": { 200 | "version": "1.1.3", 201 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 202 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 203 | "dev": true, 204 | "requires": { 205 | "ansi-styles": "^2.2.1", 206 | "escape-string-regexp": "^1.0.2", 207 | "has-ansi": "^2.0.0", 208 | "strip-ansi": "^3.0.0", 209 | "supports-color": "^2.0.0" 210 | } 211 | }, 212 | "semver": { 213 | "version": "5.4.1", 214 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 215 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 216 | "dev": true 217 | }, 218 | "supports-color": { 219 | "version": "2.0.0", 220 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 221 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 222 | "dev": true 223 | } 224 | } 225 | }, 226 | "chalk": { 227 | "version": "2.3.0", 228 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 229 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 230 | "dev": true, 231 | "requires": { 232 | "ansi-styles": "^3.1.0", 233 | "escape-string-regexp": "^1.0.5", 234 | "supports-color": "^4.0.0" 235 | }, 236 | "dependencies": { 237 | "ansi-styles": { 238 | "version": "3.2.1", 239 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 240 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 241 | "dev": true, 242 | "requires": { 243 | "color-convert": "^1.9.0" 244 | } 245 | }, 246 | "escape-string-regexp": { 247 | "version": "1.0.5", 248 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 249 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 250 | "dev": true 251 | }, 252 | "supports-color": { 253 | "version": "4.5.0", 254 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 255 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 256 | "dev": true, 257 | "requires": { 258 | "has-flag": "^2.0.0" 259 | } 260 | } 261 | } 262 | }, 263 | "color-convert": { 264 | "version": "1.9.3", 265 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 266 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 267 | "dev": true, 268 | "requires": { 269 | "color-name": "1.1.3" 270 | } 271 | }, 272 | "color-name": { 273 | "version": "1.1.3", 274 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 275 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 276 | "dev": true 277 | }, 278 | "colors": { 279 | "version": "0.6.2", 280 | "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", 281 | "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", 282 | "dev": true 283 | }, 284 | "commander": { 285 | "version": "2.3.0", 286 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", 287 | "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", 288 | "dev": true 289 | }, 290 | "common-js-file-extensions": { 291 | "version": "1.0.2", 292 | "resolved": "https://registry.npmjs.org/common-js-file-extensions/-/common-js-file-extensions-1.0.2.tgz", 293 | "integrity": "sha1-Hs8ThwARVtpoD1gUmovpvrgEvx4=", 294 | "dev": true 295 | }, 296 | "compressible": { 297 | "version": "2.0.18", 298 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", 299 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", 300 | "dev": true, 301 | "requires": { 302 | "mime-db": ">= 1.43.0 < 2" 303 | } 304 | }, 305 | "compression": { 306 | "version": "1.7.1", 307 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", 308 | "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", 309 | "dev": true, 310 | "requires": { 311 | "accepts": "~1.3.4", 312 | "bytes": "3.0.0", 313 | "compressible": "~2.0.11", 314 | "debug": "2.6.9", 315 | "on-headers": "~1.0.1", 316 | "safe-buffer": "5.1.1", 317 | "vary": "~1.1.2" 318 | }, 319 | "dependencies": { 320 | "debug": { 321 | "version": "2.6.9", 322 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 323 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 324 | "dev": true, 325 | "requires": { 326 | "ms": "2.0.0" 327 | } 328 | }, 329 | "ms": { 330 | "version": "2.0.0", 331 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 332 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 333 | "dev": true 334 | }, 335 | "safe-buffer": { 336 | "version": "5.1.1", 337 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 338 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 339 | "dev": true 340 | } 341 | } 342 | }, 343 | "concat-map": { 344 | "version": "0.0.1", 345 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 346 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 347 | "dev": true 348 | }, 349 | "concat-stream": { 350 | "version": "1.6.2", 351 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 352 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 353 | "dev": true, 354 | "requires": { 355 | "buffer-from": "^1.0.0", 356 | "inherits": "^2.0.3", 357 | "readable-stream": "^2.2.2", 358 | "typedarray": "^0.0.6" 359 | } 360 | }, 361 | "connect": { 362 | "version": "3.6.5", 363 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", 364 | "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", 365 | "dev": true, 366 | "requires": { 367 | "debug": "2.6.9", 368 | "finalhandler": "1.0.6", 369 | "parseurl": "~1.3.2", 370 | "utils-merge": "1.0.1" 371 | }, 372 | "dependencies": { 373 | "debug": { 374 | "version": "2.6.9", 375 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 376 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 377 | "dev": true, 378 | "requires": { 379 | "ms": "2.0.0" 380 | } 381 | }, 382 | "ms": { 383 | "version": "2.0.0", 384 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 385 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 386 | "dev": true 387 | } 388 | } 389 | }, 390 | "content-disposition": { 391 | "version": "0.5.3", 392 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 393 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 394 | "dev": true, 395 | "requires": { 396 | "safe-buffer": "5.1.2" 397 | } 398 | }, 399 | "content-type": { 400 | "version": "1.0.4", 401 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 402 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 403 | "dev": true 404 | }, 405 | "cookie": { 406 | "version": "0.4.0", 407 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 408 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", 409 | "dev": true 410 | }, 411 | "cookie-parser": { 412 | "version": "1.4.4", 413 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz", 414 | "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==", 415 | "dev": true, 416 | "requires": { 417 | "cookie": "0.3.1", 418 | "cookie-signature": "1.0.6" 419 | }, 420 | "dependencies": { 421 | "cookie": { 422 | "version": "0.3.1", 423 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 424 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 425 | "dev": true 426 | }, 427 | "cookie-signature": { 428 | "version": "1.0.6", 429 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 430 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 431 | "dev": true 432 | } 433 | } 434 | }, 435 | "cookie-signature": { 436 | "version": "1.1.0", 437 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz", 438 | "integrity": "sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A==", 439 | "dev": true 440 | }, 441 | "core-util-is": { 442 | "version": "1.0.2", 443 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 444 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 445 | "dev": true 446 | }, 447 | "cross-spawn": { 448 | "version": "2.0.1", 449 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.0.1.tgz", 450 | "integrity": "sha1-q2/Yk6CZdZ2bhSIOOmQ5felGsPY=", 451 | "dev": true, 452 | "requires": { 453 | "cross-spawn-async": "^2.0.0", 454 | "spawn-sync": "1.0.13" 455 | } 456 | }, 457 | "cross-spawn-async": { 458 | "version": "2.2.5", 459 | "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", 460 | "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", 461 | "dev": true, 462 | "requires": { 463 | "lru-cache": "^4.0.0", 464 | "which": "^1.2.8" 465 | }, 466 | "dependencies": { 467 | "lru-cache": { 468 | "version": "4.1.5", 469 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 470 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 471 | "dev": true, 472 | "requires": { 473 | "pseudomap": "^1.0.2", 474 | "yallist": "^2.1.2" 475 | } 476 | }, 477 | "which": { 478 | "version": "1.3.1", 479 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 480 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 481 | "dev": true, 482 | "requires": { 483 | "isexe": "^2.0.0" 484 | } 485 | } 486 | } 487 | }, 488 | "csrf": { 489 | "version": "3.1.0", 490 | "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz", 491 | "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==", 492 | "dev": true, 493 | "requires": { 494 | "rndm": "1.2.0", 495 | "tsscmp": "1.0.6", 496 | "uid-safe": "2.1.5" 497 | } 498 | }, 499 | "csurf": { 500 | "version": "1.10.0", 501 | "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.10.0.tgz", 502 | "integrity": "sha512-fh725p0R83wA5JukCik5hdEko/LizW/Vl7pkKDa1WJUVCosg141mqaAWCScB+nkEaRMFMGbutHMOr6oBNc/j9A==", 503 | "dev": true, 504 | "requires": { 505 | "cookie": "0.3.1", 506 | "cookie-signature": "1.0.6", 507 | "csrf": "3.1.0", 508 | "http-errors": "~1.7.2" 509 | }, 510 | "dependencies": { 511 | "cookie": { 512 | "version": "0.3.1", 513 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 514 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 515 | "dev": true 516 | }, 517 | "cookie-signature": { 518 | "version": "1.0.6", 519 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 520 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 521 | "dev": true 522 | } 523 | } 524 | }, 525 | "cycle": { 526 | "version": "1.0.3", 527 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 528 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", 529 | "dev": true 530 | }, 531 | "debug": { 532 | "version": "2.2.0", 533 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 534 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 535 | "dev": true, 536 | "requires": { 537 | "ms": "0.7.1" 538 | } 539 | }, 540 | "decamelize": { 541 | "version": "1.2.0", 542 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 543 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 544 | "dev": true 545 | }, 546 | "deep-equal": { 547 | "version": "2.0.5", 548 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", 549 | "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", 550 | "dev": true, 551 | "requires": { 552 | "call-bind": "^1.0.0", 553 | "es-get-iterator": "^1.1.1", 554 | "get-intrinsic": "^1.0.1", 555 | "is-arguments": "^1.0.4", 556 | "is-date-object": "^1.0.2", 557 | "is-regex": "^1.1.1", 558 | "isarray": "^2.0.5", 559 | "object-is": "^1.1.4", 560 | "object-keys": "^1.1.1", 561 | "object.assign": "^4.1.2", 562 | "regexp.prototype.flags": "^1.3.0", 563 | "side-channel": "^1.0.3", 564 | "which-boxed-primitive": "^1.0.1", 565 | "which-collection": "^1.0.1", 566 | "which-typed-array": "^1.1.2" 567 | }, 568 | "dependencies": { 569 | "isarray": { 570 | "version": "2.0.5", 571 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 572 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 573 | "dev": true 574 | } 575 | } 576 | }, 577 | "deep-extend": { 578 | "version": "0.6.0", 579 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 580 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 581 | "dev": true 582 | }, 583 | "define-properties": { 584 | "version": "1.1.3", 585 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 586 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 587 | "dev": true, 588 | "requires": { 589 | "object-keys": "^1.0.12" 590 | } 591 | }, 592 | "depd": { 593 | "version": "1.1.2", 594 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 595 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 596 | "dev": true 597 | }, 598 | "destroy": { 599 | "version": "1.0.4", 600 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 601 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 602 | "dev": true 603 | }, 604 | "diff": { 605 | "version": "1.4.0", 606 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", 607 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", 608 | "dev": true 609 | }, 610 | "double-ended-queue": { 611 | "version": "2.1.0-0", 612 | "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", 613 | "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", 614 | "dev": true 615 | }, 616 | "ee-first": { 617 | "version": "1.1.1", 618 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 619 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 620 | "dev": true 621 | }, 622 | "ejs": { 623 | "version": "2.5.7", 624 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", 625 | "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", 626 | "dev": true 627 | }, 628 | "encodeurl": { 629 | "version": "1.0.2", 630 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 631 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 632 | "dev": true 633 | }, 634 | "es-abstract": { 635 | "version": "1.17.7", 636 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 637 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 638 | "dev": true, 639 | "requires": { 640 | "es-to-primitive": "^1.2.1", 641 | "function-bind": "^1.1.1", 642 | "has": "^1.0.3", 643 | "has-symbols": "^1.0.1", 644 | "is-callable": "^1.2.2", 645 | "is-regex": "^1.1.1", 646 | "object-inspect": "^1.8.0", 647 | "object-keys": "^1.1.1", 648 | "object.assign": "^4.1.1", 649 | "string.prototype.trimend": "^1.0.1", 650 | "string.prototype.trimstart": "^1.0.1" 651 | } 652 | }, 653 | "es-get-iterator": { 654 | "version": "1.1.1", 655 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", 656 | "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", 657 | "dev": true, 658 | "requires": { 659 | "call-bind": "^1.0.0", 660 | "get-intrinsic": "^1.0.1", 661 | "has-symbols": "^1.0.1", 662 | "is-arguments": "^1.0.4", 663 | "is-map": "^2.0.1", 664 | "is-set": "^2.0.1", 665 | "is-string": "^1.0.5", 666 | "isarray": "^2.0.5" 667 | }, 668 | "dependencies": { 669 | "isarray": { 670 | "version": "2.0.5", 671 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 672 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 673 | "dev": true 674 | } 675 | } 676 | }, 677 | "es-to-primitive": { 678 | "version": "1.2.1", 679 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 680 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 681 | "dev": true, 682 | "requires": { 683 | "is-callable": "^1.1.4", 684 | "is-date-object": "^1.0.1", 685 | "is-symbol": "^1.0.2" 686 | } 687 | }, 688 | "escape-html": { 689 | "version": "1.0.3", 690 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 691 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 692 | "dev": true 693 | }, 694 | "escape-string-regexp": { 695 | "version": "1.0.2", 696 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", 697 | "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", 698 | "dev": true 699 | }, 700 | "etag": { 701 | "version": "1.8.1", 702 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 703 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 704 | "dev": true 705 | }, 706 | "express": { 707 | "version": "4.17.1", 708 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 709 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 710 | "dev": true, 711 | "requires": { 712 | "accepts": "~1.3.7", 713 | "array-flatten": "1.1.1", 714 | "body-parser": "1.19.0", 715 | "content-disposition": "0.5.3", 716 | "content-type": "~1.0.4", 717 | "cookie": "0.4.0", 718 | "cookie-signature": "1.0.6", 719 | "debug": "2.6.9", 720 | "depd": "~1.1.2", 721 | "encodeurl": "~1.0.2", 722 | "escape-html": "~1.0.3", 723 | "etag": "~1.8.1", 724 | "finalhandler": "~1.1.2", 725 | "fresh": "0.5.2", 726 | "merge-descriptors": "1.0.1", 727 | "methods": "~1.1.2", 728 | "on-finished": "~2.3.0", 729 | "parseurl": "~1.3.3", 730 | "path-to-regexp": "0.1.7", 731 | "proxy-addr": "~2.0.5", 732 | "qs": "6.7.0", 733 | "range-parser": "~1.2.1", 734 | "safe-buffer": "5.1.2", 735 | "send": "0.17.1", 736 | "serve-static": "1.14.1", 737 | "setprototypeof": "1.1.1", 738 | "statuses": "~1.5.0", 739 | "type-is": "~1.6.18", 740 | "utils-merge": "1.0.1", 741 | "vary": "~1.1.2" 742 | }, 743 | "dependencies": { 744 | "cookie-signature": { 745 | "version": "1.0.6", 746 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 747 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 748 | "dev": true 749 | }, 750 | "debug": { 751 | "version": "2.6.9", 752 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 753 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 754 | "dev": true, 755 | "requires": { 756 | "ms": "2.0.0" 757 | } 758 | }, 759 | "finalhandler": { 760 | "version": "1.1.2", 761 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 762 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 763 | "dev": true, 764 | "requires": { 765 | "debug": "2.6.9", 766 | "encodeurl": "~1.0.2", 767 | "escape-html": "~1.0.3", 768 | "on-finished": "~2.3.0", 769 | "parseurl": "~1.3.3", 770 | "statuses": "~1.5.0", 771 | "unpipe": "~1.0.0" 772 | } 773 | }, 774 | "ms": { 775 | "version": "2.0.0", 776 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 777 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 778 | "dev": true 779 | }, 780 | "parseurl": { 781 | "version": "1.3.3", 782 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 783 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 784 | "dev": true 785 | }, 786 | "path-to-regexp": { 787 | "version": "0.1.7", 788 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 789 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 790 | "dev": true 791 | }, 792 | "serve-static": { 793 | "version": "1.14.1", 794 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 795 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 796 | "dev": true, 797 | "requires": { 798 | "encodeurl": "~1.0.2", 799 | "escape-html": "~1.0.3", 800 | "parseurl": "~1.3.3", 801 | "send": "0.17.1" 802 | } 803 | }, 804 | "statuses": { 805 | "version": "1.5.0", 806 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 807 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 808 | "dev": true 809 | } 810 | } 811 | }, 812 | "express-session": { 813 | "version": "1.17.0", 814 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz", 815 | "integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==", 816 | "dev": true, 817 | "requires": { 818 | "cookie": "0.4.0", 819 | "cookie-signature": "1.0.6", 820 | "debug": "2.6.9", 821 | "depd": "~2.0.0", 822 | "on-headers": "~1.0.2", 823 | "parseurl": "~1.3.3", 824 | "safe-buffer": "5.2.0", 825 | "uid-safe": "~2.1.5" 826 | }, 827 | "dependencies": { 828 | "cookie-signature": { 829 | "version": "1.0.6", 830 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 831 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 832 | "dev": true 833 | }, 834 | "debug": { 835 | "version": "2.6.9", 836 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 837 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 838 | "dev": true, 839 | "requires": { 840 | "ms": "2.0.0" 841 | } 842 | }, 843 | "depd": { 844 | "version": "2.0.0", 845 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 846 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 847 | "dev": true 848 | }, 849 | "ms": { 850 | "version": "2.0.0", 851 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 852 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 853 | "dev": true 854 | }, 855 | "parseurl": { 856 | "version": "1.3.3", 857 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 858 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 859 | "dev": true 860 | }, 861 | "safe-buffer": { 862 | "version": "5.2.0", 863 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 864 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", 865 | "dev": true 866 | } 867 | } 868 | }, 869 | "eyes": { 870 | "version": "0.1.8", 871 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 872 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", 873 | "dev": true 874 | }, 875 | "fd-slicer": { 876 | "version": "1.0.1", 877 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", 878 | "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", 879 | "dev": true, 880 | "requires": { 881 | "pend": "~1.2.0" 882 | } 883 | }, 884 | "finalhandler": { 885 | "version": "1.0.6", 886 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", 887 | "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", 888 | "dev": true, 889 | "requires": { 890 | "debug": "2.6.9", 891 | "encodeurl": "~1.0.1", 892 | "escape-html": "~1.0.3", 893 | "on-finished": "~2.3.0", 894 | "parseurl": "~1.3.2", 895 | "statuses": "~1.3.1", 896 | "unpipe": "~1.0.0" 897 | }, 898 | "dependencies": { 899 | "debug": { 900 | "version": "2.6.9", 901 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 902 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 903 | "dev": true, 904 | "requires": { 905 | "ms": "2.0.0" 906 | } 907 | }, 908 | "ms": { 909 | "version": "2.0.0", 910 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 911 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 912 | "dev": true 913 | } 914 | } 915 | }, 916 | "flaverr": { 917 | "version": "1.10.0", 918 | "resolved": "https://registry.npmjs.org/flaverr/-/flaverr-1.10.0.tgz", 919 | "integrity": "sha512-POaguCzNjWKEKsBkks4YGgNv1LVUqTX4MTudca5ArQAxtBrPswQLAW8la4Hbo0EZy9tpU3a9WwsKdAACqZnE/Q==", 920 | "dev": true, 921 | "requires": { 922 | "@sailshq/lodash": "^3.10.2" 923 | } 924 | }, 925 | "foreach": { 926 | "version": "2.0.5", 927 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 928 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 929 | "dev": true 930 | }, 931 | "forwarded": { 932 | "version": "0.1.2", 933 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 934 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", 935 | "dev": true 936 | }, 937 | "fresh": { 938 | "version": "0.5.2", 939 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 940 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 941 | "dev": true 942 | }, 943 | "fs-extra": { 944 | "version": "0.30.0", 945 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", 946 | "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", 947 | "dev": true, 948 | "requires": { 949 | "graceful-fs": "^4.1.2", 950 | "jsonfile": "^2.1.0", 951 | "klaw": "^1.0.0", 952 | "path-is-absolute": "^1.0.0", 953 | "rimraf": "^2.2.8" 954 | } 955 | }, 956 | "fs.realpath": { 957 | "version": "1.0.0", 958 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 959 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 960 | "dev": true 961 | }, 962 | "function-bind": { 963 | "version": "1.1.1", 964 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 965 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 966 | "dev": true 967 | }, 968 | "get-intrinsic": { 969 | "version": "1.0.1", 970 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", 971 | "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", 972 | "dev": true, 973 | "requires": { 974 | "function-bind": "^1.1.1", 975 | "has": "^1.0.3", 976 | "has-symbols": "^1.0.1" 977 | } 978 | }, 979 | "glob": { 980 | "version": "3.2.11", 981 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 982 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", 983 | "dev": true, 984 | "requires": { 985 | "inherits": "2", 986 | "minimatch": "0.3" 987 | } 988 | }, 989 | "graceful-fs": { 990 | "version": "4.2.4", 991 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 992 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 993 | "dev": true 994 | }, 995 | "graceful-readlink": { 996 | "version": "1.0.1", 997 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 998 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 999 | "dev": true 1000 | }, 1001 | "growl": { 1002 | "version": "1.9.2", 1003 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 1004 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 1005 | "dev": true 1006 | }, 1007 | "has": { 1008 | "version": "1.0.3", 1009 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1010 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1011 | "dev": true, 1012 | "requires": { 1013 | "function-bind": "^1.1.1" 1014 | } 1015 | }, 1016 | "has-ansi": { 1017 | "version": "2.0.0", 1018 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1019 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1020 | "dev": true, 1021 | "requires": { 1022 | "ansi-regex": "^2.0.0" 1023 | } 1024 | }, 1025 | "has-flag": { 1026 | "version": "2.0.0", 1027 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1028 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 1029 | "dev": true 1030 | }, 1031 | "has-symbols": { 1032 | "version": "1.0.1", 1033 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1034 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 1035 | "dev": true 1036 | }, 1037 | "http-errors": { 1038 | "version": "1.7.3", 1039 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 1040 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 1041 | "dev": true, 1042 | "requires": { 1043 | "depd": "~1.1.2", 1044 | "inherits": "2.0.4", 1045 | "setprototypeof": "1.1.1", 1046 | "statuses": ">= 1.5.0 < 2", 1047 | "toidentifier": "1.0.0" 1048 | }, 1049 | "dependencies": { 1050 | "statuses": { 1051 | "version": "1.5.0", 1052 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1053 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1054 | "dev": true 1055 | } 1056 | } 1057 | }, 1058 | "i": { 1059 | "version": "0.3.7", 1060 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", 1061 | "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", 1062 | "dev": true 1063 | }, 1064 | "i18n-2": { 1065 | "version": "0.7.3", 1066 | "resolved": "https://registry.npmjs.org/i18n-2/-/i18n-2-0.7.3.tgz", 1067 | "integrity": "sha512-NiC0dd+VAVGq/hWsK19XCTwfx7Xr0KPtldQ11/9DHY8Ic4++bbgRhjCvRD1C/K09V7UZpwgVhQuzPPom9XVrOQ==", 1068 | "dev": true, 1069 | "requires": { 1070 | "debug": "^3.1.0", 1071 | "sprintf-js": "^1.1.1" 1072 | }, 1073 | "dependencies": { 1074 | "debug": { 1075 | "version": "3.2.7", 1076 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1077 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1078 | "dev": true, 1079 | "requires": { 1080 | "ms": "^2.1.1" 1081 | } 1082 | }, 1083 | "ms": { 1084 | "version": "2.1.3", 1085 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1086 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1087 | "dev": true 1088 | } 1089 | } 1090 | }, 1091 | "iconv-lite": { 1092 | "version": "0.4.24", 1093 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1094 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1095 | "dev": true, 1096 | "requires": { 1097 | "safer-buffer": ">= 2.1.2 < 3" 1098 | } 1099 | }, 1100 | "include-all": { 1101 | "version": "4.0.3", 1102 | "resolved": "https://registry.npmjs.org/include-all/-/include-all-4.0.3.tgz", 1103 | "integrity": "sha1-ZfBujxGJSxp7XsH8l+azOS98+nU=", 1104 | "dev": true, 1105 | "requires": { 1106 | "@sailshq/lodash": "^3.10.2", 1107 | "merge-dictionaries": "^0.0.3" 1108 | }, 1109 | "dependencies": { 1110 | "merge-dictionaries": { 1111 | "version": "0.0.3", 1112 | "resolved": "https://registry.npmjs.org/merge-dictionaries/-/merge-dictionaries-0.0.3.tgz", 1113 | "integrity": "sha1-xN5NWNuyXkwoI6owy44VOQaet1c=", 1114 | "dev": true, 1115 | "requires": { 1116 | "@sailshq/lodash": "^3.10.2" 1117 | } 1118 | } 1119 | } 1120 | }, 1121 | "inflight": { 1122 | "version": "1.0.6", 1123 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1124 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1125 | "dev": true, 1126 | "requires": { 1127 | "once": "^1.3.0", 1128 | "wrappy": "1" 1129 | } 1130 | }, 1131 | "inherits": { 1132 | "version": "2.0.4", 1133 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1134 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1135 | "dev": true 1136 | }, 1137 | "ini": { 1138 | "version": "1.3.8", 1139 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1140 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1141 | "dev": true 1142 | }, 1143 | "ipaddr.js": { 1144 | "version": "1.9.1", 1145 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1146 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 1147 | "dev": true 1148 | }, 1149 | "is-absolute": { 1150 | "version": "0.1.7", 1151 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", 1152 | "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", 1153 | "dev": true, 1154 | "requires": { 1155 | "is-relative": "^0.1.0" 1156 | } 1157 | }, 1158 | "is-arguments": { 1159 | "version": "1.1.0", 1160 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", 1161 | "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", 1162 | "dev": true, 1163 | "requires": { 1164 | "call-bind": "^1.0.0" 1165 | } 1166 | }, 1167 | "is-bigint": { 1168 | "version": "1.0.1", 1169 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", 1170 | "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", 1171 | "dev": true 1172 | }, 1173 | "is-boolean-object": { 1174 | "version": "1.1.0", 1175 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", 1176 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", 1177 | "dev": true, 1178 | "requires": { 1179 | "call-bind": "^1.0.0" 1180 | } 1181 | }, 1182 | "is-callable": { 1183 | "version": "1.2.2", 1184 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 1185 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", 1186 | "dev": true 1187 | }, 1188 | "is-date-object": { 1189 | "version": "1.0.2", 1190 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1191 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 1192 | "dev": true 1193 | }, 1194 | "is-map": { 1195 | "version": "2.0.1", 1196 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", 1197 | "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", 1198 | "dev": true 1199 | }, 1200 | "is-negative-zero": { 1201 | "version": "2.0.1", 1202 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1203 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", 1204 | "dev": true 1205 | }, 1206 | "is-number-object": { 1207 | "version": "1.0.4", 1208 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", 1209 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", 1210 | "dev": true 1211 | }, 1212 | "is-regex": { 1213 | "version": "1.1.1", 1214 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1215 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1216 | "dev": true, 1217 | "requires": { 1218 | "has-symbols": "^1.0.1" 1219 | } 1220 | }, 1221 | "is-relative": { 1222 | "version": "0.1.3", 1223 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", 1224 | "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", 1225 | "dev": true 1226 | }, 1227 | "is-set": { 1228 | "version": "2.0.1", 1229 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", 1230 | "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", 1231 | "dev": true 1232 | }, 1233 | "is-string": { 1234 | "version": "1.0.5", 1235 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1236 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1237 | "dev": true 1238 | }, 1239 | "is-symbol": { 1240 | "version": "1.0.3", 1241 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1242 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1243 | "dev": true, 1244 | "requires": { 1245 | "has-symbols": "^1.0.1" 1246 | } 1247 | }, 1248 | "is-typed-array": { 1249 | "version": "1.1.4", 1250 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.4.tgz", 1251 | "integrity": "sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA==", 1252 | "dev": true, 1253 | "requires": { 1254 | "available-typed-arrays": "^1.0.2", 1255 | "call-bind": "^1.0.0", 1256 | "es-abstract": "^1.18.0-next.1", 1257 | "foreach": "^2.0.5", 1258 | "has-symbols": "^1.0.1" 1259 | }, 1260 | "dependencies": { 1261 | "es-abstract": { 1262 | "version": "1.18.0-next.1", 1263 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 1264 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 1265 | "dev": true, 1266 | "requires": { 1267 | "es-to-primitive": "^1.2.1", 1268 | "function-bind": "^1.1.1", 1269 | "has": "^1.0.3", 1270 | "has-symbols": "^1.0.1", 1271 | "is-callable": "^1.2.2", 1272 | "is-negative-zero": "^2.0.0", 1273 | "is-regex": "^1.1.1", 1274 | "object-inspect": "^1.8.0", 1275 | "object-keys": "^1.1.1", 1276 | "object.assign": "^4.1.1", 1277 | "string.prototype.trimend": "^1.0.1", 1278 | "string.prototype.trimstart": "^1.0.1" 1279 | } 1280 | } 1281 | } 1282 | }, 1283 | "is-weakmap": { 1284 | "version": "2.0.1", 1285 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 1286 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", 1287 | "dev": true 1288 | }, 1289 | "is-weakset": { 1290 | "version": "2.0.1", 1291 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", 1292 | "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", 1293 | "dev": true 1294 | }, 1295 | "is-wsl": { 1296 | "version": "1.1.0", 1297 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 1298 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", 1299 | "dev": true 1300 | }, 1301 | "isarray": { 1302 | "version": "1.0.0", 1303 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1304 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1305 | "dev": true 1306 | }, 1307 | "isexe": { 1308 | "version": "2.0.0", 1309 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1310 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1311 | "dev": true 1312 | }, 1313 | "isstream": { 1314 | "version": "0.1.2", 1315 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1316 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 1317 | "dev": true 1318 | }, 1319 | "jade": { 1320 | "version": "0.26.3", 1321 | "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", 1322 | "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", 1323 | "dev": true, 1324 | "requires": { 1325 | "commander": "0.6.1", 1326 | "mkdirp": "0.3.0" 1327 | }, 1328 | "dependencies": { 1329 | "commander": { 1330 | "version": "0.6.1", 1331 | "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", 1332 | "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", 1333 | "dev": true 1334 | }, 1335 | "mkdirp": { 1336 | "version": "0.3.0", 1337 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", 1338 | "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", 1339 | "dev": true 1340 | } 1341 | } 1342 | }, 1343 | "jsonfile": { 1344 | "version": "2.4.0", 1345 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", 1346 | "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", 1347 | "dev": true, 1348 | "requires": { 1349 | "graceful-fs": "^4.1.6" 1350 | } 1351 | }, 1352 | "klaw": { 1353 | "version": "1.3.1", 1354 | "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", 1355 | "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", 1356 | "dev": true, 1357 | "requires": { 1358 | "graceful-fs": "^4.1.9" 1359 | } 1360 | }, 1361 | "lodash": { 1362 | "version": "4.17.21", 1363 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1364 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1365 | }, 1366 | "lru-cache": { 1367 | "version": "2.7.3", 1368 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 1369 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 1370 | "dev": true 1371 | }, 1372 | "machine": { 1373 | "version": "15.2.2", 1374 | "resolved": "https://registry.npmjs.org/machine/-/machine-15.2.2.tgz", 1375 | "integrity": "sha512-gXA/U4bjMyQd2QPw8i+AxzXEDkQBImQVE2P7mmTmXPcfszT+NJc5Me0I1Tn6Fj8zsO5EsmsFxD8Xdia751ik/w==", 1376 | "dev": true, 1377 | "requires": { 1378 | "@sailshq/lodash": "^3.10.2", 1379 | "anchor": "^1.2.0", 1380 | "flaverr": "^1.7.0", 1381 | "parley": "^3.8.0", 1382 | "rttc": "^10.0.0-3" 1383 | } 1384 | }, 1385 | "machine-as-action": { 1386 | "version": "10.3.1", 1387 | "resolved": "https://registry.npmjs.org/machine-as-action/-/machine-as-action-10.3.1.tgz", 1388 | "integrity": "sha512-IrX+kSjt4XQTxmZ+7/SJUvRJbwcZ2BqFlwwXLZIjYQmKTyd0vV4ZmKdbNZtrEKD1ZmqgtKSgHaxBET+XQU333A==", 1389 | "dev": true, 1390 | "requires": { 1391 | "@sailshq/lodash": "^3.10.2", 1392 | "flaverr": "^1.5.1", 1393 | "machine": "^15.2.2", 1394 | "rttc": "^10.0.0-4", 1395 | "streamifier": "0.1.1" 1396 | } 1397 | }, 1398 | "machinepack-process": { 1399 | "version": "4.0.1", 1400 | "resolved": "https://registry.npmjs.org/machinepack-process/-/machinepack-process-4.0.1.tgz", 1401 | "integrity": "sha512-/5dqpWVhNjRC78v4cOKMH2I74u3hbM4pVha0SEh427eddWLSDt41txECZh+HLPPD3h/r35UU0cKszIFxqZYJlA==", 1402 | "dev": true, 1403 | "requires": { 1404 | "@sailshq/lodash": "^3.10.2", 1405 | "machine": "^15.0.0-23", 1406 | "opn": "5.3.0" 1407 | } 1408 | }, 1409 | "machinepack-redis": { 1410 | "version": "2.0.5", 1411 | "resolved": "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.5.tgz", 1412 | "integrity": "sha512-K+5j93jaeFKKhtGc0VDVaW/42luxbVnN/XueLfXdJhFam+dMm+06iNzVC0xexZwx+MRfnpWiMOT2TncC+Vi07g==", 1413 | "dev": true, 1414 | "requires": { 1415 | "@sailshq/lodash": "^3.10.2", 1416 | "async": "2.0.1", 1417 | "flaverr": "^1.9.2", 1418 | "machine": "^15.2.2", 1419 | "redis": "2.8.0" 1420 | }, 1421 | "dependencies": { 1422 | "async": { 1423 | "version": "2.0.1", 1424 | "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", 1425 | "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=", 1426 | "dev": true, 1427 | "requires": { 1428 | "lodash": "^4.8.0" 1429 | } 1430 | } 1431 | } 1432 | }, 1433 | "media-typer": { 1434 | "version": "0.3.0", 1435 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1436 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 1437 | "dev": true 1438 | }, 1439 | "merge-defaults": { 1440 | "version": "0.2.2", 1441 | "resolved": "https://registry.npmjs.org/merge-defaults/-/merge-defaults-0.2.2.tgz", 1442 | "integrity": "sha512-rKkxPFgGDZfmen0IN8BKRsGEbFU3PdO0RhR1GjOk+BLJF7+LAIhs5bUG3s26FkbB5bfIn9il25KkntRGdqHQ3A==", 1443 | "dev": true, 1444 | "requires": { 1445 | "@sailshq/lodash": "^3.10.2" 1446 | } 1447 | }, 1448 | "merge-descriptors": { 1449 | "version": "1.0.1", 1450 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1451 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", 1452 | "dev": true 1453 | }, 1454 | "merge-dictionaries": { 1455 | "version": "1.0.0", 1456 | "resolved": "https://registry.npmjs.org/merge-dictionaries/-/merge-dictionaries-1.0.0.tgz", 1457 | "integrity": "sha1-eJbuGrGhVQ0yh6AxG323gEtpGTE=", 1458 | "dev": true, 1459 | "requires": { 1460 | "@sailshq/lodash": "^3.10.2" 1461 | } 1462 | }, 1463 | "methods": { 1464 | "version": "1.1.2", 1465 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1466 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 1467 | "dev": true 1468 | }, 1469 | "mime": { 1470 | "version": "1.6.0", 1471 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1472 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1473 | "dev": true 1474 | }, 1475 | "mime-db": { 1476 | "version": "1.44.0", 1477 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1478 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 1479 | "dev": true 1480 | }, 1481 | "mime-types": { 1482 | "version": "2.1.27", 1483 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1484 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1485 | "dev": true, 1486 | "requires": { 1487 | "mime-db": "1.44.0" 1488 | } 1489 | }, 1490 | "minimatch": { 1491 | "version": "0.3.0", 1492 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 1493 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", 1494 | "dev": true, 1495 | "requires": { 1496 | "lru-cache": "2", 1497 | "sigmund": "~1.0.0" 1498 | } 1499 | }, 1500 | "minimist": { 1501 | "version": "0.0.8", 1502 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1503 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1504 | "dev": true 1505 | }, 1506 | "mkdirp": { 1507 | "version": "0.5.1", 1508 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1509 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1510 | "dev": true, 1511 | "requires": { 1512 | "minimist": "0.0.8" 1513 | } 1514 | }, 1515 | "mocha": { 1516 | "version": "2.5.3", 1517 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", 1518 | "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", 1519 | "dev": true, 1520 | "requires": { 1521 | "commander": "2.3.0", 1522 | "debug": "2.2.0", 1523 | "diff": "1.4.0", 1524 | "escape-string-regexp": "1.0.2", 1525 | "glob": "3.2.11", 1526 | "growl": "1.9.2", 1527 | "jade": "0.26.3", 1528 | "mkdirp": "0.5.1", 1529 | "supports-color": "1.2.0", 1530 | "to-iso-string": "0.0.2" 1531 | } 1532 | }, 1533 | "ms": { 1534 | "version": "0.7.1", 1535 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 1536 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 1537 | "dev": true 1538 | }, 1539 | "multiparty": { 1540 | "version": "4.1.3", 1541 | "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz", 1542 | "integrity": "sha1-PEPH/LGJbhdGBDap3Qtu8WaOT5Q=", 1543 | "dev": true, 1544 | "requires": { 1545 | "fd-slicer": "~1.0.1" 1546 | } 1547 | }, 1548 | "mute-stream": { 1549 | "version": "0.0.8", 1550 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1551 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1552 | "dev": true 1553 | }, 1554 | "ncp": { 1555 | "version": "0.4.2", 1556 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", 1557 | "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=", 1558 | "dev": true 1559 | }, 1560 | "negotiator": { 1561 | "version": "0.6.2", 1562 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1563 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 1564 | "dev": true 1565 | }, 1566 | "object-inspect": { 1567 | "version": "1.9.0", 1568 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 1569 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", 1570 | "dev": true 1571 | }, 1572 | "object-is": { 1573 | "version": "1.1.4", 1574 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", 1575 | "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", 1576 | "dev": true, 1577 | "requires": { 1578 | "call-bind": "^1.0.0", 1579 | "define-properties": "^1.1.3" 1580 | } 1581 | }, 1582 | "object-keys": { 1583 | "version": "1.1.1", 1584 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1585 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1586 | "dev": true 1587 | }, 1588 | "object.assign": { 1589 | "version": "4.1.2", 1590 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1591 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1592 | "dev": true, 1593 | "requires": { 1594 | "call-bind": "^1.0.0", 1595 | "define-properties": "^1.1.3", 1596 | "has-symbols": "^1.0.1", 1597 | "object-keys": "^1.1.1" 1598 | } 1599 | }, 1600 | "on-finished": { 1601 | "version": "2.3.0", 1602 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1603 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1604 | "dev": true, 1605 | "requires": { 1606 | "ee-first": "1.1.1" 1607 | } 1608 | }, 1609 | "on-headers": { 1610 | "version": "1.0.2", 1611 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1612 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 1613 | "dev": true 1614 | }, 1615 | "once": { 1616 | "version": "1.4.0", 1617 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1618 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1619 | "dev": true, 1620 | "requires": { 1621 | "wrappy": "1" 1622 | } 1623 | }, 1624 | "opn": { 1625 | "version": "5.3.0", 1626 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", 1627 | "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", 1628 | "dev": true, 1629 | "requires": { 1630 | "is-wsl": "^1.1.0" 1631 | } 1632 | }, 1633 | "os-shim": { 1634 | "version": "0.1.3", 1635 | "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", 1636 | "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", 1637 | "dev": true 1638 | }, 1639 | "parasails": { 1640 | "version": "0.9.2", 1641 | "resolved": "https://registry.npmjs.org/parasails/-/parasails-0.9.2.tgz", 1642 | "integrity": "sha512-LmCj4ZYPefyLWl00WcP1mTpoCLDEsy1BpTUfXFypUbKFnSGu0Z1KKRkCwxEsPb6OwaixoK2VTvgvP83ZO5E52Q==", 1643 | "dev": true 1644 | }, 1645 | "parley": { 1646 | "version": "3.8.3", 1647 | "resolved": "https://registry.npmjs.org/parley/-/parley-3.8.3.tgz", 1648 | "integrity": "sha512-9fSqT4J0jRNh+F/5EAqZvUSq232xjFXZJ3rXgKUXbIUUZ0ZPj6VjW83mI5UpVP8PMGHF3I8xycmvNjs9nQ3O8g==", 1649 | "dev": true, 1650 | "requires": { 1651 | "@sailshq/lodash": "^3.10.2", 1652 | "bluebird": "3.2.1", 1653 | "flaverr": "^1.5.1" 1654 | } 1655 | }, 1656 | "parseurl": { 1657 | "version": "1.3.2", 1658 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 1659 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", 1660 | "dev": true 1661 | }, 1662 | "path-is-absolute": { 1663 | "version": "1.0.1", 1664 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1665 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1666 | "dev": true 1667 | }, 1668 | "path-to-regexp": { 1669 | "version": "1.5.3", 1670 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.5.3.tgz", 1671 | "integrity": "sha1-ciHd1CSDU4vd+f6tlCp5/zFk9Xo=", 1672 | "dev": true, 1673 | "requires": { 1674 | "isarray": "0.0.1" 1675 | }, 1676 | "dependencies": { 1677 | "isarray": { 1678 | "version": "0.0.1", 1679 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1680 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1681 | "dev": true 1682 | } 1683 | } 1684 | }, 1685 | "pend": { 1686 | "version": "1.2.0", 1687 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1688 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 1689 | "dev": true 1690 | }, 1691 | "pkginfo": { 1692 | "version": "0.4.1", 1693 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", 1694 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", 1695 | "dev": true 1696 | }, 1697 | "pluralize": { 1698 | "version": "1.2.1", 1699 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", 1700 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", 1701 | "dev": true 1702 | }, 1703 | "pre-commit": { 1704 | "version": "1.1.2", 1705 | "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.1.2.tgz", 1706 | "integrity": "sha1-bMAcnPoBzL3rBoENhCuyAMRUeSY=", 1707 | "dev": true, 1708 | "requires": { 1709 | "cross-spawn": "2.0.x", 1710 | "which": "1.1.x" 1711 | } 1712 | }, 1713 | "process-nextick-args": { 1714 | "version": "2.0.1", 1715 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1716 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1717 | "dev": true 1718 | }, 1719 | "prompt": { 1720 | "version": "0.2.14", 1721 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", 1722 | "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", 1723 | "dev": true, 1724 | "requires": { 1725 | "pkginfo": "0.x.x", 1726 | "read": "1.0.x", 1727 | "revalidator": "0.1.x", 1728 | "utile": "0.2.x", 1729 | "winston": "0.8.x" 1730 | } 1731 | }, 1732 | "proxy-addr": { 1733 | "version": "2.0.6", 1734 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1735 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 1736 | "dev": true, 1737 | "requires": { 1738 | "forwarded": "~0.1.2", 1739 | "ipaddr.js": "1.9.1" 1740 | } 1741 | }, 1742 | "pseudomap": { 1743 | "version": "1.0.2", 1744 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1745 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1746 | "dev": true 1747 | }, 1748 | "qs": { 1749 | "version": "6.7.0", 1750 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1751 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", 1752 | "dev": true 1753 | }, 1754 | "random-bytes": { 1755 | "version": "1.0.0", 1756 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 1757 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", 1758 | "dev": true 1759 | }, 1760 | "range-parser": { 1761 | "version": "1.2.1", 1762 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1763 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1764 | "dev": true 1765 | }, 1766 | "raw-body": { 1767 | "version": "2.4.0", 1768 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1769 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1770 | "dev": true, 1771 | "requires": { 1772 | "bytes": "3.1.0", 1773 | "http-errors": "1.7.2", 1774 | "iconv-lite": "0.4.24", 1775 | "unpipe": "1.0.0" 1776 | }, 1777 | "dependencies": { 1778 | "bytes": { 1779 | "version": "3.1.0", 1780 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 1781 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 1782 | "dev": true 1783 | }, 1784 | "http-errors": { 1785 | "version": "1.7.2", 1786 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1787 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1788 | "dev": true, 1789 | "requires": { 1790 | "depd": "~1.1.2", 1791 | "inherits": "2.0.3", 1792 | "setprototypeof": "1.1.1", 1793 | "statuses": ">= 1.5.0 < 2", 1794 | "toidentifier": "1.0.0" 1795 | } 1796 | }, 1797 | "inherits": { 1798 | "version": "2.0.3", 1799 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1800 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1801 | "dev": true 1802 | }, 1803 | "statuses": { 1804 | "version": "1.5.0", 1805 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1806 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1807 | "dev": true 1808 | } 1809 | } 1810 | }, 1811 | "rc": { 1812 | "version": "1.2.8", 1813 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1814 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1815 | "dev": true, 1816 | "requires": { 1817 | "deep-extend": "^0.6.0", 1818 | "ini": "~1.3.0", 1819 | "minimist": "^1.2.0", 1820 | "strip-json-comments": "~2.0.1" 1821 | }, 1822 | "dependencies": { 1823 | "minimist": { 1824 | "version": "1.2.5", 1825 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1826 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1827 | "dev": true 1828 | } 1829 | } 1830 | }, 1831 | "read": { 1832 | "version": "1.0.7", 1833 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 1834 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 1835 | "dev": true, 1836 | "requires": { 1837 | "mute-stream": "~0.0.4" 1838 | } 1839 | }, 1840 | "readable-stream": { 1841 | "version": "2.3.7", 1842 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1843 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1844 | "dev": true, 1845 | "requires": { 1846 | "core-util-is": "~1.0.0", 1847 | "inherits": "~2.0.3", 1848 | "isarray": "~1.0.0", 1849 | "process-nextick-args": "~2.0.0", 1850 | "safe-buffer": "~5.1.1", 1851 | "string_decoder": "~1.1.1", 1852 | "util-deprecate": "~1.0.1" 1853 | } 1854 | }, 1855 | "redis": { 1856 | "version": "2.8.0", 1857 | "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", 1858 | "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", 1859 | "dev": true, 1860 | "requires": { 1861 | "double-ended-queue": "^2.1.0-0", 1862 | "redis-commands": "^1.2.0", 1863 | "redis-parser": "^2.6.0" 1864 | } 1865 | }, 1866 | "redis-commands": { 1867 | "version": "1.6.0", 1868 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz", 1869 | "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==", 1870 | "dev": true 1871 | }, 1872 | "redis-parser": { 1873 | "version": "2.6.0", 1874 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", 1875 | "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", 1876 | "dev": true 1877 | }, 1878 | "regexp.prototype.flags": { 1879 | "version": "1.3.0", 1880 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", 1881 | "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", 1882 | "dev": true, 1883 | "requires": { 1884 | "define-properties": "^1.1.3", 1885 | "es-abstract": "^1.17.0-next.1" 1886 | } 1887 | }, 1888 | "reportback": { 1889 | "version": "2.0.2", 1890 | "resolved": "https://registry.npmjs.org/reportback/-/reportback-2.0.2.tgz", 1891 | "integrity": "sha512-EOF6vRKfXjI7ydRoOdXXeRTK1zgWq7mep8/32patt0FOnBap32eTSw6yCea/o0025PHmVB8crx5OxzZJ+/P34g==", 1892 | "dev": true, 1893 | "requires": { 1894 | "captains-log": "^2.0.2", 1895 | "switchback": "^2.0.1" 1896 | } 1897 | }, 1898 | "revalidator": { 1899 | "version": "0.1.8", 1900 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 1901 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", 1902 | "dev": true 1903 | }, 1904 | "rimraf": { 1905 | "version": "2.7.1", 1906 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1907 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1908 | "dev": true, 1909 | "requires": { 1910 | "glob": "^7.1.3" 1911 | }, 1912 | "dependencies": { 1913 | "glob": { 1914 | "version": "7.1.6", 1915 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1916 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1917 | "dev": true, 1918 | "requires": { 1919 | "fs.realpath": "^1.0.0", 1920 | "inflight": "^1.0.4", 1921 | "inherits": "2", 1922 | "minimatch": "^3.0.4", 1923 | "once": "^1.3.0", 1924 | "path-is-absolute": "^1.0.0" 1925 | } 1926 | }, 1927 | "minimatch": { 1928 | "version": "3.0.4", 1929 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1930 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1931 | "dev": true, 1932 | "requires": { 1933 | "brace-expansion": "^1.1.7" 1934 | } 1935 | } 1936 | } 1937 | }, 1938 | "rndm": { 1939 | "version": "1.2.0", 1940 | "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", 1941 | "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", 1942 | "dev": true 1943 | }, 1944 | "router": { 1945 | "version": "1.3.2", 1946 | "resolved": "https://registry.npmjs.org/router/-/router-1.3.2.tgz", 1947 | "integrity": "sha1-v6oWiIpSg9XuQNmZ2nqfoVKWpgw=", 1948 | "dev": true, 1949 | "requires": { 1950 | "array-flatten": "2.1.1", 1951 | "debug": "2.6.9", 1952 | "methods": "~1.1.2", 1953 | "parseurl": "~1.3.2", 1954 | "path-to-regexp": "0.1.7", 1955 | "setprototypeof": "1.1.0", 1956 | "utils-merge": "1.0.1" 1957 | }, 1958 | "dependencies": { 1959 | "array-flatten": { 1960 | "version": "2.1.1", 1961 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", 1962 | "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", 1963 | "dev": true 1964 | }, 1965 | "debug": { 1966 | "version": "2.6.9", 1967 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1968 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1969 | "dev": true, 1970 | "requires": { 1971 | "ms": "2.0.0" 1972 | } 1973 | }, 1974 | "ms": { 1975 | "version": "2.0.0", 1976 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1977 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1978 | "dev": true 1979 | }, 1980 | "path-to-regexp": { 1981 | "version": "0.1.7", 1982 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1983 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 1984 | "dev": true 1985 | }, 1986 | "setprototypeof": { 1987 | "version": "1.1.0", 1988 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1989 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 1990 | "dev": true 1991 | } 1992 | } 1993 | }, 1994 | "rttc": { 1995 | "version": "10.0.1", 1996 | "resolved": "https://registry.npmjs.org/rttc/-/rttc-10.0.1.tgz", 1997 | "integrity": "sha512-wBsGNVaZ8K1qG0n5jxQ7dnOpvpewyQHGIjbMFYx8D16+51MM+FwkZwDPgH4GtnaTSzrNvrJriXFyvDi7OTZQ0A==", 1998 | "dev": true, 1999 | "requires": { 2000 | "@sailshq/lodash": "^3.10.2" 2001 | } 2002 | }, 2003 | "safe-buffer": { 2004 | "version": "5.1.2", 2005 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2006 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2007 | "dev": true 2008 | }, 2009 | "safer-buffer": { 2010 | "version": "2.1.2", 2011 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2012 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2013 | "dev": true 2014 | }, 2015 | "sails": { 2016 | "version": "1.4.0", 2017 | "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.0.tgz", 2018 | "integrity": "sha512-ZE2r0yy13HhqhwcpkW1R6xOU/InS4v8CDEENsvkKlCUKW+PiJSa/oIevbevdhhJ91/zMSxqLF9Q8kJyF6+hFTg==", 2019 | "dev": true, 2020 | "requires": { 2021 | "@sailshq/lodash": "^3.10.2", 2022 | "async": "2.5.0", 2023 | "captains-log": "^2.0.0", 2024 | "chalk": "2.3.0", 2025 | "commander": "2.11.0", 2026 | "common-js-file-extensions": "1.0.2", 2027 | "compression": "1.7.1", 2028 | "connect": "3.6.5", 2029 | "cookie": "0.4.0", 2030 | "cookie-parser": "1.4.4", 2031 | "cookie-signature": "1.1.0", 2032 | "csurf": "1.10.0", 2033 | "ejs": "2.5.7", 2034 | "express": "4.17.1", 2035 | "express-session": "1.17.0", 2036 | "flaverr": "^1.10.0", 2037 | "glob": "7.1.2", 2038 | "i18n-2": "0.7.3", 2039 | "include-all": "^4.0.0", 2040 | "machine": "^15.2.2", 2041 | "machine-as-action": "^10.3.1", 2042 | "machinepack-process": "^4.0.1", 2043 | "machinepack-redis": "^2.0.2", 2044 | "merge-defaults": "0.2.2", 2045 | "merge-dictionaries": "1.0.0", 2046 | "minimist": "1.2.5", 2047 | "parley": "^3.3.4", 2048 | "parseurl": "1.3.2", 2049 | "path-to-regexp": "1.5.3", 2050 | "pluralize": "1.2.1", 2051 | "prompt": "0.2.14", 2052 | "rc": "1.2.8", 2053 | "router": "1.3.2", 2054 | "rttc": "^10.0.0-0", 2055 | "sails-generate": "^2.0.0", 2056 | "sails-stringfile": "^0.3.3", 2057 | "semver": "4.3.6", 2058 | "serve-favicon": "2.4.5", 2059 | "serve-static": "1.13.1", 2060 | "skipper": "^0.9.0-0", 2061 | "sort-route-addresses": "^0.0.3", 2062 | "uid-safe": "2.1.5", 2063 | "vary": "1.1.2", 2064 | "whelk": "^6.0.1" 2065 | }, 2066 | "dependencies": { 2067 | "async": { 2068 | "version": "2.5.0", 2069 | "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", 2070 | "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", 2071 | "dev": true, 2072 | "requires": { 2073 | "lodash": "^4.14.0" 2074 | } 2075 | }, 2076 | "commander": { 2077 | "version": "2.11.0", 2078 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 2079 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 2080 | "dev": true 2081 | }, 2082 | "glob": { 2083 | "version": "7.1.2", 2084 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2085 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2086 | "dev": true, 2087 | "requires": { 2088 | "fs.realpath": "^1.0.0", 2089 | "inflight": "^1.0.4", 2090 | "inherits": "2", 2091 | "minimatch": "^3.0.4", 2092 | "once": "^1.3.0", 2093 | "path-is-absolute": "^1.0.0" 2094 | } 2095 | }, 2096 | "minimatch": { 2097 | "version": "3.0.4", 2098 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2099 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2100 | "dev": true, 2101 | "requires": { 2102 | "brace-expansion": "^1.1.7" 2103 | } 2104 | }, 2105 | "minimist": { 2106 | "version": "1.2.5", 2107 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2108 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2109 | "dev": true 2110 | } 2111 | } 2112 | }, 2113 | "sails-generate": { 2114 | "version": "2.0.0", 2115 | "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.0.tgz", 2116 | "integrity": "sha512-DK5ssXUpP/FFgWoWsvljGEeaAxF/mQuqCKua661EI1TfvIXgCdnVlAYd6d138ofIWb17g43ko1YwscGTn59onw==", 2117 | "dev": true, 2118 | "requires": { 2119 | "@sailshq/lodash": "^3.10.3", 2120 | "async": "2.0.1", 2121 | "chalk": "1.1.3", 2122 | "cross-spawn": "4.0.2", 2123 | "flaverr": "^1.0.0", 2124 | "fs-extra": "0.30.0", 2125 | "machinepack-process": "^4.0.0", 2126 | "parasails": "^0.9.2", 2127 | "read": "1.0.7", 2128 | "reportback": "^2.0.1", 2129 | "sails.io.js-dist": "^1.0.0" 2130 | }, 2131 | "dependencies": { 2132 | "async": { 2133 | "version": "2.0.1", 2134 | "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", 2135 | "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=", 2136 | "dev": true, 2137 | "requires": { 2138 | "lodash": "^4.8.0" 2139 | } 2140 | }, 2141 | "chalk": { 2142 | "version": "1.1.3", 2143 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 2144 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 2145 | "dev": true, 2146 | "requires": { 2147 | "ansi-styles": "^2.2.1", 2148 | "escape-string-regexp": "^1.0.2", 2149 | "has-ansi": "^2.0.0", 2150 | "strip-ansi": "^3.0.0", 2151 | "supports-color": "^2.0.0" 2152 | } 2153 | }, 2154 | "cross-spawn": { 2155 | "version": "4.0.2", 2156 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", 2157 | "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", 2158 | "dev": true, 2159 | "requires": { 2160 | "lru-cache": "^4.0.1", 2161 | "which": "^1.2.9" 2162 | } 2163 | }, 2164 | "lru-cache": { 2165 | "version": "4.1.5", 2166 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 2167 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 2168 | "dev": true, 2169 | "requires": { 2170 | "pseudomap": "^1.0.2", 2171 | "yallist": "^2.1.2" 2172 | } 2173 | }, 2174 | "supports-color": { 2175 | "version": "2.0.0", 2176 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2177 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2178 | "dev": true 2179 | }, 2180 | "which": { 2181 | "version": "1.3.1", 2182 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2183 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2184 | "dev": true, 2185 | "requires": { 2186 | "isexe": "^2.0.0" 2187 | } 2188 | } 2189 | } 2190 | }, 2191 | "sails-memory": { 2192 | "version": "0.10.7", 2193 | "resolved": "https://registry.npmjs.org/sails-memory/-/sails-memory-0.10.7.tgz", 2194 | "integrity": "sha1-Hgvsz+/gmVdmxuV18UWX/ofrQt4=", 2195 | "dev": true, 2196 | "requires": { 2197 | "async": "1.5.2", 2198 | "lodash": "3.10.1", 2199 | "waterline-criteria": "1.0.1", 2200 | "waterline-cursor": "0.0.6", 2201 | "waterline-errors": "0.10.1" 2202 | }, 2203 | "dependencies": { 2204 | "lodash": { 2205 | "version": "3.10.1", 2206 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 2207 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 2208 | "dev": true 2209 | }, 2210 | "waterline-cursor": { 2211 | "version": "0.0.6", 2212 | "resolved": "https://registry.npmjs.org/waterline-cursor/-/waterline-cursor-0.0.6.tgz", 2213 | "integrity": "sha1-d1DuqIuI+ACZbRFTBH28hQ9FL08=", 2214 | "dev": true, 2215 | "requires": { 2216 | "async": "~0.9.0", 2217 | "lodash": "~2.4.1" 2218 | }, 2219 | "dependencies": { 2220 | "async": { 2221 | "version": "0.9.2", 2222 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 2223 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", 2224 | "dev": true 2225 | }, 2226 | "lodash": { 2227 | "version": "2.4.2", 2228 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", 2229 | "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", 2230 | "dev": true 2231 | } 2232 | } 2233 | } 2234 | } 2235 | }, 2236 | "sails-stringfile": { 2237 | "version": "0.3.3", 2238 | "resolved": "https://registry.npmjs.org/sails-stringfile/-/sails-stringfile-0.3.3.tgz", 2239 | "integrity": "sha512-m61lSEURCpKf2T7Df9lkG2eWBPGFKrhJZi8OF3TMQe7HGWyUpYdwKhV6rFsky1gY6g4ecvTZTAqwHXOE1AtaCA==", 2240 | "dev": true, 2241 | "requires": { 2242 | "@sailshq/lodash": "^3.10.2", 2243 | "colors": "*" 2244 | } 2245 | }, 2246 | "sails.io.js-dist": { 2247 | "version": "1.2.1", 2248 | "resolved": "https://registry.npmjs.org/sails.io.js-dist/-/sails.io.js-dist-1.2.1.tgz", 2249 | "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ==", 2250 | "dev": true 2251 | }, 2252 | "semver": { 2253 | "version": "4.3.6", 2254 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 2255 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", 2256 | "dev": true 2257 | }, 2258 | "send": { 2259 | "version": "0.17.1", 2260 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 2261 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 2262 | "dev": true, 2263 | "requires": { 2264 | "debug": "2.6.9", 2265 | "depd": "~1.1.2", 2266 | "destroy": "~1.0.4", 2267 | "encodeurl": "~1.0.2", 2268 | "escape-html": "~1.0.3", 2269 | "etag": "~1.8.1", 2270 | "fresh": "0.5.2", 2271 | "http-errors": "~1.7.2", 2272 | "mime": "1.6.0", 2273 | "ms": "2.1.1", 2274 | "on-finished": "~2.3.0", 2275 | "range-parser": "~1.2.1", 2276 | "statuses": "~1.5.0" 2277 | }, 2278 | "dependencies": { 2279 | "debug": { 2280 | "version": "2.6.9", 2281 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2282 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2283 | "dev": true, 2284 | "requires": { 2285 | "ms": "2.0.0" 2286 | }, 2287 | "dependencies": { 2288 | "ms": { 2289 | "version": "2.0.0", 2290 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2291 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2292 | "dev": true 2293 | } 2294 | } 2295 | }, 2296 | "ms": { 2297 | "version": "2.1.1", 2298 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2299 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 2300 | "dev": true 2301 | }, 2302 | "statuses": { 2303 | "version": "1.5.0", 2304 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2305 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 2306 | "dev": true 2307 | } 2308 | } 2309 | }, 2310 | "serve-favicon": { 2311 | "version": "2.4.5", 2312 | "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.5.tgz", 2313 | "integrity": "sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==", 2314 | "dev": true, 2315 | "requires": { 2316 | "etag": "~1.8.1", 2317 | "fresh": "0.5.2", 2318 | "ms": "2.0.0", 2319 | "parseurl": "~1.3.2", 2320 | "safe-buffer": "5.1.1" 2321 | }, 2322 | "dependencies": { 2323 | "ms": { 2324 | "version": "2.0.0", 2325 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2326 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2327 | "dev": true 2328 | }, 2329 | "safe-buffer": { 2330 | "version": "5.1.1", 2331 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2332 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 2333 | "dev": true 2334 | } 2335 | } 2336 | }, 2337 | "serve-static": { 2338 | "version": "1.13.1", 2339 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", 2340 | "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", 2341 | "dev": true, 2342 | "requires": { 2343 | "encodeurl": "~1.0.1", 2344 | "escape-html": "~1.0.3", 2345 | "parseurl": "~1.3.2", 2346 | "send": "0.16.1" 2347 | }, 2348 | "dependencies": { 2349 | "debug": { 2350 | "version": "2.6.9", 2351 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2352 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2353 | "dev": true, 2354 | "requires": { 2355 | "ms": "2.0.0" 2356 | } 2357 | }, 2358 | "http-errors": { 2359 | "version": "1.6.3", 2360 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 2361 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 2362 | "dev": true, 2363 | "requires": { 2364 | "depd": "~1.1.2", 2365 | "inherits": "2.0.3", 2366 | "setprototypeof": "1.1.0", 2367 | "statuses": ">= 1.4.0 < 2" 2368 | }, 2369 | "dependencies": { 2370 | "statuses": { 2371 | "version": "1.5.0", 2372 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2373 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 2374 | "dev": true 2375 | } 2376 | } 2377 | }, 2378 | "inherits": { 2379 | "version": "2.0.3", 2380 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2381 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2382 | "dev": true 2383 | }, 2384 | "mime": { 2385 | "version": "1.4.1", 2386 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 2387 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", 2388 | "dev": true 2389 | }, 2390 | "ms": { 2391 | "version": "2.0.0", 2392 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2393 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2394 | "dev": true 2395 | }, 2396 | "send": { 2397 | "version": "0.16.1", 2398 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", 2399 | "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", 2400 | "dev": true, 2401 | "requires": { 2402 | "debug": "2.6.9", 2403 | "depd": "~1.1.1", 2404 | "destroy": "~1.0.4", 2405 | "encodeurl": "~1.0.1", 2406 | "escape-html": "~1.0.3", 2407 | "etag": "~1.8.1", 2408 | "fresh": "0.5.2", 2409 | "http-errors": "~1.6.2", 2410 | "mime": "1.4.1", 2411 | "ms": "2.0.0", 2412 | "on-finished": "~2.3.0", 2413 | "range-parser": "~1.2.0", 2414 | "statuses": "~1.3.1" 2415 | } 2416 | }, 2417 | "setprototypeof": { 2418 | "version": "1.1.0", 2419 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2420 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 2421 | "dev": true 2422 | } 2423 | } 2424 | }, 2425 | "setprototypeof": { 2426 | "version": "1.1.1", 2427 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2428 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 2429 | "dev": true 2430 | }, 2431 | "should": { 2432 | "version": "7.1.1", 2433 | "resolved": "https://registry.npmjs.org/should/-/should-7.1.1.tgz", 2434 | "integrity": "sha1-ZGTEi298Hh8YrASDV4+i3VXCxuA=", 2435 | "dev": true, 2436 | "requires": { 2437 | "should-equal": "0.5.0", 2438 | "should-format": "0.3.1", 2439 | "should-type": "0.2.0" 2440 | } 2441 | }, 2442 | "should-equal": { 2443 | "version": "0.5.0", 2444 | "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.5.0.tgz", 2445 | "integrity": "sha1-x5fxNfMGf+tp6+zbMGscP+IbPm8=", 2446 | "dev": true, 2447 | "requires": { 2448 | "should-type": "0.2.0" 2449 | } 2450 | }, 2451 | "should-format": { 2452 | "version": "0.3.1", 2453 | "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.1.tgz", 2454 | "integrity": "sha1-LLt4JGFnCs5CkrKx7EaNuM+Z4zA=", 2455 | "dev": true, 2456 | "requires": { 2457 | "should-type": "0.2.0" 2458 | } 2459 | }, 2460 | "should-type": { 2461 | "version": "0.2.0", 2462 | "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", 2463 | "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", 2464 | "dev": true 2465 | }, 2466 | "side-channel": { 2467 | "version": "1.0.3", 2468 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", 2469 | "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", 2470 | "dev": true, 2471 | "requires": { 2472 | "es-abstract": "^1.18.0-next.0", 2473 | "object-inspect": "^1.8.0" 2474 | }, 2475 | "dependencies": { 2476 | "es-abstract": { 2477 | "version": "1.18.0-next.1", 2478 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 2479 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 2480 | "dev": true, 2481 | "requires": { 2482 | "es-to-primitive": "^1.2.1", 2483 | "function-bind": "^1.1.1", 2484 | "has": "^1.0.3", 2485 | "has-symbols": "^1.0.1", 2486 | "is-callable": "^1.2.2", 2487 | "is-negative-zero": "^2.0.0", 2488 | "is-regex": "^1.1.1", 2489 | "object-inspect": "^1.8.0", 2490 | "object-keys": "^1.1.1", 2491 | "object.assign": "^4.1.1", 2492 | "string.prototype.trimend": "^1.0.1", 2493 | "string.prototype.trimstart": "^1.0.1" 2494 | } 2495 | } 2496 | } 2497 | }, 2498 | "sigmund": { 2499 | "version": "1.0.1", 2500 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2501 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 2502 | "dev": true 2503 | }, 2504 | "skipper": { 2505 | "version": "0.9.0-4", 2506 | "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.0-4.tgz", 2507 | "integrity": "sha512-7q4pC2mkaVC/YphYn7bFzlcsPTdr/h6qZqtX1rtO5gkPmmBO3+z/7D7BgpLSG3C6Ji/PXm4Wk2GwXyXWIXwZ2w==", 2508 | "dev": true, 2509 | "requires": { 2510 | "@sailshq/lodash": "^3.10.3", 2511 | "async": "2.0.1", 2512 | "body-parser": "1.18.2", 2513 | "debug": "3.1.0", 2514 | "multiparty": "4.1.3", 2515 | "semver": "4.3.6", 2516 | "skipper-disk": "~0.5.6", 2517 | "string_decoder": "0.10.31", 2518 | "uuid": "3.0.1" 2519 | }, 2520 | "dependencies": { 2521 | "async": { 2522 | "version": "2.0.1", 2523 | "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", 2524 | "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=", 2525 | "dev": true, 2526 | "requires": { 2527 | "lodash": "^4.8.0" 2528 | } 2529 | }, 2530 | "body-parser": { 2531 | "version": "1.18.2", 2532 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 2533 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 2534 | "dev": true, 2535 | "requires": { 2536 | "bytes": "3.0.0", 2537 | "content-type": "~1.0.4", 2538 | "debug": "2.6.9", 2539 | "depd": "~1.1.1", 2540 | "http-errors": "~1.6.2", 2541 | "iconv-lite": "0.4.19", 2542 | "on-finished": "~2.3.0", 2543 | "qs": "6.5.1", 2544 | "raw-body": "2.3.2", 2545 | "type-is": "~1.6.15" 2546 | }, 2547 | "dependencies": { 2548 | "debug": { 2549 | "version": "2.6.9", 2550 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2551 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2552 | "dev": true, 2553 | "requires": { 2554 | "ms": "2.0.0" 2555 | } 2556 | } 2557 | } 2558 | }, 2559 | "debug": { 2560 | "version": "3.1.0", 2561 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2562 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2563 | "dev": true, 2564 | "requires": { 2565 | "ms": "2.0.0" 2566 | } 2567 | }, 2568 | "http-errors": { 2569 | "version": "1.6.3", 2570 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 2571 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 2572 | "dev": true, 2573 | "requires": { 2574 | "depd": "~1.1.2", 2575 | "inherits": "2.0.3", 2576 | "setprototypeof": "1.1.0", 2577 | "statuses": ">= 1.4.0 < 2" 2578 | } 2579 | }, 2580 | "iconv-lite": { 2581 | "version": "0.4.19", 2582 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 2583 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", 2584 | "dev": true 2585 | }, 2586 | "inherits": { 2587 | "version": "2.0.3", 2588 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2589 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2590 | "dev": true 2591 | }, 2592 | "ms": { 2593 | "version": "2.0.0", 2594 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2595 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2596 | "dev": true 2597 | }, 2598 | "qs": { 2599 | "version": "6.5.1", 2600 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 2601 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", 2602 | "dev": true 2603 | }, 2604 | "raw-body": { 2605 | "version": "2.3.2", 2606 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 2607 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 2608 | "dev": true, 2609 | "requires": { 2610 | "bytes": "3.0.0", 2611 | "http-errors": "1.6.2", 2612 | "iconv-lite": "0.4.19", 2613 | "unpipe": "1.0.0" 2614 | }, 2615 | "dependencies": { 2616 | "depd": { 2617 | "version": "1.1.1", 2618 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 2619 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", 2620 | "dev": true 2621 | }, 2622 | "http-errors": { 2623 | "version": "1.6.2", 2624 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 2625 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 2626 | "dev": true, 2627 | "requires": { 2628 | "depd": "1.1.1", 2629 | "inherits": "2.0.3", 2630 | "setprototypeof": "1.0.3", 2631 | "statuses": ">= 1.3.1 < 2" 2632 | } 2633 | }, 2634 | "setprototypeof": { 2635 | "version": "1.0.3", 2636 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 2637 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", 2638 | "dev": true 2639 | } 2640 | } 2641 | }, 2642 | "setprototypeof": { 2643 | "version": "1.1.0", 2644 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2645 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 2646 | "dev": true 2647 | }, 2648 | "statuses": { 2649 | "version": "1.5.0", 2650 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2651 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 2652 | "dev": true 2653 | }, 2654 | "string_decoder": { 2655 | "version": "0.10.31", 2656 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2657 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2658 | "dev": true 2659 | } 2660 | } 2661 | }, 2662 | "skipper-disk": { 2663 | "version": "0.5.12", 2664 | "resolved": "https://registry.npmjs.org/skipper-disk/-/skipper-disk-0.5.12.tgz", 2665 | "integrity": "sha512-yyLOWT1WKY2h9NaUuG77XyhMti6vltRqp3ofN2ZTYoG3/V/SRLH1CjtZQ2Az6oqgMrfN8SZ83k3ptaOvB31YmQ==", 2666 | "dev": true, 2667 | "requires": { 2668 | "@sailshq/lodash": "^3.10.2", 2669 | "debug": "3.1.0", 2670 | "fs-extra": "0.30.0" 2671 | }, 2672 | "dependencies": { 2673 | "debug": { 2674 | "version": "3.1.0", 2675 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2676 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2677 | "dev": true, 2678 | "requires": { 2679 | "ms": "2.0.0" 2680 | } 2681 | }, 2682 | "ms": { 2683 | "version": "2.0.0", 2684 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2685 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2686 | "dev": true 2687 | } 2688 | } 2689 | }, 2690 | "sort-route-addresses": { 2691 | "version": "0.0.3", 2692 | "resolved": "https://registry.npmjs.org/sort-route-addresses/-/sort-route-addresses-0.0.3.tgz", 2693 | "integrity": "sha512-FK9GJty+MN4X5ml665lcgJe5y0zjF2wgnNVWS1yVnPFuCODCtMJx8B1rFN5NRwDaCbDGjc45OKkusqrx2GFL4g==", 2694 | "dev": true, 2695 | "requires": { 2696 | "@sailshq/lodash": "^3.10.2" 2697 | } 2698 | }, 2699 | "spawn-sync": { 2700 | "version": "1.0.13", 2701 | "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.13.tgz", 2702 | "integrity": "sha1-kECRua1IoPOvsOhHUhVMAegv2Ng=", 2703 | "dev": true, 2704 | "requires": { 2705 | "concat-stream": "^1.4.7", 2706 | "os-shim": "^0.1.2" 2707 | } 2708 | }, 2709 | "sprintf-js": { 2710 | "version": "1.1.2", 2711 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 2712 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 2713 | "dev": true 2714 | }, 2715 | "stack-trace": { 2716 | "version": "0.0.10", 2717 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 2718 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 2719 | "dev": true 2720 | }, 2721 | "statuses": { 2722 | "version": "1.3.1", 2723 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 2724 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 2725 | "dev": true 2726 | }, 2727 | "streamifier": { 2728 | "version": "0.1.1", 2729 | "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", 2730 | "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", 2731 | "dev": true 2732 | }, 2733 | "string.prototype.trimend": { 2734 | "version": "1.0.3", 2735 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", 2736 | "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", 2737 | "dev": true, 2738 | "requires": { 2739 | "call-bind": "^1.0.0", 2740 | "define-properties": "^1.1.3" 2741 | } 2742 | }, 2743 | "string.prototype.trimstart": { 2744 | "version": "1.0.3", 2745 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", 2746 | "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", 2747 | "dev": true, 2748 | "requires": { 2749 | "call-bind": "^1.0.0", 2750 | "define-properties": "^1.1.3" 2751 | } 2752 | }, 2753 | "string_decoder": { 2754 | "version": "1.1.1", 2755 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2756 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2757 | "dev": true, 2758 | "requires": { 2759 | "safe-buffer": "~5.1.0" 2760 | } 2761 | }, 2762 | "strip-ansi": { 2763 | "version": "3.0.1", 2764 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2765 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2766 | "dev": true, 2767 | "requires": { 2768 | "ansi-regex": "^2.0.0" 2769 | } 2770 | }, 2771 | "strip-json-comments": { 2772 | "version": "2.0.1", 2773 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2774 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2775 | "dev": true 2776 | }, 2777 | "supports-color": { 2778 | "version": "1.2.0", 2779 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", 2780 | "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", 2781 | "dev": true 2782 | }, 2783 | "switchback": { 2784 | "version": "2.0.5", 2785 | "resolved": "https://registry.npmjs.org/switchback/-/switchback-2.0.5.tgz", 2786 | "integrity": "sha512-w9gnsTxR5geOKt45QUryhDP9KTLcOAqje9usR2VQ2ng8DfhaF+mkIcArxioMP/p6Z/ecKE58i2/B0DDlMJK1jw==", 2787 | "dev": true, 2788 | "requires": { 2789 | "@sailshq/lodash": "^3.10.3" 2790 | } 2791 | }, 2792 | "to-iso-string": { 2793 | "version": "0.0.2", 2794 | "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", 2795 | "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", 2796 | "dev": true 2797 | }, 2798 | "toidentifier": { 2799 | "version": "1.0.0", 2800 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2801 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 2802 | "dev": true 2803 | }, 2804 | "tsscmp": { 2805 | "version": "1.0.6", 2806 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 2807 | "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", 2808 | "dev": true 2809 | }, 2810 | "type-is": { 2811 | "version": "1.6.18", 2812 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2813 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2814 | "dev": true, 2815 | "requires": { 2816 | "media-typer": "0.3.0", 2817 | "mime-types": "~2.1.24" 2818 | } 2819 | }, 2820 | "typedarray": { 2821 | "version": "0.0.6", 2822 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2823 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2824 | "dev": true 2825 | }, 2826 | "uid-safe": { 2827 | "version": "2.1.5", 2828 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 2829 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 2830 | "dev": true, 2831 | "requires": { 2832 | "random-bytes": "~1.0.0" 2833 | } 2834 | }, 2835 | "unpipe": { 2836 | "version": "1.0.0", 2837 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2838 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 2839 | "dev": true 2840 | }, 2841 | "util-deprecate": { 2842 | "version": "1.0.2", 2843 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2844 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2845 | "dev": true 2846 | }, 2847 | "utile": { 2848 | "version": "0.2.1", 2849 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", 2850 | "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", 2851 | "dev": true, 2852 | "requires": { 2853 | "async": "~0.2.9", 2854 | "deep-equal": "*", 2855 | "i": "0.3.x", 2856 | "mkdirp": "0.x.x", 2857 | "ncp": "0.4.x", 2858 | "rimraf": "2.x.x" 2859 | }, 2860 | "dependencies": { 2861 | "async": { 2862 | "version": "0.2.10", 2863 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 2864 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 2865 | "dev": true 2866 | } 2867 | } 2868 | }, 2869 | "utils-merge": { 2870 | "version": "1.0.1", 2871 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2872 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 2873 | "dev": true 2874 | }, 2875 | "uuid": { 2876 | "version": "3.0.1", 2877 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", 2878 | "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", 2879 | "dev": true 2880 | }, 2881 | "validator": { 2882 | "version": "5.7.0", 2883 | "resolved": "https://registry.npmjs.org/validator/-/validator-5.7.0.tgz", 2884 | "integrity": "sha1-eoelgUa2laxIYHEUHAxJ1n2gXlw=", 2885 | "dev": true 2886 | }, 2887 | "vary": { 2888 | "version": "1.1.2", 2889 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2890 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 2891 | "dev": true 2892 | }, 2893 | "waterline-criteria": { 2894 | "version": "1.0.1", 2895 | "resolved": "https://registry.npmjs.org/waterline-criteria/-/waterline-criteria-1.0.1.tgz", 2896 | "integrity": "sha1-iHcFfsfWRyEAAXo6V/zJS2Kh/ak=", 2897 | "dev": true, 2898 | "requires": { 2899 | "lodash": "3.10.1" 2900 | }, 2901 | "dependencies": { 2902 | "lodash": { 2903 | "version": "3.10.1", 2904 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 2905 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 2906 | "dev": true 2907 | } 2908 | } 2909 | }, 2910 | "waterline-errors": { 2911 | "version": "0.10.1", 2912 | "resolved": "https://registry.npmjs.org/waterline-errors/-/waterline-errors-0.10.1.tgz", 2913 | "integrity": "sha1-7mNjKq3emTJxt1FLfKmNn9W4ai4=", 2914 | "dev": true 2915 | }, 2916 | "whelk": { 2917 | "version": "6.0.1", 2918 | "resolved": "https://registry.npmjs.org/whelk/-/whelk-6.0.1.tgz", 2919 | "integrity": "sha512-C6jGmpclsvSYm3rNhCkrdIdGhL9Oh6A9jnSmTN4lfEbH+ENQvjP9qZ5UV9WWolfoumpIzTBVupk1qiVeLL7yYQ==", 2920 | "dev": true, 2921 | "requires": { 2922 | "@sailshq/lodash": "^3.10.2", 2923 | "chalk": "1.1.3", 2924 | "commander": "2.8.1", 2925 | "flaverr": "^1.7.0", 2926 | "machine": "^15.2.2", 2927 | "rttc": "^10.0.0-0", 2928 | "yargs": "3.4.5" 2929 | }, 2930 | "dependencies": { 2931 | "chalk": { 2932 | "version": "1.1.3", 2933 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 2934 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 2935 | "dev": true, 2936 | "requires": { 2937 | "ansi-styles": "^2.2.1", 2938 | "escape-string-regexp": "^1.0.2", 2939 | "has-ansi": "^2.0.0", 2940 | "strip-ansi": "^3.0.0", 2941 | "supports-color": "^2.0.0" 2942 | } 2943 | }, 2944 | "commander": { 2945 | "version": "2.8.1", 2946 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", 2947 | "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", 2948 | "dev": true, 2949 | "requires": { 2950 | "graceful-readlink": ">= 1.0.0" 2951 | } 2952 | }, 2953 | "supports-color": { 2954 | "version": "2.0.0", 2955 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2956 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2957 | "dev": true 2958 | } 2959 | } 2960 | }, 2961 | "which": { 2962 | "version": "1.1.2", 2963 | "resolved": "https://registry.npmjs.org/which/-/which-1.1.2.tgz", 2964 | "integrity": "sha1-SGxIr23+zHp9z5xlWs8QjS3L3z0=", 2965 | "dev": true, 2966 | "requires": { 2967 | "is-absolute": "^0.1.7" 2968 | } 2969 | }, 2970 | "which-boxed-primitive": { 2971 | "version": "1.0.1", 2972 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", 2973 | "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", 2974 | "dev": true, 2975 | "requires": { 2976 | "is-bigint": "^1.0.0", 2977 | "is-boolean-object": "^1.0.0", 2978 | "is-number-object": "^1.0.3", 2979 | "is-string": "^1.0.4", 2980 | "is-symbol": "^1.0.2" 2981 | } 2982 | }, 2983 | "which-collection": { 2984 | "version": "1.0.1", 2985 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 2986 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 2987 | "dev": true, 2988 | "requires": { 2989 | "is-map": "^2.0.1", 2990 | "is-set": "^2.0.1", 2991 | "is-weakmap": "^2.0.1", 2992 | "is-weakset": "^2.0.1" 2993 | } 2994 | }, 2995 | "which-typed-array": { 2996 | "version": "1.1.4", 2997 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", 2998 | "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", 2999 | "dev": true, 3000 | "requires": { 3001 | "available-typed-arrays": "^1.0.2", 3002 | "call-bind": "^1.0.0", 3003 | "es-abstract": "^1.18.0-next.1", 3004 | "foreach": "^2.0.5", 3005 | "function-bind": "^1.1.1", 3006 | "has-symbols": "^1.0.1", 3007 | "is-typed-array": "^1.1.3" 3008 | }, 3009 | "dependencies": { 3010 | "es-abstract": { 3011 | "version": "1.18.0-next.1", 3012 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 3013 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 3014 | "dev": true, 3015 | "requires": { 3016 | "es-to-primitive": "^1.2.1", 3017 | "function-bind": "^1.1.1", 3018 | "has": "^1.0.3", 3019 | "has-symbols": "^1.0.1", 3020 | "is-callable": "^1.2.2", 3021 | "is-negative-zero": "^2.0.0", 3022 | "is-regex": "^1.1.1", 3023 | "object-inspect": "^1.8.0", 3024 | "object-keys": "^1.1.1", 3025 | "object.assign": "^4.1.1", 3026 | "string.prototype.trimend": "^1.0.1", 3027 | "string.prototype.trimstart": "^1.0.1" 3028 | } 3029 | } 3030 | } 3031 | }, 3032 | "window-size": { 3033 | "version": "0.1.0", 3034 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 3035 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 3036 | "dev": true 3037 | }, 3038 | "winston": { 3039 | "version": "0.8.3", 3040 | "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", 3041 | "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", 3042 | "dev": true, 3043 | "requires": { 3044 | "async": "0.2.x", 3045 | "colors": "0.6.x", 3046 | "cycle": "1.0.x", 3047 | "eyes": "0.1.x", 3048 | "isstream": "0.1.x", 3049 | "pkginfo": "0.3.x", 3050 | "stack-trace": "0.0.x" 3051 | }, 3052 | "dependencies": { 3053 | "async": { 3054 | "version": "0.2.10", 3055 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 3056 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 3057 | "dev": true 3058 | }, 3059 | "pkginfo": { 3060 | "version": "0.3.1", 3061 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", 3062 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", 3063 | "dev": true 3064 | } 3065 | } 3066 | }, 3067 | "wordwrap": { 3068 | "version": "0.0.2", 3069 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 3070 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 3071 | "dev": true 3072 | }, 3073 | "wrappy": { 3074 | "version": "1.0.2", 3075 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3076 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3077 | "dev": true 3078 | }, 3079 | "yallist": { 3080 | "version": "2.1.2", 3081 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3082 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 3083 | "dev": true 3084 | }, 3085 | "yargs": { 3086 | "version": "3.4.5", 3087 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.4.5.tgz", 3088 | "integrity": "sha1-s5IXO3iSeS9nKWpgE8LXbRUxXrE=", 3089 | "dev": true, 3090 | "requires": { 3091 | "camelcase": "^1.0.2", 3092 | "decamelize": "^1.0.0", 3093 | "window-size": "0.1.0", 3094 | "wordwrap": "0.0.2" 3095 | } 3096 | } 3097 | } 3098 | } 3099 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "barrels", 3 | "version": "1.6.6", 4 | "description": "Simple DB Fixtures for Sails.js with associations support", 5 | "dependencies": { 6 | "async": "^1.5.0", 7 | "lodash": "^4.17.19" 8 | }, 9 | "devDependencies": { 10 | "mocha": "^2.3.4", 11 | "pre-commit": "1.1.2", 12 | "sails": "^1.2.4", 13 | "sails-memory": "^0.10.5", 14 | "should": "^7.1.1" 15 | }, 16 | "main": "index.js", 17 | "scripts": { 18 | "test": "NODE_ENV=test mocha -R spec" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "git://github.com/bredikhin/barrels.git" 23 | }, 24 | "author": "Ruslan Bredikhin", 25 | "contributors": [ 26 | { 27 | "name": "Ruslan Bredikhin", 28 | "email": "ruslan.bredikhin@facebook.com" 29 | }, 30 | { 31 | "name": "Mikael Møller", 32 | "email": "mikael@i-dyllen.dk" 33 | }, 34 | { 35 | "name": "U-Zyn Chua", 36 | "email": "chua@uzyn.com" 37 | }, 38 | { 39 | "name": "Tuomas Salmi" 40 | }, 41 | { 42 | "name": "Victor Heng" 43 | }, 44 | { 45 | "name": "Marnus Weststrate", 46 | "email": "marnusw@gmail.com" 47 | } 48 | ], 49 | "license": "MIT" 50 | } 51 | -------------------------------------------------------------------------------- /test/fixtures/Categories.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | { 3 | name: 'Clothes' 4 | }, 5 | { 6 | name: "Shoes" 7 | }, 8 | { 9 | "name": 'Accessories' 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /test/fixtures/customers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Walter White", 4 | "email": "walter@heisenberg.com" 5 | }, 6 | { 7 | "name": "John Appleseed", 8 | "email": "appleseed@me.com" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /test/fixtures/models/Categories.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Categories 3 | */ 4 | 5 | module.exports = { 6 | attributes: { 7 | products: { 8 | collection: 'products', 9 | via: 'category' 10 | } 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /test/fixtures/models/Products.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Products 3 | */ 4 | 5 | module.exports = { 6 | attributes: { 7 | customId: { 8 | type: 'integer', 9 | autoIncrement: true, 10 | primaryKey: true 11 | }, 12 | name: 'string', 13 | category: { 14 | model: 'categories' 15 | }, 16 | tags: { 17 | collection: 'tags', 18 | via: 'products', 19 | dominant: true 20 | }, 21 | seller: { 22 | model: 'sellers', 23 | required: true 24 | }, 25 | regions: { 26 | collection: 'regions', 27 | via: 'products', 28 | required: true 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /test/fixtures/models/Regions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Region 3 | */ 4 | 5 | module.exports = { 6 | attributes: { 7 | products: { 8 | collection: 'products', 9 | via: 'regions' 10 | }, 11 | name: { 12 | type: 'string' 13 | } 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /test/fixtures/models/Sellers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sellers 3 | */ 4 | 5 | module.exports = { 6 | attributes: { 7 | name: { 8 | type: 'string', 9 | required: true 10 | } 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /test/fixtures/models/Tags.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Tags 3 | */ 4 | 5 | module.exports = { 6 | attributes: { 7 | products: { 8 | collection: 'products', 9 | via: 'tags' 10 | } 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /test/fixtures/products.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Leather Jacket", 4 | "category": 1, 5 | "tags": [ 6 | 1, 7 | 2, 8 | 3 9 | ], 10 | "seller": 1, 11 | "regions": [ 12 | 1, 13 | 2 14 | ] 15 | }, 16 | { 17 | "title": "Driving Shoes", 18 | "category": 2, 19 | "tags": [ 20 | 2, 21 | 3 22 | ], 23 | "seller": 1, 24 | "regions": [ 25 | 2, 26 | 3 27 | ] 28 | }, 29 | { 30 | "title": "Aviator Sunglasses", 31 | "category": 3, 32 | "tags": [ 33 | 3, 34 | 4 35 | ], 36 | "seller": 1, 37 | "regions": [ 38 | 1, 39 | 2, 40 | 3 41 | ] 42 | } 43 | ] 44 | -------------------------------------------------------------------------------- /test/fixtures/regions.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "midwest" 4 | }, 5 | { 6 | "name": "southwest" 7 | }, 8 | { 9 | "name": "pacific" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /test/fixtures/sellers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Clark Kent" 4 | } 5 | ] 6 | -------------------------------------------------------------------------------- /test/fixtures/tags.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 1, 4 | "name": "black" 5 | }, 6 | { 7 | "id": 2, 8 | "name": "casual" 9 | }, 10 | { 11 | "id": 3, 12 | "name": "leather" 13 | }, 14 | { 15 | "id": 4, 16 | "name": "summer" 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * Dependencies 5 | */ 6 | var should = require('should'); 7 | var Sails = require('sails'); 8 | var Barrels = require('../'); 9 | var barrels = new Barrels(); 10 | 11 | describe('Barrels', function() { 12 | var fixtures = barrels.data; 13 | 14 | // Load fixtures into memory 15 | describe('constructor', function() { 16 | it('should load all the json files from default folder', function(done) { 17 | Object.keys(fixtures).length.should.be.greaterThan(1, 18 | 'At least two fixture files should be loaded!'); 19 | 20 | done(); 21 | }); 22 | 23 | it('should set generate lowercase property names for models', function(done) { 24 | var oneWord = Object.keys(fixtures).join(); 25 | oneWord.toLowerCase().should.be.eql(oneWord, 26 | 'Property names should be in lowercase!'); 27 | 28 | done(); 29 | }); 30 | }); 31 | 32 | // Populate DB with fixtures 33 | describe('populate()', function() { 34 | before(function(done) { 35 | Sails.lift({ 36 | paths: { 37 | models: require('path').join(process.cwd(), 38 | 'test/fixtures/models') 39 | }, 40 | connections: { 41 | test: { 42 | adapter: 'sails-memory' 43 | } 44 | }, 45 | models: { 46 | connection: 'test', 47 | migrate: 'drop' 48 | }, 49 | hooks: { 50 | grunt: false 51 | } 52 | }, function(err, sails) { 53 | done(err); 54 | }); 55 | }); 56 | 57 | after(function(done) { 58 | Sails.lower(done); 59 | }); 60 | 61 | describe('populate(cb)', function() { 62 | before(function(done) { 63 | barrels.populate(['sellers', 'regions'], function(err) { 64 | if (err) 65 | return done(err); 66 | 67 | barrels.populate(['categories', 'products', 'tags'], function (err) { 68 | if (err) 69 | return done(err); 70 | 71 | done(); 72 | }); 73 | }); 74 | }); 75 | 76 | it('should populate the DB with products and categories', function(done) { 77 | Categories.find().exec(function(err, categories) { 78 | if (err) 79 | return done(err); 80 | 81 | var gotCategories = (fixtures['categories'].length > 0); 82 | var categoriesAreInTheDb = (categories.length === fixtures['categories'].length); 83 | should(gotCategories && categoriesAreInTheDb).be.ok; 84 | 85 | Products.find().exec(function(err, products) { 86 | if (err) 87 | return done(err); 88 | 89 | categories.length.should.be.eql(products.length, 'Categories and products should have equal amount of entries!'); 90 | 91 | done(); 92 | }); 93 | }); 94 | }); 95 | 96 | it('should assign a category to each product', function(done) { 97 | Products.find().populate('category').exec(function(err, products) { 98 | if (err) 99 | return done(err); 100 | 101 | async.each(products, function(product, nextProduct) { 102 | should(product.category.name).not.be.empty; 103 | 104 | nextProduct(); 105 | }, done); 106 | }); 107 | }); 108 | 109 | it('should assign at least two tags to each product', function(done) { 110 | Products.find().populate('tags').exec(function(err, products) { 111 | if (err) 112 | return done(err); 113 | 114 | async.each(products, function(product, nextProduct) { 115 | should(product.tags.length).be.greaterThan(1); 116 | 117 | nextProduct(); 118 | }, done); 119 | }); 120 | }); 121 | 122 | it('should assign at least two regions to each product', function(done) { 123 | Products.find().populate('regions').exec(function(err, products) { 124 | if (err) 125 | return done(err); 126 | 127 | async.each(products, function(product, nextProduct) { 128 | should(product.regions.length).be.greaterThan(1); 129 | 130 | nextProduct(); 131 | }, done); 132 | }); 133 | }); 134 | }); 135 | 136 | describe('populate(cb, false)', function() { 137 | before(function(done) { 138 | barrels.populate(['sellers', 'regions'], function(err) { 139 | if (err) 140 | return done(err); 141 | 142 | barrels.populate(['categories', 'products', 'tags'], function (err) { 143 | if (err) 144 | return done(err); 145 | 146 | done(); 147 | }, false); 148 | }, false); 149 | }); 150 | 151 | it('should keep the associations-related fields', function(done) { 152 | Products.find().exec(function(err, products) { 153 | if (err) 154 | return done(err); 155 | 156 | async.each(products, function(product, nextProduct) { 157 | product.category.should.be.a.Number; 158 | product.tags.should.be.an.Array; 159 | 160 | nextProduct(); 161 | }, done); 162 | }); 163 | }); 164 | 165 | it('should always populate required associations', function(done) { 166 | Products.find().populate('regions').exec(function(err, products) { 167 | if (err) 168 | return done(err); 169 | 170 | async.each(products, function(product, nextProduct) { 171 | should(product.regions.length).be.greaterThan(1); 172 | 173 | nextProduct(); 174 | }, done); 175 | }); 176 | }); 177 | 178 | }); 179 | 180 | describe('populate(modelList, cb)', function() { 181 | before(function(done) { 182 | Products.destroy().exec(function(err) { 183 | if (err) 184 | return done(err); 185 | 186 | Categories.destroy().exec(function(err) { 187 | if (err) 188 | return done(err); 189 | 190 | barrels.populate(['sellers', 'regions'], function(err) { 191 | if (err) 192 | return done(err); 193 | 194 | barrels.populate(['products', 'tags'], function(err) { 195 | if (err) 196 | return done(err); 197 | 198 | done(); 199 | }); 200 | }); 201 | }); 202 | }); 203 | }); 204 | 205 | it('should populate products but not categories', function(done) { 206 | Products.find().exec(function(err, products) { 207 | if (err) 208 | return done(err); 209 | 210 | products.length.should.be.greaterThan(1); 211 | }); 212 | 213 | Categories.find().exec(function(err, categories) { 214 | if (err) 215 | return done(err); 216 | 217 | categories.length.should.be.eql(0); 218 | }); 219 | 220 | done(); 221 | }); 222 | }); 223 | 224 | it('should ask for specific order while populating models with required associations', function(done) { 225 | barrels.populate(['products'], function(err) { 226 | should(err.message).be.eql('Please provide a loading order acceptable for required associations'); 227 | 228 | done(); 229 | }); 230 | }); 231 | }); 232 | }); 233 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --timeout 5000 2 | --------------------------------------------------------------------------------