├── .codeclimate.yml ├── .gitignore ├── .jshintrc ├── .npmignore ├── .travis.yml ├── Gruntfile.js ├── LICENSE ├── README.md ├── bin └── pastebin.js ├── index.js ├── lib ├── config.js └── methods.js ├── package-lock.json ├── package.json ├── tests ├── createPaste.js ├── createPasteFromFile.js ├── getPaste.js ├── getUserInfo.js ├── pastebin.js └── textfile.txt └── yarn.lock /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | exclude_paths: 2 | - tests/**/* 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | .idea/* 11 | 12 | pids 13 | logs 14 | results 15 | 16 | tmp 17 | 18 | npm-debug.log 19 | node_modules 20 | 21 | test.* 22 | test.js 23 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node" : true, 3 | "indent" : 4, 4 | "maxerr" : 100, 5 | "quotmark" : "single", 6 | "bitwise" : true, 7 | "curly" : true, 8 | "eqeqeq" : true, 9 | "forin" : true, 10 | "immed" : true, 11 | "latedef" : true, 12 | "newcap" : true, 13 | "noarg" : true, 14 | "noempty" : true, 15 | "nonew" : true, 16 | "plusplus" : false, 17 | "regexp" : true, 18 | "undef" : true, 19 | "strict" : true, 20 | "trailing" : true, 21 | "asi" : false, 22 | "boss" : false, 23 | "debug" : false, 24 | "eqnull" : false, 25 | "es5" : false, 26 | "esnext" : false, 27 | "evil" : false, 28 | "expr" : false, 29 | "funcscope" : false, 30 | "globalstrict" : false, 31 | "iterator" : false, 32 | "lastsemic" : false, 33 | "laxbreak" : false, 34 | "laxcomma" : false, 35 | "loopfunc" : false, 36 | "multistr" : false, 37 | "onecase" : false, 38 | "proto" : false, 39 | "regexdash" : false, 40 | "scripturl" : false, 41 | "smarttabs" : false, 42 | "shadow" : false, 43 | "sub" : false, 44 | "supernew" : false, 45 | "validthis" : false 46 | } 47 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .git* 2 | docs/ 3 | examples/ 4 | support/ 5 | tests/ 6 | test.* 7 | testing.js 8 | .DS_Store 9 | coverage.html 10 | lib-cov 11 | test.js 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "10" 4 | - "node" 5 | - "lts/*" 6 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = function (grunt){ 3 | grunt.initConfig({ 4 | pkg: grunt.file.readJSON('package.json'), 5 | jshint: { 6 | all: [ 7 | 'Gruntfile.js', 8 | 'index.js', 9 | 'bin/*.js', 10 | 'lib/*.js', 11 | 'tests/*.js' 12 | ], 13 | options: { 14 | jshintrc : '.jshintrc', 15 | reporter: require('jshint-stylish'), 16 | force: false 17 | } 18 | }, 19 | watch : { 20 | jshint : { 21 | files : '<%= jshint.all %>', 22 | tasks: ['jshint'] 23 | }, 24 | simplemocha : { 25 | files : '<%= jshint.all %>' 26 | } 27 | }, 28 | simplemocha: { 29 | options: {}, 30 | all: { src: ['tests/*.js'] } 31 | } 32 | }); 33 | 34 | grunt.loadNpmTasks('grunt-contrib-jshint'); 35 | grunt.loadNpmTasks('grunt-contrib-watch'); 36 | grunt.loadNpmTasks('grunt-simple-mocha'); 37 | grunt.loadNpmTasks('grunt-shell'); 38 | 39 | // Default task. 40 | grunt.registerTask('default', ['jshint']); 41 | 42 | grunt.registerTask('test', ['jshint', 'simplemocha']); 43 | grunt.registerTask('build', ['test']); 44 | 45 | grunt.registerTask('dev', ['test', 'watch']); 46 | }; 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2016 J.W Lagendijk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | pastebin-js 2 | =========== 3 | 4 | 5 | 6 | > Update 2023-11-22 --- I consider this package to be **deprecated**. Please install [pastedeno](https://www.npmjs.com/package/pastedeno) for an up to date wrapper for Pastebin! Active development on the current package is halted 7 | 8 | 9 | 10 | [![NPM](https://nodei.co/npm/pastebin-js.svg?downloads=true&stars=true)](https://nodei.co/npm/pastebin-js/) 11 | 12 | [![Build Status](https://travis-ci.org/j3lte/pastebin-js.svg?branch=master)](https://travis-ci.org/j3lte/pastebin-js) 13 | [![DAVID](https://david-dm.org/j3lte/pastebin-js.svg)](https://david-dm.org/j3lte/pastebin-js) 14 | [![npm version](https://badge.fury.io/js/pastebin-js.svg)](http://badge.fury.io/js/pastebin-js) 15 | [![Development Dependency Status](https://david-dm.org/j3lte/pastebin-js/dev-status.svg?theme=shields.io)](https://david-dm.org/j3lte/pastebin-js#info=devDependencies) 16 | [![Code Climate](https://codeclimate.com/github/j3lte/pastebin-js/badges/gpa.svg)](https://codeclimate.com/github/j3lte/pastebin-js) 17 | 18 | NodeJS module to access the Pastebin API 19 | 20 | ```js 21 | var PastebinAPI = require('pastebin-js'), 22 | pastebin = new PastebinAPI('devkey'); 23 | ``` 24 | 25 | 26 | ## Features 27 | 28 | * getPaste : get a raw paste 29 | * createAPIuserKey : get a userkey for the authenticated user 30 | * listUserPastes : get a list of the pastes from the authenticated user 31 | * getUserInfo : get a list of info from the authenticated user 32 | * listTrendingPastes : get a list of the trending pastes on Pastebin 33 | * createPaste : create a paste 34 | * createPasteFromFile : read a file (UTF8) and paste it 35 | * deletePaste : delete a paste created by the user 36 | 37 | ## Example 38 | 39 | ```js 40 | var PastebinAPI = require('pastebin-js'), 41 | pastebin = new PastebinAPI({ 42 | 'api_dev_key' : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 43 | 'api_user_name' : 'PastebinUserName', 44 | 'api_user_password' : 'PastebinPassword' 45 | }); 46 | 47 | pastebin 48 | .createPasteFromFile("./uploadthistopastebin.txt", "pastebin-js test", null, 1, "N") 49 | .then(function (data) { 50 | // we have successfully pasted it. Data contains the id 51 | console.log(data); 52 | }) 53 | .fail(function (err) { 54 | console.log(err); 55 | }); 56 | ``` 57 | 58 | ## API 59 | 60 | **PastebinAPI()** : Constructor. 61 | 62 | ```js 63 | var PastebinAPI = require('pastebin-js'); 64 | 65 | // Without any parameter you can only use getPaste! 66 | var pastebin = new PastebinAPI(); 67 | 68 | // Provide a developer key as string, this key can be found when logged in. 69 | // This can be found here: http://pastebin.com/api#1 70 | var pastebin = new PastebinAPI('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); 71 | 72 | // Provide an object containing the api_dev_key, api_user_name and api_user_password 73 | pastebin = new PastebinAPI({ 74 | 'api_dev_key' : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 75 | 'api_user_name' : 'PastebinUserName', 76 | 'api_user_password' : 'PastebinPassword' 77 | }); 78 | ``` 79 | 80 | ## GET 81 | 82 | **pastebin.getPaste(pasteID)** : get a raw paste, providing the ``pasteID`` 83 | 84 | ```js 85 | pastebin 86 | .getPaste('76b2yNRt') 87 | .then(function (data) { 88 | // data contains the raw paste 89 | console.log(data); 90 | }) 91 | .fail(function (err) { 92 | // Something went wrong 93 | console.log(err); 94 | }) 95 | ``` 96 | 97 | **pastebin.getPaste(pasteID, isPrivate)** : get a private paste. Set ``isPrivate`` to ``true``. You will need to provide a username & password in your config! 98 | 99 | **pastebin.getUserInfo()** : gets the userinfo 100 | 101 | **pastebin.listUserPastes(limit)** : gets a list of pastes from the user. ``limit`` is optional, from 1 - 100 (default: 50) 102 | 103 | **pastebin.listTrendingPastes()** : gets a list of trending pastes on Pastebin 104 | 105 | ## POST 106 | 107 | **pastebin.createPaste(text, title, format, privacy, expiration)** : creates a paste. ``text`` is required, other 108 | arguments are optional. For ``format``, ``privacy`` and ``expiration``, have a look at **lib/config.js** for the allowed input. 109 | If ``privacy`` is set to **2** or **3**, you will need to provide a username && password in the constructor (Pastebin requires a api_user_key) 110 | 111 | ```js 112 | pastebin 113 | .createPaste("Test from pastebin-js", "pastebin-js") 114 | .then(function (data) { 115 | // paste successfully created, data contains the id 116 | console.log(data); 117 | }) 118 | .fail(function (err) { 119 | // Something went wrong 120 | console.log(err); 121 | }) 122 | ``` 123 | 124 | **pastebin.createPasteFromFile(filename, title, format, privacy, expiration)** : tries to read the file provided in ``filename`` (UTF-8) and paste it. Works the same as previous method. 125 | 126 | You can also use an object as the first parameter: 127 | 128 | ```js 129 | pastebin 130 | .createPaste({ 131 | text: "This is a private paste", 132 | title: "Private", 133 | format: null, 134 | privacy: 2, 135 | expiration: '10M' 136 | }) 137 | 138 | pastebin 139 | .createPasteFromFile({ 140 | filename: "./filename.txt", 141 | title: "Public text file listed under my username", 142 | format: null, 143 | privacy: 3, 144 | expiration: '10M' 145 | }) 146 | 147 | ``` 148 | 149 | ### Privacy 150 | 151 | The ``.createPaste`` and ``.createPasteFromFile`` use privacy levels that are listed on the [Pastebin API](http://pastebin.com/api#7), with one extra added. The following levels are available: 152 | 153 | ``` 154 | 0 = Public, anonymous 155 | 1 = Unlisted, anonymous 156 | 2 = Private, user 157 | 3 = Public, user 158 | ``` 159 | 160 | Keep this in mind when you want to create a paste. Level 2 and 3 are posted under your username on Pastebin (and will need a Username and Password in the constructor, see above) 161 | 162 | ## DELETE 163 | 164 | **pastebin.deletePaste(pasteID)** : Tries to delete a paste, created by the user 165 | 166 | ## Synchronous support 167 | 168 | pastebin-js now has synchronous support as well. The following methods are available: 169 | 170 | ``` 171 | .getPasteSync(id, callback) 172 | .createPasteSync(text, title, format, privacy, expiration, callback) 173 | .createPasteSync(object, callback) 174 | .createPasteFromFileSync(filename, title, format, privacy, expiration, callback) 175 | .createPasteFromFileSync(object, callback) 176 | .deletePasteSync(pasteID, callback) 177 | .listUserPastesSync(limit, callback) 178 | .listTrendingPastesSync(callback) 179 | .getUserInfoSync(callback) 180 | ``` 181 | 182 | The callback will be called with two parameters: ```callback(err, data)``` 183 | 184 | ## Bugs / issues 185 | 186 | Please, if you find any bugs, or are a way better developer than I am (as in, you are thinking 'spaghetti' when looking at my 187 | code), feel free to create an issue or provide me with some pull requests! This is my first full module ever written for 188 | NodeJS. 189 | 190 | ## License 191 | 192 | Copyright (c) 2013-2016 J.W. Lagendijk <jwlagendijk@gmail.com> 193 | 194 | Permission is hereby granted, free of charge, to any person obtaining 195 | a copy of this software and associated documentation files (the 196 | 'Software'), to deal in the Software without restriction, including 197 | without limitation the rights to use, copy, modify, merge, publish, 198 | distribute, sublicense, and/or sell copies of the Software, and to 199 | permit persons to whom the Software is furnished to do so, subject to 200 | the following conditions: 201 | 202 | The above copyright notice and this permission notice shall be 203 | included in all copies or substantial portions of the Software. 204 | 205 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 206 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 207 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 208 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 209 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 210 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 211 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 212 | -------------------------------------------------------------------------------- /bin/pastebin.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /* 3 | * pastebin-js 4 | * https://github.com/j3lte/pastebin-js 5 | * 6 | * Copyright (c) 2013-2019 Jelte Lagendijk 7 | * Licensed under the MIT license. 8 | */ 9 | 10 | var _ = require('underscore'); 11 | var fs = require('fs'); 12 | var xml2js = require('xml2js'); 13 | var Q = require('q'); 14 | var method = require('../lib/methods'); 15 | var conf = require('../lib/config'); 16 | 17 | /** 18 | * Pastebin constructor 19 | */ 20 | function Pastebin(config) { 21 | if (typeof config === 'string') { 22 | config = { api_dev_key : config }; 23 | } 24 | this.config = _.extend(conf.defaults, config); 25 | } 26 | 27 | /** 28 | * Get a paste 29 | * @param {String} id Id of the paste 30 | * @param {Boolean} isPrivate Is this a private paste? Optional 31 | * @return {Object} Promise 32 | */ 33 | Pastebin.prototype.getPaste = function (id, isPrivate) { 34 | if (!id) { 35 | var deferred = Q.defer(); 36 | deferred.reject(new Error('No paste id!')); 37 | return deferred.promise; 38 | } 39 | if (isPrivate) { 40 | var p = { 41 | api_option : 'show_paste', 42 | api_dev_key : this.config.api_dev_key, 43 | api_paste_key : id, 44 | }; 45 | var deferred = Q.defer(); 46 | if (this.config.api_user_key) { 47 | p.api_user_key = this.config.api_user_key; 48 | } else if (this.config.api_user_name !== null && this.config.api_user_password !== null) { 49 | this 50 | .createAPIuserKey() 51 | .then(function () { 52 | this.getPaste(id, isPrivate) 53 | .then(deferred.resolve) 54 | .catch(deferred.reject); 55 | return deferred.promise; 56 | }.bind(this)) 57 | .catch(deferred.reject); 58 | return deferred.promise; 59 | } else { 60 | deferred.reject(new Error('Error! For private pastes you need to be logged in! Provide username and password!')); 61 | return deferred.promise; 62 | } 63 | return this._postApi(conf.net.protocol + conf.net.base + conf.net.endpoint.apiraw, p); 64 | } 65 | return this._getApi(conf.net.protocol + conf.net.base + conf.net.endpoint.raw + id, null); 66 | }; 67 | 68 | /** 69 | * Create a paste 70 | * @param {String} text Text to be pasted 71 | * @param {String} title Title of the paste (optional) 72 | * @param {String} format Format of the paste, for syntax highlighting. See /lib/config.js (optional) 73 | * @param {Number} privacy Privacylevel of the paste (0 = public, 1 = unlisted and 2 = private) (optional, default = 0) 74 | * @param {String} expiration Expiration time of the paste See /lib/config.js 75 | * @return {Object} Promise 76 | */ 77 | Pastebin.prototype.createPaste = function (text, title, format, privacy, expiration) { 78 | if (_.isObject(text) && typeof title === 'undefined') { 79 | // assume the first parameter is an object with the information 80 | expiration = text.expiration; 81 | privacy = text.privacy; 82 | format = text.format; 83 | title = text.title; 84 | text = text.text; 85 | } 86 | 87 | var deferred = Q.defer(); 88 | var p = { 89 | api_option : 'paste', 90 | api_dev_key : this.config.api_dev_key, 91 | api_paste_code : text, 92 | }; 93 | var noKeyNeeded = true; 94 | 95 | if (typeof text !== 'string') { 96 | deferred.reject(new Error('Error! Paste can only be a text!')); 97 | return deferred.promise; 98 | } 99 | 100 | if (typeof title !== 'undefined' && title !== null) { 101 | p.api_paste_name = title; 102 | } 103 | 104 | if (typeof format !== 'undefined' && format !== null) { 105 | if (conf.formats[format]) { 106 | p.api_paste_format = format; 107 | } else { 108 | deferred.reject(new Error('Error! Paste format ' + format + ' is unknown.')); 109 | return deferred.promise; 110 | } 111 | } 112 | 113 | if (typeof privacy !== 'undefined' && privacy !== null) { 114 | p.api_paste_private = privacy; 115 | if (privacy === 0 || privacy === 1) { 116 | p.api_paste_private = privacy; 117 | } else if (privacy === 2 || privacy === 3) { 118 | if (this.config.api_user_key) { 119 | p.api_user_key = this.config.api_user_key; 120 | } else if (this.config.api_user_name !== null && this.config.api_user_password !== null) { 121 | noKeyNeeded = false; 122 | this.createAPIuserKey() 123 | .then(function () { 124 | this.createPaste(text, title, format, privacy, expiration) 125 | .then(deferred.resolve) 126 | .catch(deferred.reject); 127 | return deferred.promise; 128 | }.bind(this)) 129 | .catch(deferred.reject); 130 | } else { 131 | deferred.reject(new Error('Error! For this privacy level you need to be logged in! Provide username and password!')); 132 | return deferred.promise; 133 | } 134 | } else { 135 | deferred.reject(new Error('Error! Privacy level is unknown!')); 136 | return deferred.promise; 137 | } 138 | } 139 | 140 | if (typeof expiration !== 'undefined' && expiration !== null) { 141 | if (!conf.expiration[expiration]) { 142 | deferred.reject(new Error('Error! Paste expiration ' + expiration + ' is unknown.')); 143 | return deferred.promise; 144 | } 145 | p.api_paste_expire_date = expiration; 146 | } 147 | 148 | if (noKeyNeeded) { 149 | // Paste privacy 3 = Public, under user 150 | if (p.api_paste_private === 3) { 151 | p.api_paste_private = 0; 152 | } 153 | return this._postApi(conf.net.protocol + conf.net.base + conf.net.endpoint.post, p); 154 | } 155 | return deferred.promise; 156 | }; 157 | 158 | /** 159 | * Create a paste from a file 160 | * @param {String} filename Location of the filename 161 | * @param {String} title Title of the paste (optional) 162 | * @param {String} format Format of the paste, for syntax highlighting. See /lib/config.js (optional) 163 | * @param {Number} privacy Privacylevel of the paste (0 = public, 1 = unlisted and 2 = private) (optional, default = 0) 164 | * @param {String} expiration Expiration time of the paste See /lib/config.js 165 | * @return {Object} Promise 166 | */ 167 | Pastebin.prototype.createPasteFromFile = function (filename, title, format, privacy, expiration) { 168 | if (_.isObject(filename) && typeof title === 'undefined') { 169 | // assume the first parameter is an object with the information 170 | expiration = filename.expiration; 171 | privacy = filename.privacy; 172 | format = filename.format; 173 | title = filename.title; 174 | filename = filename.filename; 175 | } 176 | 177 | var deferred = Q.defer(); 178 | var self = this; 179 | 180 | if ('undefined' === typeof filename || !filename) { 181 | deferred.reject(new Error('Filename not provided')); 182 | } else { 183 | fs.readFile(filename, 'UTF8', function (err, data) { 184 | if (err) { 185 | deferred.reject(new Error('Readfile error: ' + err)); 186 | } 187 | 188 | self.createPaste(data, title, format, privacy, expiration) 189 | .then(deferred.resolve) 190 | .catch(deferred.reject); 191 | 192 | }); 193 | } 194 | 195 | return deferred.promise; 196 | }; 197 | 198 | /** 199 | * Delete a paste that is created by the user 200 | * @param {String} pasteID The id of the userpaste (http://pastebin.com/[id]) 201 | * @return {Object} Promise 202 | */ 203 | Pastebin.prototype.deletePaste = function (pasteID) { 204 | var deferred = Q.defer(); 205 | 206 | if (!pasteID) { 207 | deferred.reject(new Error('Please provide a paste ID to delete')); 208 | return deferred.promise; 209 | } 210 | 211 | var params = { 212 | api_option : 'delete', 213 | api_dev_key : this.config.api_dev_key, 214 | api_paste_key : pasteID 215 | }; 216 | 217 | 218 | if (this.config.api_user_key) { 219 | params.api_user_key = this.config.api_user_key; 220 | this._postApi(conf.net.protocol + conf.net.base + conf.net.endpoint.post, params) 221 | .then(deferred.resolve) 222 | .catch(deferred.reject); 223 | } else if (this.config.api_user_name !== null && this.config.api_user_password !== null) { 224 | this.createAPIuserKey() 225 | .then(function () { 226 | this.deletePaste(pasteID) 227 | .then(deferred.resolve) 228 | .catch(deferred.reject); 229 | }.bind(this)); 230 | } else { 231 | deferred.reject(new Error('Error! Deleting a paste created by the user needs username and password')); 232 | } 233 | 234 | return deferred.promise; 235 | }; 236 | 237 | Pastebin.prototype._postAndParse = function (params, parseFunc, deferred) { 238 | this._postApi(conf.net.protocol + conf.net.base + conf.net.endpoint.post, params) 239 | .then(function (data) { 240 | parseFunc(data) 241 | .then(deferred.resolve) 242 | .catch(deferred.reject); 243 | }.bind(this)) 244 | .catch(deferred.reject); 245 | }; 246 | 247 | /** 248 | * Create userkey. Saved in config.api_user_key 249 | * @return {Object} Promise 250 | */ 251 | Pastebin.prototype.createAPIuserKey = function () { 252 | var deferred = Q.defer(); 253 | 254 | this._getRequired(['api_dev_key', 'api_user_name', 'api_user_password']) 255 | .then(function (params) { 256 | this._postApi(conf.net.protocol + conf.net.base + conf.net.endpoint.login, params) 257 | .then(function (data) { 258 | if (data.length !== 32) { 259 | deferred.reject(new Error('Error in createAPIuserKey! ' + data)); 260 | } else { 261 | this.config.api_user_key = data; 262 | deferred.resolve(true); 263 | } 264 | }.bind(this)) 265 | .catch(deferred.reject); 266 | }.bind(this)) 267 | .catch(deferred.reject); 268 | 269 | return deferred.promise; 270 | }; 271 | 272 | /** 273 | * List the pastes that are created by the user 274 | * @param {Number} limit Set the limit of pastes 275 | * @return {Object} Promise 276 | */ 277 | Pastebin.prototype.listUserPastes = function (limit) { 278 | var deferred = Q.defer(); 279 | var l = limit || 50; 280 | 281 | if (!this.config.api_user_key) { 282 | this.createAPIuserKey() 283 | .then(function () { 284 | this.listUserPastes(limit) 285 | .then(deferred.resolve) 286 | .catch(deferred.reject); 287 | }.bind(this)) 288 | .catch(deferred.reject); 289 | } else { 290 | var params = { 291 | api_dev_key : this.config.api_dev_key, 292 | api_user_key : this.config.api_user_key, 293 | api_results_limit : l, 294 | api_option : 'list' 295 | }; 296 | this._postAndParse(params, this._parsePastes.bind(this), deferred); 297 | } 298 | 299 | return deferred.promise; 300 | }; 301 | 302 | /** 303 | * Lists the trending pastes 304 | * @return {Object} Promise 305 | */ 306 | Pastebin.prototype.listTrendingPastes = function () { 307 | var deferred = Q.defer(); 308 | var params = { 309 | api_option : 'trends', 310 | api_dev_key : this.config.api_dev_key 311 | }; 312 | this._postAndParse(params, this._parsePastes.bind(this), deferred); 313 | 314 | return deferred.promise; 315 | }; 316 | 317 | /** 318 | * Gets the info of the user 319 | * @return {Object} Promise 320 | */ 321 | Pastebin.prototype.getUserInfo = function () { 322 | var deferred = Q.defer(); 323 | var params = { 324 | api_option : 'userdetails', 325 | api_dev_key : this.config.api_dev_key 326 | }; 327 | 328 | if (!this.config.api_user_key) { 329 | this.createAPIuserKey() 330 | .then(function () { 331 | this.getUserInfo() 332 | .then(deferred.resolve) 333 | .catch(deferred.reject); 334 | }.bind(this)) 335 | .catch(deferred.reject); 336 | } else { 337 | params.api_user_key = this.config.api_user_key; 338 | this._postAndParse(params, this._parseUser.bind(this), deferred); 339 | } 340 | 341 | return deferred.promise; 342 | }; 343 | 344 | /** 345 | * Parse an XML file containing pastes 346 | * @param {String} xml XML 347 | * @return {Object} Promise 348 | */ 349 | Pastebin.prototype._parsePastes = function (xml) { 350 | var deferred = Q.defer(); 351 | 352 | this._parseXML(xml) 353 | .then(function (data) { 354 | if (data) { 355 | var rootObj = data.paste; 356 | var normalize = _.map(rootObj, function (paste) { 357 | var obj = {}; 358 | _.map(_.keys(paste), function (key) { 359 | obj[key] = paste[key][0]; 360 | }); 361 | return obj; 362 | }); 363 | deferred.resolve(normalize); 364 | } else { 365 | deferred.reject(new Error('No data returned to _parsePastes!')); 366 | } 367 | }) 368 | .catch(deferred.reject); 369 | 370 | return deferred.promise; 371 | }; 372 | 373 | /** 374 | * Parse an XML file containing userdata 375 | * @param {String} xml XML 376 | * @return {Object} Promise 377 | */ 378 | Pastebin.prototype._parseUser = function (xml) { 379 | var deferred = Q.defer(); 380 | 381 | this._parseXML(xml) 382 | .then(function (data) { 383 | if (data) { 384 | var rootObj = data.user[0]; 385 | var normalize = {}; 386 | _.each(Object.keys(rootObj), function (key) { normalize[key] = rootObj[key][0]; }); 387 | deferred.resolve(normalize); 388 | } else { 389 | deferred.reject(new Error('No data returned to _parseUser!')); 390 | } 391 | }) 392 | .catch(deferred.reject); 393 | 394 | return deferred.promise; 395 | }; 396 | 397 | /** 398 | * Parse an XML file 399 | * @param {String} xml XML 400 | * @return {Object} Promise 401 | */ 402 | Pastebin.prototype._parseXML = function (xml) { 403 | var deferred = Q.defer(); 404 | var xmlString = ''; 405 | var parser = new xml2js.Parser({ 406 | 'trim' : true, 407 | 'explicitRoot' : false 408 | }); 409 | 410 | if (!xml) { 411 | deferred.reject(new Error('No xml provided!')); 412 | return deferred.promise; 413 | } 414 | 415 | xmlString = '\n' + xml + '\n'; 416 | parser.parseString(xmlString, function (err, data) { 417 | if (err) { 418 | deferred.reject(new Error('Error in parsing XML: ' + err)); 419 | } else { 420 | deferred.resolve(data); 421 | } 422 | }); 423 | 424 | return deferred.promise; 425 | }; 426 | 427 | /** 428 | * Returns a list with the required parameters from config 429 | * @param {Array} paramlist List of parameters 430 | */ 431 | Pastebin.prototype._getRequired = function (paramlist) { 432 | var deferred = Q.defer(); 433 | var ret = _.filter(paramlist, function(param) { 434 | return this.config[param] !== null; 435 | }.bind(this)); 436 | 437 | if (Object.keys(ret).length !== paramlist.length) { 438 | deferred.reject(new Error('Missing parameters! ' + _.difference(paramlist, ret))); 439 | } else { 440 | ret = _.pick(this.config, paramlist); 441 | deferred.resolve(ret); 442 | } 443 | 444 | return deferred.promise; 445 | }; 446 | 447 | /** 448 | * Higher lever method for get requests 449 | * @param {String} path Path 450 | * @param {Object} params Parameters 451 | */ 452 | Pastebin.prototype._getApi = function (path, params) { 453 | return method.get(path, params); 454 | }; 455 | 456 | /** 457 | * Higher level method for post requests 458 | * @param {String} path Path 459 | * @param {Object} params Parameters 460 | */ 461 | Pastebin.prototype._postApi = function (path, params) { 462 | return method.post(path, params); 463 | }; 464 | 465 | /*************************************************** 466 | * Synchronous methods 467 | ***************************************************/ 468 | 469 | function runWithCallback(promiseFunc, callback) { 470 | if (!_.isFunction(callback)) { throw new Error('This function requires a callback!'); } 471 | promiseFunc.then(function (data) { 472 | callback(null, data); 473 | }).catch(function (err) { 474 | callback(err, null); 475 | }); 476 | } 477 | 478 | Pastebin.prototype.getPasteSync = function (id, callback) { 479 | runWithCallback(this.getPaste(id), callback); 480 | }; 481 | 482 | Pastebin.prototype.createPasteSync = function (text, title, format, privacy, expiration, callback) { 483 | if (_.isObject(text) && _.isFunction(title)) { 484 | callback = title; 485 | runWithCallback(this.createPaste(text), callback); 486 | } else { 487 | runWithCallback(this.createPaste(text, title, format, privacy, expiration), callback); 488 | } 489 | }; 490 | 491 | Pastebin.prototype.createPasteFromFileSync = function (filename, title, format, privacy, expiration, callback) { 492 | if (_.isObject(filename) && _.isFunction(title)) { 493 | callback = title; 494 | runWithCallback(this.createPasteFromFile(filename), callback); 495 | } else { 496 | runWithCallback(this.createPasteFromFile(filename, title, format, privacy, expiration), callback); 497 | } 498 | }; 499 | 500 | Pastebin.prototype.deletePasteSync = function (pasteID, callback) { 501 | runWithCallback(this.deletePaste(pasteID), callback); 502 | }; 503 | 504 | Pastebin.prototype.listUserPastesSync = function (limit, callback) { 505 | runWithCallback(this.listUserPastes(limit), callback); 506 | }; 507 | 508 | Pastebin.prototype.listTrendingPastesSync = function (callback) { 509 | runWithCallback(this.listTrendingPastes(), callback); 510 | }; 511 | 512 | Pastebin.prototype.getUserInfoSync = function (callback) { 513 | runWithCallback(this.getUserInfo(), callback); 514 | }; 515 | 516 | module.exports = Pastebin; 517 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /* 3 | * pastebin-js 4 | * https://github.com/j3lte/pastebin-js 5 | * 6 | * Copyright (c) 2013-2019 Jelte Lagendijk 7 | * Licensed under the MIT license. 8 | */ 9 | 10 | /** 11 | * Export Pastebin 12 | */ 13 | 14 | exports = module.exports = require('./bin/pastebin'); 15 | 16 | /** 17 | * Export the version 18 | */ 19 | exports.version = require('./package.json').version; 20 | -------------------------------------------------------------------------------- /lib/config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /* 3 | * pastebin-js 4 | * https://github.com/j3lte/pastebin-js 5 | * 6 | * Copyright (c) 2013-2019 Jelte Lagendijk 7 | * Licensed under the MIT license. 8 | */ 9 | var config = module.exports = { 10 | defaults : { 11 | api_dev_key : null, 12 | api_user_key : null, 13 | api_user_name : null, 14 | api_user_password : null, 15 | }, 16 | net : { 17 | 'protocol' : 'https://', 18 | 'base' : 'pastebin.com/', 19 | 'endpoint' : { 20 | 'post' : 'api/api_post.php', 21 | 'apiraw' : 'api/api_raw.php', 22 | 'login' : 'api/api_login.php', 23 | 'raw' : 'raw.php?i=' 24 | } 25 | }, 26 | expiration : { 27 | 'N' : 'Never', 28 | '10M' : '10 Minutes', 29 | '1H' : '1 Hour', 30 | '1D' : '1 Day', 31 | '1W' : '1 Week', 32 | '2W' : '2 Weeks', 33 | '1M' : '1 Month' 34 | }, 35 | formats : { 36 | '4cs' : '4CS', 37 | '6502acme' : '6502 ACME Cross Assembler', 38 | '6502kickass' : '6502 Kick Assembler', 39 | '6502tasm' : '6502 TASM/64TASS', 40 | 'abap' : 'ABAP', 41 | 'actionscript' : 'ActionScript', 42 | 'actionscript3' : 'ActionScript 3', 43 | 'ada' : 'Ada', 44 | 'aimms' : 'AIMMS', 45 | 'algol68' : 'ALGOL 68', 46 | 'apache' : 'Apache Log', 47 | 'applescript' : 'AppleScript', 48 | 'apt_sources' : 'APT Sources', 49 | 'arm' : 'ARM', 50 | 'asm' : 'ASM (NASM)', 51 | 'asp' : 'ASP', 52 | 'asymptote' : 'Asymptote', 53 | 'autoconf' : 'autoconf', 54 | 'autohotkey' : 'Autohotkey', 55 | 'autoit' : 'AutoIt', 56 | 'avisynth' : 'Avisynth', 57 | 'awk' : 'Awk', 58 | 'bascomavr' : 'BASCOM AVR', 59 | 'bash' : 'Bash', 60 | 'basic4gl' : 'Basic4GL', 61 | 'dos' : 'Batch', 62 | 'bibtex' : 'BibTeX', 63 | 'blitzbasic' : 'Blitz Basic', 64 | 'b3d' : 'Blitz3D', 65 | 'bmx' : 'BlitzMax', 66 | 'bnf' : 'BNF', 67 | 'boo' : 'BOO', 68 | 'bf' : 'BrainFuck', 69 | 'c' : 'C', 70 | 'c_winapi' : 'C (WinAPI)', 71 | 'c_mac' : 'C for Macs', 72 | 'cil' : 'C Intermediate Language', 73 | 'csharp' : 'C#', 74 | 'cpp' : 'C++', 75 | 'cpp-winapi' : 'C++ (WinAPI)', 76 | 'cpp-qt' : 'C++ (with Qt extensions)', 77 | 'c_loadrunner' : 'C: Loadrunner', 78 | 'caddcl' : 'CAD DCL', 79 | 'cadlisp' : 'CAD Lisp', 80 | 'cfdg' : 'CFDG', 81 | 'chaiscript' : 'ChaiScript', 82 | 'chapel' : 'Chapel', 83 | 'clojure' : 'Clojure', 84 | 'klonec' : 'Clone C', 85 | 'klonecpp' : 'Clone C++', 86 | 'cmake' : 'CMake', 87 | 'cobol' : 'COBOL', 88 | 'coffeescript' : 'CoffeeScript', 89 | 'cfm' : 'ColdFusion', 90 | 'css' : 'CSS', 91 | 'cuesheet' : 'Cuesheet', 92 | 'd' : 'D', 93 | 'dart' : 'Dart', 94 | 'dcl' : 'DCL', 95 | 'dcpu16' : 'DCPU-16', 96 | 'dcs' : 'DCS', 97 | 'delphi' : 'Delphi', 98 | 'oxygene' : 'Delphi Prism (Oxygene)', 99 | 'diff' : 'Diff', 100 | 'div' : 'DIV', 101 | 'dot' : 'DOT', 102 | 'e' : 'E', 103 | 'ezt' : 'Easytrieve', 104 | 'ecmascript' : 'ECMAScript', 105 | 'eiffel' : 'Eiffel', 106 | 'email' : 'Email', 107 | 'epc' : 'EPC', 108 | 'erlang' : 'Erlang', 109 | 'fsharp' : 'F#', 110 | 'falcon' : 'Falcon', 111 | 'fo' : 'FO Language', 112 | 'f1' : 'Formula One', 113 | 'fortran' : 'Fortran', 114 | 'freebasic' : 'FreeBasic', 115 | 'freeswitch' : 'FreeSWITCH', 116 | 'gambas' : 'GAMBAS', 117 | 'gml' : 'Game Maker', 118 | 'gdb' : 'GDB', 119 | 'genero' : 'Genero', 120 | 'genie' : 'Genie', 121 | 'gettext' : 'GetText', 122 | 'go' : 'Go', 123 | 'groovy' : 'Groovy', 124 | 'gwbasic' : 'GwBasic', 125 | 'haskell' : 'Haskell', 126 | 'haxe' : 'Haxe', 127 | 'hicest' : 'HicEst', 128 | 'hq9plus' : 'HQ9 Plus', 129 | 'html4strict' : 'HTML', 130 | 'html5' : 'HTML 5', 131 | 'icon' : 'Icon', 132 | 'idl' : 'IDL', 133 | 'ini' : 'INI file', 134 | 'inno' : 'Inno Script', 135 | 'intercal' : 'INTERCAL', 136 | 'io' : 'IO', 137 | 'ispfpanel' : 'ISPF Panel Definition', 138 | 'j' : 'J', 139 | 'java' : 'Java', 140 | 'java5' : 'Java 5', 141 | 'javascript' : 'JavaScript', 142 | 'jcl' : 'JCL', 143 | 'jquery' : 'jQuery', 144 | 'json' : 'JSON', 145 | 'julia' : 'Julia', 146 | 'kixtart' : 'KiXtart', 147 | 'latex' : 'Latex', 148 | 'ldif' : 'LDIF', 149 | 'lb' : 'Liberty BASIC', 150 | 'lsl2' : 'Linden Scripting', 151 | 'lisp' : 'Lisp', 152 | 'llvm' : 'LLVM', 153 | 'locobasic' : 'Loco Basic', 154 | 'logtalk' : 'Logtalk', 155 | 'lolcode' : 'LOL Code', 156 | 'lotusformulas' : 'Lotus Formulas', 157 | 'lotusscript' : 'Lotus Script', 158 | 'lscript' : 'LScript', 159 | 'lua' : 'Lua', 160 | 'm68k' : 'M68000 Assembler', 161 | 'magiksf' : 'MagikSF', 162 | 'make' : 'Make', 163 | 'mapbasic' : 'MapBasic', 164 | 'matlab' : 'MatLab', 165 | 'mirc' : 'mIRC', 166 | 'mmix' : 'MIX Assembler', 167 | 'modula2' : 'Modula 2', 168 | 'modula3' : 'Modula 3', 169 | '68000devpac' : 'Motorola 68000 HiSoft Dev', 170 | 'mpasm' : 'MPASM', 171 | 'mxml' : 'MXML', 172 | 'mysql' : 'MySQL', 173 | 'nagios' : 'Nagios', 174 | 'netrexx' : 'NetRexx', 175 | 'newlisp' : 'newLISP', 176 | 'nginx' : 'Nginx', 177 | 'nimrod' : 'Nimrod', 178 | 'text' : 'None', 179 | 'nsis' : 'NullSoft Installer', 180 | 'oberon2' : 'Oberon 2', 181 | 'objeck' : 'Objeck Programming Langua', 182 | 'objc' : 'Objective C', 183 | 'ocaml-brief' : 'OCalm Brief', 184 | 'ocaml' : 'OCaml', 185 | 'octave' : 'Octave', 186 | 'pf' : 'OpenBSD PACKET FILTER', 187 | 'glsl' : 'OpenGL Shading', 188 | 'oobas' : 'Openoffice BASIC', 189 | 'oracle11' : 'Oracle 11', 190 | 'oracle8' : 'Oracle 8', 191 | 'oz' : 'Oz', 192 | 'parasail' : 'ParaSail', 193 | 'parigp' : 'PARI/GP', 194 | 'pascal' : 'Pascal', 195 | 'pawn' : 'Pawn', 196 | 'pcre' : 'PCRE', 197 | 'per' : 'Per', 198 | 'perl' : 'Perl', 199 | 'perl6' : 'Perl 6', 200 | 'php' : 'PHP', 201 | 'php-brief' : 'PHP Brief', 202 | 'pic16' : 'Pic 16', 203 | 'pike' : 'Pike', 204 | 'pixelbender' : 'Pixel Bender', 205 | 'plsql' : 'PL/SQL', 206 | 'postgresql' : 'PostgreSQL', 207 | 'postscript' : 'PostScript', 208 | 'povray' : 'POV-Ray', 209 | 'powershell' : 'Power Shell', 210 | 'powerbuilder' : 'PowerBuilder', 211 | 'proftpd' : 'ProFTPd', 212 | 'progress' : 'Progress', 213 | 'prolog' : 'Prolog', 214 | 'properties' : 'Properties', 215 | 'providex' : 'ProvideX', 216 | 'purebasic' : 'PureBasic', 217 | 'pycon' : 'PyCon', 218 | 'python' : 'Python', 219 | 'pys60' : 'Python for S60', 220 | 'q' : 'q/kdb+', 221 | 'qbasic' : 'QBasic', 222 | 'qml' : 'QML', 223 | 'rsplus' : 'R', 224 | 'racket' : 'Racket', 225 | 'rails' : 'Rails', 226 | 'rbs' : 'RBScript', 227 | 'rebol' : 'REBOL', 228 | 'reg' : 'REG', 229 | 'rexx' : 'Rexx', 230 | 'robots' : 'Robots', 231 | 'rpmspec' : 'RPM Spec', 232 | 'ruby' : 'Ruby', 233 | 'gnuplot' : 'Ruby Gnuplot', 234 | 'rust' : 'Rust', 235 | 'sas' : 'SAS', 236 | 'scala' : 'Scala', 237 | 'scheme' : 'Scheme', 238 | 'scilab' : 'Scilab', 239 | 'scl' : 'SCL', 240 | 'sdlbasic' : 'SdlBasic', 241 | 'smalltalk' : 'Smalltalk', 242 | 'smarty' : 'Smarty', 243 | 'spark' : 'SPARK', 244 | 'sparql' : 'SPARQL', 245 | 'sqf' : 'SQF', 246 | 'sql' : 'SQL', 247 | 'standardml' : 'StandardML', 248 | 'stonescript' : 'StoneScript', 249 | 'sclang' : 'SuperCollider', 250 | 'swift' : 'Swift', 251 | 'systemverilog' : 'SystemVerilog', 252 | 'tsql' : 'T-SQL', 253 | 'tcl' : 'TCL', 254 | 'teraterm' : 'Tera Term', 255 | 'thinbasic' : 'thinBasic', 256 | 'typoscript' : 'TypoScript', 257 | 'unicon' : 'Unicon', 258 | 'uscript' : 'UnrealScript', 259 | 'ups' : 'UPC', 260 | 'urbi' : 'Urbi', 261 | 'vala' : 'Vala', 262 | 'vbnet' : 'VB.NET', 263 | 'vbscript' : 'VBScript', 264 | 'vedit' : 'Vedit', 265 | 'verilog' : 'VeriLog', 266 | 'vhdl' : 'VHDL', 267 | 'vim' : 'VIM', 268 | 'visualprolog' : 'Visual Pro Log', 269 | 'vb' : 'VisualBasic', 270 | 'visualfoxpro' : 'VisualFoxPro', 271 | 'whitespace' : 'WhiteSpace', 272 | 'whois' : 'WHOIS', 273 | 'winbatch' : 'Winbatch', 274 | 'xbasic' : 'XBasic', 275 | 'xml' : 'XML', 276 | 'xorg_conf' : 'Xorg Config', 277 | 'xpp' : 'XPP', 278 | 'yaml' : 'YAML', 279 | 'z80' : 'Z80 Assembler', 280 | 'zxbasic' : 'ZXBasic' 281 | } 282 | }; 283 | -------------------------------------------------------------------------------- /lib/methods.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /* 3 | * pastebin-js 4 | * https://github.com/j3lte/pastebin-js 5 | * 6 | * Copyright (c) 2013-2019 Jelte Lagendijk 7 | * Licensed under the MIT license. 8 | */ 9 | var request = require('request'); 10 | var config = require('./config'); 11 | var pkg = require('../package.json'); 12 | var Q = require('q'); 13 | var TIMEOUT = 4000; 14 | var HEADERS = [ 15 | { 16 | name: 'User-Agent', 17 | value: 'Pastebin-js/' + pkg.version, 18 | }, 19 | { 20 | name: 'Cache-Control', 21 | value: 'no-cache' 22 | } 23 | ]; 24 | 25 | var methods = module.exports = { 26 | get : function (path, params) { 27 | var deferred = Q.defer(); 28 | 29 | if (!path) { 30 | deferred.reject(new Error('No path provided')); 31 | return deferred.promise; 32 | } 33 | if (!params) { 34 | params = {}; 35 | } 36 | 37 | request({ 38 | uri : path, 39 | qs : params, 40 | method : 'GET', 41 | headers : HEADERS, 42 | timeout : TIMEOUT, 43 | followRedirect : true 44 | }, function (error, response, body) { 45 | var status = response ? response.statusCode : null; 46 | if (error || status === null) { 47 | deferred.reject({status : status, error : error}); 48 | } 49 | if (status === 404) { 50 | deferred.reject(new Error('Error 404, paste not found!')); 51 | } 52 | if (status !== 200) { 53 | deferred.reject(new Error('Unknown error, status: ' + status)); 54 | } 55 | if (!body || body === null || body.length === 0) { 56 | deferred.reject(new Error('Empty response')); 57 | return; 58 | } 59 | if (body.indexOf('Bad API request') !== -1) { 60 | deferred.reject(new Error(body)); 61 | } 62 | deferred.resolve(body); 63 | }); 64 | 65 | return deferred.promise; 66 | }, 67 | post : function (path, params) { 68 | var deferred = Q.defer(); 69 | 70 | if (!path) { 71 | deferred.reject(new Error('No path provided')); 72 | return deferred.promise; 73 | } 74 | if (!params) { 75 | params = {}; 76 | } 77 | 78 | request({ 79 | uri : path, 80 | method : 'POST', 81 | form : params, 82 | headers : HEADERS, 83 | timeout : TIMEOUT, 84 | followRedirect : true 85 | }, function (error, response, body) { 86 | var status = response ? response.statusCode : null; 87 | if (error || status === null) { 88 | deferred.reject({status : status, error : error}); 89 | } 90 | if (status !== 200) { 91 | deferred.reject(new Error('Unknown error, status: ' + status)); 92 | } 93 | if (!body || body === null || body.length === 0) { 94 | deferred.reject(new Error('Empty response')); 95 | } 96 | if (body.indexOf('Bad API request') !== -1) { 97 | deferred.reject(new Error('Error: ' + body)); 98 | } 99 | if (body.indexOf('Post limit') !== -1) { 100 | deferred.reject(new Error('Error: ' + body)); 101 | } 102 | if (body.indexOf('http') === 0) { 103 | // return an ID instead of the url 104 | body = body.replace('http://pastebin.com/',''); 105 | } 106 | deferred.resolve(body); 107 | }); 108 | 109 | return deferred.promise; 110 | } 111 | }; 112 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pastebin-js", 3 | "version": "1.0.6", 4 | "description": "NodeJS module for Pastebin API", 5 | "main": "index", 6 | "bin": { 7 | "pastebin": "./bin/pastebin.js" 8 | }, 9 | "scripts": { 10 | "test": "./node_modules/.bin/mocha tests/*.js" 11 | }, 12 | "keywords": [ 13 | "pastebin" 14 | ], 15 | "dependencies": { 16 | "q": "^1.5.0", 17 | "request": "^2.84.0", 18 | "underscore": "^1.8.3", 19 | "xml2js": "^0.4.19" 20 | }, 21 | "devDependencies": { 22 | "chai": "^4.1.2", 23 | "chai-as-promised": "^7.1.1", 24 | "grunt": "^1.3.0", 25 | "grunt-contrib-jshint": "^1.1.0", 26 | "grunt-contrib-watch": "^1.1.0", 27 | "grunt-jsdoc-to-markdown": "^4.0.0", 28 | "grunt-simple-mocha": "^0.4.1", 29 | "jshint-stylish": "^2.2.1", 30 | "mocha": "^5.2.0", 31 | "nock": "^9.0.22", 32 | "sinon": "^6.2.0" 33 | }, 34 | "repository": { 35 | "type": "git", 36 | "url": "git://github.com/j3lte/pastebin-js" 37 | }, 38 | "engines": { 39 | "node": ">0.12" 40 | }, 41 | "readmeFilename": "README.md", 42 | "author": { 43 | "name": "J.W. Lagendijk", 44 | "email": "jwlagendijk@gmail.com", 45 | "url": "http://jelte.io" 46 | }, 47 | "license": "MIT", 48 | "contributors": [ 49 | "Ozitiho (https://github.com/Ozitiho)", 50 | "Nathan Morgan (https://github.com/NathMorgan)", 51 | "Brian White (https://github.com/mscdex)", 52 | "Peter Dave Hello (https://github.com/PeterDaveHello)", 53 | "James Freeman (https://github.com/jammaloo)", 54 | "gitrog (https://github.com/gitrous)", 55 | "Timmy Dusser-Jolly (https://github.com/tymmesyde)", 56 | "cthuluhoop123 (https://github.com/cthuluhoop123)" 57 | ] 58 | } 59 | -------------------------------------------------------------------------------- /tests/createPaste.js: -------------------------------------------------------------------------------- 1 | /* global it, describe, before, after, beforeEach, afterEach */ 2 | 'use strict'; 3 | /* 4 | * pastebin-js 5 | * https://github.com/j3lte/pastebin-js 6 | * 7 | * Copyright (c) 2013-2017 Jelte Lagendijk 8 | * Licensed under the MIT license. 9 | */ 10 | var chai = require('chai'); 11 | var sinon = require('sinon'); 12 | chai.should(); 13 | var chaiAsPromised = require('chai-as-promised'); 14 | chai.use(chaiAsPromised); 15 | var Q = require('q'); 16 | var Pastebin = require('../bin/pastebin'); 17 | 18 | var stubber = function (returnValue, error) { 19 | return function (path, params) { 20 | var deferred = Q.defer(); 21 | if (error) { 22 | deferred.reject(returnValue); 23 | } else { 24 | deferred.resolve(returnValue); 25 | } 26 | return deferred.promise; 27 | }; 28 | }; 29 | 30 | // BASIC TESTS 31 | describe('Pastebin :: createPaste', function () { 32 | 33 | var pastebin = new Pastebin({}); 34 | 35 | afterEach(function () { 36 | pastebin._postApi.restore && pastebin._postApi.restore(); 37 | }); 38 | 39 | beforeEach(function () { 40 | sinon.stub(pastebin, '_postApi').callsFake(stubber('', false)); // Just to make sure we're not posting to Pastebin while testing 41 | }); 42 | 43 | it('reject with error if no paste text', function () { 44 | return pastebin.createPaste({}).should.be.rejectedWith('Error! Paste can only be a text!'); 45 | }); 46 | 47 | it('reject with error if no paste text in object', function () { 48 | return pastebin.createPaste({}).should.be.rejectedWith('Error! Paste can only be a text!'); 49 | }); 50 | 51 | it('fulfilles with a paste ID', function () { 52 | pastebin._postApi.restore && pastebin._postApi.restore(); 53 | sinon.stub(pastebin, '_postApi').callsFake(stubber('As3IMeWV', false)); 54 | return pastebin.createPaste('Test').should.eventually.equal('As3IMeWV'); 55 | }); 56 | 57 | it('reject with error if format cannot be found', function () { 58 | return pastebin.createPaste('Test', null, 'unknown-script').should.be.rejectedWith('Error! Paste format unknown-script is unknown.'); 59 | }); 60 | 61 | it('reject with error if expiration cannot be found', function () { 62 | return pastebin.createPaste('Test', null, null, null, '1Y').should.be.rejectedWith('Error! Paste expiration 1Y is unknown.'); 63 | }); 64 | 65 | it('reject with error if privacy is set but no user & password are found', function () { 66 | var pb = new Pastebin(); 67 | sinon.stub(pb, '_postApi').callsFake(stubber('', false)); // Just to make sure we're not posting to Pastebin while testing 68 | return pb.createPaste('Test', null, null, 2, null).should.be.rejectedWith('Error! For this privacy level you need to be logged in! Provide username and password!'); 69 | }); 70 | }); 71 | -------------------------------------------------------------------------------- /tests/createPasteFromFile.js: -------------------------------------------------------------------------------- 1 | /* global it, describe, before, after, beforeEach, afterEach */ 2 | 'use strict'; 3 | /* 4 | * pastebin-js 5 | * https://github.com/j3lte/pastebin-js 6 | * 7 | * Copyright (c) 2013-2017 Jelte Lagendijk 8 | * Licensed under the MIT license. 9 | */ 10 | var chai = require('chai'); 11 | var sinon = require('sinon'); 12 | var path = require('path'); 13 | chai.should(); 14 | var chaiAsPromised = require('chai-as-promised'); 15 | chai.use(chaiAsPromised); 16 | var Q = require('q'); 17 | var Pastebin = require('../bin/pastebin'); 18 | 19 | var stubber = function (returnValue, error) { 20 | return function (path, params) { 21 | var deferred = Q.defer(); 22 | if (error) { 23 | deferred.reject(returnValue); 24 | } else { 25 | deferred.resolve(returnValue); 26 | } 27 | return deferred.promise; 28 | }; 29 | }; 30 | 31 | // BASIC TESTS 32 | describe('Pastebin :: createPasteFromFile', function () { 33 | 34 | var pastebin = new Pastebin({}); 35 | var filename = path.join(__dirname, 'textfile.txt'); 36 | 37 | afterEach(function () { 38 | pastebin._postApi.restore && pastebin._postApi.restore(); 39 | }); 40 | 41 | beforeEach(function () { 42 | sinon.stub(pastebin, '_postApi').callsFake(stubber('', false)); // Just to make sure we're not posting to Pastebin while testing 43 | }); 44 | 45 | it('reject with error if no paste filename', function () { 46 | return pastebin.createPasteFromFile({}).should.be.rejectedWith('Filename not provided'); 47 | }); 48 | 49 | it('fulfilles with a paste ID', function () { 50 | pastebin._postApi.restore && pastebin._postApi.restore(); 51 | sinon.stub(pastebin, '_postApi').callsFake(stubber('As3IMeWV', false)); 52 | return pastebin.createPasteFromFile(filename).should.eventually.equal('As3IMeWV'); 53 | }); 54 | 55 | it('reject with error if format cannot be found', function () { 56 | return pastebin.createPasteFromFile(filename, null, 'unknown-script').should.be.rejectedWith('Error! Paste format unknown-script is unknown.'); 57 | }); 58 | 59 | it('reject with error if expiration cannot be found', function () { 60 | return pastebin.createPasteFromFile(filename, null, null, null, '1Y').should.be.rejectedWith('Error! Paste expiration 1Y is unknown.'); 61 | }); 62 | 63 | it('reject with error if privacy is set but no user & password are found', function () { 64 | var pb = new Pastebin(); 65 | sinon.stub(pb, '_postApi').callsFake(stubber('', false)); // Just to make sure we're not posting to Pastebin while testing 66 | return pb.createPasteFromFile(filename, null, null, 2, null).should.be.rejectedWith('Error! For this privacy level you need to be logged in! Provide username and password!'); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /tests/getPaste.js: -------------------------------------------------------------------------------- 1 | /* global it, describe, before, after, beforeEach, afterEach */ 2 | 'use strict'; 3 | /* 4 | * pastebin-js 5 | * https://github.com/j3lte/pastebin-js 6 | * 7 | * Copyright (c) 2013-2017 Jelte Lagendijk 8 | * Licensed under the MIT license. 9 | */ 10 | var chai = require('chai'); 11 | var sinon = require('sinon'); 12 | chai.should(); 13 | var chaiAsPromised = require('chai-as-promised'); 14 | chai.use(chaiAsPromised); 15 | var Q = require('q'); 16 | var Pastebin = require('../bin/pastebin'), 17 | pastebin; 18 | 19 | var stubber = function (returnValue, error) { 20 | return function (path, params) { 21 | var deferred = Q.defer(); 22 | if (error) { 23 | deferred.reject(returnValue); 24 | } else { 25 | deferred.resolve(returnValue); 26 | } 27 | return deferred.promise; 28 | }; 29 | }; 30 | 31 | // BASIC TESTS 32 | describe('Pastebin :: getPaste', function () { 33 | 34 | afterEach(function () { 35 | pastebin._getApi.restore(); 36 | }); 37 | 38 | pastebin = new Pastebin({}); 39 | 40 | it('reject with error if no paste ID', function () { 41 | sinon.stub(pastebin, '_getApi').callsFake(stubber('paste content', false)); 42 | return pastebin.getPaste().should.be.rejectedWith('No paste id!'); 43 | }); 44 | 45 | it('fulfilles with a paste ID', function () { 46 | sinon.stub(pastebin, '_getApi').callsFake(stubber('This is a paste content', false)); 47 | return pastebin.getPaste('As3IMeWV').should.eventually.equal('This is a paste content'); 48 | }); 49 | }); 50 | -------------------------------------------------------------------------------- /tests/getUserInfo.js: -------------------------------------------------------------------------------- 1 | /* global it, describe, before, after, beforeEach, afterEach */ 2 | 'use strict'; 3 | /* 4 | * pastebin-js 5 | * https://github.com/j3lte/pastebin-js 6 | * 7 | * Copyright (c) 2013-2017 Jelte Lagendijk 8 | * Licensed under the MIT license. 9 | */ 10 | var chai = require('chai'); 11 | var sinon = require('sinon'); 12 | chai.should(); 13 | var chaiAsPromised = require('chai-as-promised'); 14 | chai.use(chaiAsPromised); 15 | var Q = require('q'); 16 | var Pastebin = require('../bin/pastebin'), 17 | pastebin; 18 | 19 | var stubber = function (returnValue) { 20 | return function (path, params) { 21 | var deferred = Q.defer(); 22 | deferred.resolve(returnValue); 23 | return deferred.promise; 24 | }; 25 | }; 26 | 27 | // BASIC TESTS 28 | describe('Pastebin :: createPaste', function () { 29 | 30 | // afterEach(function () { 31 | // console.log('restore'); 32 | // pastebin._postApi.restore(); 33 | // }); 34 | // 35 | // pastebin = new Pastebin({ 36 | // 'api_dev_key' : 'xxxxxxxxxxx', 37 | // // 'api_user_name' : 'User', 38 | // // 'api_user_password' : 'Password' 39 | // }); 40 | // 41 | // it('reject with error in API user key length', function () { 42 | // sinon.stub(pastebin, '_postApi', stubber('xxxxx-user-key')); 43 | // return pastebin.getUserInfo().should.be.rejectedWith('Error in createAPIuserKey! xxxx-user-key'); 44 | // }); 45 | }); 46 | -------------------------------------------------------------------------------- /tests/pastebin.js: -------------------------------------------------------------------------------- 1 | /* global it, describe */ 2 | 'use strict'; 3 | /* 4 | * pastebin-js 5 | * https://github.com/j3lte/pastebin-js 6 | * 7 | * Copyright (c) 2013-2017 Jelte Lagendijk 8 | * Licensed under the MIT license. 9 | */ 10 | var expect = require('chai').expect, 11 | nock = require('nock'), 12 | Pastebin = require('../bin/pastebin'); 13 | 14 | // BASIC TESTS 15 | describe('Pastebin ::', function () { 16 | 17 | var pastebin = new Pastebin(); 18 | 19 | it('create new Pastebin', function () { 20 | expect(typeof pastebin).to.equal('object'); 21 | }); 22 | 23 | it('has method :: getPaste', function () { 24 | expect(typeof pastebin.getPaste).to.equal('function'); 25 | }); 26 | 27 | it('has method :: createPaste', function () { 28 | expect(typeof pastebin.createPaste).to.equal('function'); 29 | }); 30 | 31 | it('has method :: createPasteFromFile', function () { 32 | expect(typeof pastebin.createPasteFromFile).to.equal('function'); 33 | }); 34 | 35 | it('has method :: deletePaste', function () { 36 | expect(typeof pastebin.deletePaste).to.equal('function'); 37 | }); 38 | 39 | it('has method :: createAPIuserKey', function () { 40 | expect(typeof pastebin.createAPIuserKey).to.equal('function'); 41 | }); 42 | 43 | it('has method :: listUserPastes', function () { 44 | expect(typeof pastebin.listUserPastes).to.equal('function'); 45 | }); 46 | 47 | it('has method :: listTrendingPastes', function () { 48 | expect(typeof pastebin.listTrendingPastes).to.equal('function'); 49 | }); 50 | 51 | it('has method :: getUserInfo', function () { 52 | expect(typeof pastebin.getUserInfo).to.equal('function'); 53 | }); 54 | 55 | it('has method :: _parsePastes', function () { 56 | expect(typeof pastebin._parsePastes).to.equal('function'); 57 | }); 58 | 59 | it('has method :: _parseUser', function () { 60 | expect(typeof pastebin._parseUser).to.equal('function'); 61 | }); 62 | 63 | it('has method :: _parseXML', function () { 64 | expect(typeof pastebin._parseXML).to.equal('function'); 65 | }); 66 | 67 | it('has method :: _getRequired', function () { 68 | expect(typeof pastebin._getRequired).to.equal('function'); 69 | }); 70 | 71 | it('has method :: _getApi', function () { 72 | expect(typeof pastebin._getApi).to.equal('function'); 73 | }); 74 | 75 | it('has method :: _postApi', function () { 76 | expect(typeof pastebin._postApi).to.equal('function'); 77 | }); 78 | 79 | it('has method :: getPasteSync', function () { 80 | expect(typeof pastebin.getPasteSync).to.equal('function'); 81 | }); 82 | 83 | it('has method :: createPasteSync', function () { 84 | expect(typeof pastebin.createPasteSync).to.equal('function'); 85 | }); 86 | 87 | it('has method :: createPasteFromFileSync', function () { 88 | expect(typeof pastebin.createPasteFromFileSync).to.equal('function'); 89 | }); 90 | 91 | it('has method :: deletePasteSync', function () { 92 | expect(typeof pastebin.deletePasteSync).to.equal('function'); 93 | }); 94 | 95 | it('has method :: listUserPastesSync', function () { 96 | expect(typeof pastebin.listUserPastesSync).to.equal('function'); 97 | }); 98 | 99 | it('has method :: listTrendingPastesSync', function () { 100 | expect(typeof pastebin.listTrendingPastesSync).to.equal('function'); 101 | }); 102 | 103 | it('has method :: getUserInfoSync', function () { 104 | expect(typeof pastebin.getUserInfoSync).to.equal('function'); 105 | }); 106 | 107 | }); 108 | -------------------------------------------------------------------------------- /tests/textfile.txt: -------------------------------------------------------------------------------- 1 | TESTFILE -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sinonjs/commons@^1.0.2": 6 | version "1.0.2" 7 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.0.2.tgz#3e0ac737781627b8844257fadc3d803997d0526e" 8 | dependencies: 9 | type-detect "4.0.8" 10 | 11 | "@sinonjs/formatio@^2.0.0": 12 | version "2.0.0" 13 | resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" 14 | dependencies: 15 | samsam "1.3.0" 16 | 17 | "@sinonjs/samsam@^2.0.0": 18 | version "2.0.0" 19 | resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.0.0.tgz#9163742ac35c12d3602dece74317643b35db6a80" 20 | 21 | abbrev@1: 22 | version "1.1.1" 23 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 24 | 25 | ajv@^6.12.3: 26 | version "6.12.6" 27 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 28 | dependencies: 29 | fast-deep-equal "^3.1.1" 30 | fast-json-stable-stringify "^2.0.0" 31 | json-schema-traverse "^0.4.1" 32 | uri-js "^4.2.2" 33 | 34 | ansi-escape-sequences@^4.0.0: 35 | version "4.0.0" 36 | resolved "https://registry.yarnpkg.com/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz#e0ecb042958b71e42942d35c1fcf1d9b00a0f67e" 37 | dependencies: 38 | array-back "^2.0.0" 39 | 40 | ansi-regex@^2.0.0: 41 | version "2.1.1" 42 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 43 | 44 | ansi-styles@^2.2.1: 45 | version "2.2.1" 46 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 47 | 48 | ansi-styles@^4.1.0: 49 | version "4.3.0" 50 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 51 | dependencies: 52 | color-convert "^2.0.1" 53 | 54 | argparse@^1.0.7: 55 | version "1.0.10" 56 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 57 | dependencies: 58 | sprintf-js "~1.0.2" 59 | 60 | argv-tools@^0.1.1: 61 | version "0.1.1" 62 | resolved "https://registry.yarnpkg.com/argv-tools/-/argv-tools-0.1.1.tgz#588283f3393ada47141440b12981cd41bf6b7032" 63 | dependencies: 64 | array-back "^2.0.0" 65 | find-replace "^2.0.1" 66 | 67 | arr-diff@^4.0.0: 68 | version "4.0.0" 69 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 70 | 71 | arr-flatten@^1.1.0: 72 | version "1.1.0" 73 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 74 | 75 | arr-union@^3.1.0: 76 | version "3.1.0" 77 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 78 | 79 | array-back@^1.0.2, array-back@^1.0.3, array-back@^1.0.4: 80 | version "1.0.4" 81 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" 82 | dependencies: 83 | typical "^2.6.0" 84 | 85 | array-back@^2.0.0: 86 | version "2.0.0" 87 | resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" 88 | dependencies: 89 | typical "^2.6.1" 90 | 91 | array-each@^1.0.1: 92 | version "1.0.1" 93 | resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" 94 | 95 | array-slice@^1.0.0: 96 | version "1.1.0" 97 | resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" 98 | 99 | array-unique@^0.3.2: 100 | version "0.3.2" 101 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 102 | 103 | asn1@~0.2.3: 104 | version "0.2.3" 105 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 106 | 107 | assert-plus@1.0.0, assert-plus@^1.0.0: 108 | version "1.0.0" 109 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 110 | 111 | assertion-error@^1.0.1: 112 | version "1.0.2" 113 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 114 | 115 | assign-symbols@^1.0.0: 116 | version "1.0.0" 117 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 118 | 119 | async@^2.5.0: 120 | version "2.6.1" 121 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" 122 | dependencies: 123 | lodash "^4.17.10" 124 | 125 | async@^2.6.0: 126 | version "2.6.3" 127 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" 128 | dependencies: 129 | lodash "^4.17.14" 130 | 131 | async@~1.5.2: 132 | version "1.5.2" 133 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 134 | 135 | asynckit@^0.4.0: 136 | version "0.4.0" 137 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 138 | 139 | atob@^2.1.2: 140 | version "2.1.2" 141 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 142 | 143 | aws-sign2@~0.7.0: 144 | version "0.7.0" 145 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 146 | 147 | aws4@^1.8.0: 148 | version "1.11.0" 149 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 150 | 151 | babylon@7.0.0-beta.19: 152 | version "7.0.0-beta.19" 153 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" 154 | 155 | balanced-match@^1.0.0: 156 | version "1.0.0" 157 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 158 | 159 | base@^0.11.1: 160 | version "0.11.2" 161 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 162 | dependencies: 163 | cache-base "^1.0.1" 164 | class-utils "^0.3.5" 165 | component-emitter "^1.2.1" 166 | define-property "^1.0.0" 167 | isobject "^3.0.1" 168 | mixin-deep "^1.2.0" 169 | pascalcase "^0.1.1" 170 | 171 | bcrypt-pbkdf@^1.0.0: 172 | version "1.0.1" 173 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 174 | dependencies: 175 | tweetnacl "^0.14.3" 176 | 177 | beeper@^1.1.0: 178 | version "1.1.1" 179 | resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" 180 | 181 | bluebird@~3.5.0: 182 | version "3.5.2" 183 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" 184 | 185 | body@^5.1.0: 186 | version "5.1.0" 187 | resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" 188 | dependencies: 189 | continuable-cache "^0.3.1" 190 | error "^7.0.0" 191 | raw-body "~1.1.0" 192 | safe-json-parse "~1.0.1" 193 | 194 | brace-expansion@^1.1.7: 195 | version "1.1.8" 196 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 197 | dependencies: 198 | balanced-match "^1.0.0" 199 | concat-map "0.0.1" 200 | 201 | braces@^2.3.1: 202 | version "2.3.2" 203 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 204 | dependencies: 205 | arr-flatten "^1.1.0" 206 | array-unique "^0.3.2" 207 | extend-shallow "^2.0.1" 208 | fill-range "^4.0.0" 209 | isobject "^3.0.1" 210 | repeat-element "^1.1.2" 211 | snapdragon "^0.8.1" 212 | snapdragon-node "^2.0.1" 213 | split-string "^3.0.2" 214 | to-regex "^3.0.1" 215 | 216 | browser-stdout@1.3.1: 217 | version "1.3.1" 218 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 219 | 220 | bytes@1: 221 | version "1.0.0" 222 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" 223 | 224 | cache-base@^1.0.1: 225 | version "1.0.1" 226 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 227 | dependencies: 228 | collection-visit "^1.0.0" 229 | component-emitter "^1.2.1" 230 | get-value "^2.0.6" 231 | has-value "^1.0.0" 232 | isobject "^3.0.1" 233 | set-value "^2.0.0" 234 | to-object-path "^0.3.0" 235 | union-value "^1.0.0" 236 | unset-value "^1.0.0" 237 | 238 | cache-point@^0.4.1: 239 | version "0.4.1" 240 | resolved "https://registry.yarnpkg.com/cache-point/-/cache-point-0.4.1.tgz#cc8c9cbd99d90d7b0c66910cd33d77a1aab8840e" 241 | dependencies: 242 | array-back "^2.0.0" 243 | fs-then-native "^2.0.0" 244 | mkdirp2 "^1.0.3" 245 | 246 | caseless@~0.12.0: 247 | version "0.12.0" 248 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 249 | 250 | catharsis@~0.8.9: 251 | version "0.8.9" 252 | resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b" 253 | dependencies: 254 | underscore-contrib "~0.3.0" 255 | 256 | chai-as-promised@^7.1.1: 257 | version "7.1.1" 258 | resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" 259 | dependencies: 260 | check-error "^1.0.2" 261 | 262 | "chai@>=1.9.2 <4.0.0": 263 | version "3.5.0" 264 | resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" 265 | dependencies: 266 | assertion-error "^1.0.1" 267 | deep-eql "^0.1.3" 268 | type-detect "^1.0.0" 269 | 270 | chai@^4.1.2: 271 | version "4.1.2" 272 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" 273 | dependencies: 274 | assertion-error "^1.0.1" 275 | check-error "^1.0.1" 276 | deep-eql "^3.0.0" 277 | get-func-name "^2.0.0" 278 | pathval "^1.0.0" 279 | type-detect "^4.0.0" 280 | 281 | chalk@^1.0.0, chalk@^1.1.1: 282 | version "1.1.3" 283 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 284 | dependencies: 285 | ansi-styles "^2.2.1" 286 | escape-string-regexp "^1.0.2" 287 | has-ansi "^2.0.0" 288 | strip-ansi "^3.0.0" 289 | supports-color "^2.0.0" 290 | 291 | chalk@~4.1.0: 292 | version "4.1.0" 293 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 294 | dependencies: 295 | ansi-styles "^4.1.0" 296 | supports-color "^7.1.0" 297 | 298 | check-error@^1.0.1, check-error@^1.0.2: 299 | version "1.0.2" 300 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 301 | 302 | class-utils@^0.3.5: 303 | version "0.3.6" 304 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 305 | dependencies: 306 | arr-union "^3.1.0" 307 | define-property "^0.2.5" 308 | isobject "^3.0.0" 309 | static-extend "^0.1.1" 310 | 311 | cli@~1.0.0: 312 | version "1.0.1" 313 | resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" 314 | dependencies: 315 | exit "0.1.2" 316 | glob "^7.1.1" 317 | 318 | collect-all@^1.0.3: 319 | version "1.0.3" 320 | resolved "https://registry.yarnpkg.com/collect-all/-/collect-all-1.0.3.tgz#1abcc20448b58a1447487fcf34130e9512b0acf8" 321 | dependencies: 322 | stream-connect "^1.0.2" 323 | stream-via "^1.0.4" 324 | 325 | collection-visit@^1.0.0: 326 | version "1.0.0" 327 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 328 | dependencies: 329 | map-visit "^1.0.0" 330 | object-visit "^1.0.0" 331 | 332 | color-convert@^2.0.1: 333 | version "2.0.1" 334 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 335 | dependencies: 336 | color-name "~1.1.4" 337 | 338 | color-name@~1.1.4: 339 | version "1.1.4" 340 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 341 | 342 | colors@~1.1.2: 343 | version "1.1.2" 344 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 345 | 346 | combined-stream@^1.0.6, combined-stream@~1.0.6: 347 | version "1.0.8" 348 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 349 | dependencies: 350 | delayed-stream "~1.0.0" 351 | 352 | command-line-args@^5.0.0: 353 | version "5.0.2" 354 | resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.0.2.tgz#c4e56b016636af1323cf485aa25c3cb203dfbbe4" 355 | dependencies: 356 | argv-tools "^0.1.1" 357 | array-back "^2.0.0" 358 | find-replace "^2.0.1" 359 | lodash.camelcase "^4.3.0" 360 | typical "^2.6.1" 361 | 362 | command-line-tool@^0.8.0: 363 | version "0.8.0" 364 | resolved "https://registry.yarnpkg.com/command-line-tool/-/command-line-tool-0.8.0.tgz#b00290ef1dfc11cc731dd1f43a92cfa5f21e715b" 365 | dependencies: 366 | ansi-escape-sequences "^4.0.0" 367 | array-back "^2.0.0" 368 | command-line-args "^5.0.0" 369 | command-line-usage "^4.1.0" 370 | typical "^2.6.1" 371 | 372 | command-line-usage@^4.1.0: 373 | version "4.1.0" 374 | resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-4.1.0.tgz#a6b3b2e2703b4dcf8bd46ae19e118a9a52972882" 375 | dependencies: 376 | ansi-escape-sequences "^4.0.0" 377 | array-back "^2.0.0" 378 | table-layout "^0.4.2" 379 | typical "^2.6.1" 380 | 381 | commander@0.6.1: 382 | version "0.6.1" 383 | resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" 384 | 385 | commander@2.15.1: 386 | version "2.15.1" 387 | resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 388 | 389 | commander@2.3.0: 390 | version "2.3.0" 391 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" 392 | 393 | commander@~2.17.1: 394 | version "2.17.1" 395 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" 396 | 397 | common-sequence@^1.0.2: 398 | version "1.0.2" 399 | resolved "https://registry.yarnpkg.com/common-sequence/-/common-sequence-1.0.2.tgz#30e07f3f8f6f7f9b3dee854f20b2d39eee086de8" 400 | 401 | component-emitter@^1.2.1: 402 | version "1.3.0" 403 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 404 | 405 | concat-map@0.0.1: 406 | version "0.0.1" 407 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 408 | 409 | config-master@^3.1.0: 410 | version "3.1.0" 411 | resolved "https://registry.yarnpkg.com/config-master/-/config-master-3.1.0.tgz#667663590505a283bf26a484d68489d74c5485da" 412 | dependencies: 413 | walk-back "^2.0.1" 414 | 415 | console-browserify@1.1.x: 416 | version "1.1.0" 417 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 418 | dependencies: 419 | date-now "^0.1.4" 420 | 421 | continuable-cache@^0.3.1: 422 | version "0.3.1" 423 | resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" 424 | 425 | copy-descriptor@^0.1.0: 426 | version "0.1.1" 427 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 428 | 429 | core-util-is@1.0.2, core-util-is@~1.0.0: 430 | version "1.0.2" 431 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 432 | 433 | dashdash@^1.12.0: 434 | version "1.14.1" 435 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 436 | dependencies: 437 | assert-plus "^1.0.0" 438 | 439 | date-now@^0.1.4: 440 | version "0.1.4" 441 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 442 | 443 | dateformat@~3.0.3: 444 | version "3.0.3" 445 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 446 | 447 | debug@2.2.0: 448 | version "2.2.0" 449 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 450 | dependencies: 451 | ms "0.7.1" 452 | 453 | debug@3.1.0: 454 | version "3.1.0" 455 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 456 | dependencies: 457 | ms "2.0.0" 458 | 459 | debug@^2.2.0, debug@^2.3.3: 460 | version "2.6.9" 461 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 462 | dependencies: 463 | ms "2.0.0" 464 | 465 | debug@^3.1.0: 466 | version "3.2.6" 467 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 468 | dependencies: 469 | ms "^2.1.1" 470 | 471 | decode-uri-component@^0.2.0: 472 | version "0.2.0" 473 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 474 | 475 | deep-eql@^0.1.3: 476 | version "0.1.3" 477 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" 478 | dependencies: 479 | type-detect "0.1.1" 480 | 481 | deep-eql@^3.0.0: 482 | version "3.0.1" 483 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 484 | dependencies: 485 | type-detect "^4.0.0" 486 | 487 | deep-equal@^1.0.0: 488 | version "1.0.1" 489 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 490 | 491 | deep-extend@~0.6.0: 492 | version "0.6.0" 493 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 494 | 495 | define-property@^0.2.5: 496 | version "0.2.5" 497 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 498 | dependencies: 499 | is-descriptor "^0.1.0" 500 | 501 | define-property@^1.0.0: 502 | version "1.0.0" 503 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 504 | dependencies: 505 | is-descriptor "^1.0.0" 506 | 507 | define-property@^2.0.2: 508 | version "2.0.2" 509 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 510 | dependencies: 511 | is-descriptor "^1.0.2" 512 | isobject "^3.0.1" 513 | 514 | delayed-stream@~1.0.0: 515 | version "1.0.0" 516 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 517 | 518 | detect-file@^1.0.0: 519 | version "1.0.0" 520 | resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" 521 | 522 | diff@1.4.0: 523 | version "1.4.0" 524 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" 525 | 526 | diff@3.5.0, diff@^3.5.0: 527 | version "3.5.0" 528 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 529 | 530 | dmd@^3.0.10: 531 | version "3.0.12" 532 | resolved "https://registry.yarnpkg.com/dmd/-/dmd-3.0.12.tgz#2aad884cd582287f7dc748435017c7dbd510fe0c" 533 | dependencies: 534 | array-back "^2.0.0" 535 | cache-point "^0.4.1" 536 | common-sequence "^1.0.2" 537 | file-set "^2.0.0" 538 | handlebars "^4.0.11" 539 | marked "^0.3.16" 540 | object-get "^2.1.0" 541 | reduce-flatten "^1.0.1" 542 | reduce-unique "^1.0.0" 543 | reduce-without "^1.0.1" 544 | test-value "^3.0.0" 545 | walk-back "^3.0.0" 546 | 547 | dom-serializer@0: 548 | version "0.1.0" 549 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" 550 | dependencies: 551 | domelementtype "~1.1.1" 552 | entities "~1.1.1" 553 | 554 | domelementtype@1: 555 | version "1.3.0" 556 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" 557 | 558 | domelementtype@~1.1.1: 559 | version "1.1.3" 560 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" 561 | 562 | domhandler@2.3: 563 | version "2.3.0" 564 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" 565 | dependencies: 566 | domelementtype "1" 567 | 568 | domutils@1.5: 569 | version "1.5.1" 570 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" 571 | dependencies: 572 | dom-serializer "0" 573 | domelementtype "1" 574 | 575 | ecc-jsbn@~0.1.1: 576 | version "0.1.1" 577 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 578 | dependencies: 579 | jsbn "~0.1.0" 580 | 581 | entities@1.0: 582 | version "1.0.0" 583 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" 584 | 585 | entities@~1.1.1: 586 | version "1.1.1" 587 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" 588 | 589 | error@^7.0.0: 590 | version "7.2.1" 591 | resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" 592 | dependencies: 593 | string-template "~0.2.1" 594 | 595 | escape-string-regexp@1.0.2: 596 | version "1.0.2" 597 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" 598 | 599 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@~1.0.5: 600 | version "1.0.5" 601 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 602 | 603 | esprima@^4.0.0: 604 | version "4.0.1" 605 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 606 | 607 | eventemitter2@~0.4.13: 608 | version "0.4.14" 609 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" 610 | 611 | exit@0.1.2, exit@0.1.x, exit@~0.1.1, exit@~0.1.2: 612 | version "0.1.2" 613 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 614 | 615 | expand-brackets@^2.1.4: 616 | version "2.1.4" 617 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 618 | dependencies: 619 | debug "^2.3.3" 620 | define-property "^0.2.5" 621 | extend-shallow "^2.0.1" 622 | posix-character-classes "^0.1.0" 623 | regex-not "^1.0.0" 624 | snapdragon "^0.8.1" 625 | to-regex "^3.0.1" 626 | 627 | expand-tilde@^2.0.0, expand-tilde@^2.0.2: 628 | version "2.0.2" 629 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" 630 | dependencies: 631 | homedir-polyfill "^1.0.1" 632 | 633 | extend-shallow@^2.0.1: 634 | version "2.0.1" 635 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 636 | dependencies: 637 | is-extendable "^0.1.0" 638 | 639 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 640 | version "3.0.2" 641 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 642 | dependencies: 643 | assign-symbols "^1.0.0" 644 | is-extendable "^1.0.1" 645 | 646 | extend@^3.0.0, extend@~3.0.2: 647 | version "3.0.2" 648 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 649 | 650 | extglob@^2.0.4: 651 | version "2.0.4" 652 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 653 | dependencies: 654 | array-unique "^0.3.2" 655 | define-property "^1.0.0" 656 | expand-brackets "^2.1.4" 657 | extend-shallow "^2.0.1" 658 | fragment-cache "^0.2.1" 659 | regex-not "^1.0.0" 660 | snapdragon "^0.8.1" 661 | to-regex "^3.0.1" 662 | 663 | extsprintf@1.3.0, extsprintf@^1.2.0: 664 | version "1.3.0" 665 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 666 | 667 | fast-deep-equal@^3.1.1: 668 | version "3.1.3" 669 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 670 | 671 | fast-json-stable-stringify@^2.0.0: 672 | version "2.1.0" 673 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 674 | 675 | faye-websocket@~0.10.0: 676 | version "0.10.0" 677 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" 678 | dependencies: 679 | websocket-driver ">=0.5.1" 680 | 681 | file-set@^2.0.0: 682 | version "2.0.0" 683 | resolved "https://registry.yarnpkg.com/file-set/-/file-set-2.0.0.tgz#11831a388ec378aba881311a94f69814118849c3" 684 | dependencies: 685 | array-back "^2.0.0" 686 | glob "^7.1.2" 687 | 688 | fill-range@^4.0.0: 689 | version "4.0.0" 690 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 691 | dependencies: 692 | extend-shallow "^2.0.1" 693 | is-number "^3.0.0" 694 | repeat-string "^1.6.1" 695 | to-regex-range "^2.1.0" 696 | 697 | find-replace@^2.0.1: 698 | version "2.0.1" 699 | resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-2.0.1.tgz#6d9683a7ca20f8f9aabeabad07e4e2580f528550" 700 | dependencies: 701 | array-back "^2.0.0" 702 | test-value "^3.0.0" 703 | 704 | findup-sync@^2.0.0: 705 | version "2.0.0" 706 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" 707 | dependencies: 708 | detect-file "^1.0.0" 709 | is-glob "^3.1.0" 710 | micromatch "^3.0.4" 711 | resolve-dir "^1.0.1" 712 | 713 | findup-sync@~0.3.0: 714 | version "0.3.0" 715 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" 716 | dependencies: 717 | glob "~5.0.0" 718 | 719 | fined@^1.0.1: 720 | version "1.2.0" 721 | resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" 722 | dependencies: 723 | expand-tilde "^2.0.2" 724 | is-plain-object "^2.0.3" 725 | object.defaults "^1.1.0" 726 | object.pick "^1.2.0" 727 | parse-filepath "^1.0.1" 728 | 729 | flagged-respawn@^1.0.0: 730 | version "1.0.1" 731 | resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" 732 | 733 | for-in@^1.0.1, for-in@^1.0.2: 734 | version "1.0.2" 735 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 736 | 737 | for-own@^1.0.0: 738 | version "1.0.0" 739 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" 740 | dependencies: 741 | for-in "^1.0.1" 742 | 743 | forever-agent@~0.6.1: 744 | version "0.6.1" 745 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 746 | 747 | form-data@~2.3.2: 748 | version "2.3.3" 749 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 750 | dependencies: 751 | asynckit "^0.4.0" 752 | combined-stream "^1.0.6" 753 | mime-types "^2.1.12" 754 | 755 | fragment-cache@^0.2.1: 756 | version "0.2.1" 757 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 758 | dependencies: 759 | map-cache "^0.2.2" 760 | 761 | fs-then-native@^2.0.0: 762 | version "2.0.0" 763 | resolved "https://registry.yarnpkg.com/fs-then-native/-/fs-then-native-2.0.0.tgz#19a124d94d90c22c8e045f2e8dd6ebea36d48c67" 764 | 765 | fs.realpath@^1.0.0: 766 | version "1.0.0" 767 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 768 | 769 | function-bind@^1.1.1: 770 | version "1.1.1" 771 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 772 | 773 | gaze@^1.1.0: 774 | version "1.1.3" 775 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" 776 | dependencies: 777 | globule "^1.0.0" 778 | 779 | get-func-name@^2.0.0: 780 | version "2.0.0" 781 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 782 | 783 | get-value@^2.0.3, get-value@^2.0.6: 784 | version "2.0.6" 785 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 786 | 787 | getobject@~0.1.0: 788 | version "0.1.0" 789 | resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" 790 | 791 | getpass@^0.1.1: 792 | version "0.1.7" 793 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 794 | dependencies: 795 | assert-plus "^1.0.0" 796 | 797 | glob@3.2.11: 798 | version "3.2.11" 799 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" 800 | dependencies: 801 | inherits "2" 802 | minimatch "0.3" 803 | 804 | glob@7.1.2, glob@^7.1.1, glob@~7.1.1: 805 | version "7.1.2" 806 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 807 | dependencies: 808 | fs.realpath "^1.0.0" 809 | inflight "^1.0.4" 810 | inherits "2" 811 | minimatch "^3.0.4" 812 | once "^1.3.0" 813 | path-is-absolute "^1.0.0" 814 | 815 | glob@^7.1.2: 816 | version "7.1.3" 817 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 818 | dependencies: 819 | fs.realpath "^1.0.0" 820 | inflight "^1.0.4" 821 | inherits "2" 822 | minimatch "^3.0.4" 823 | once "^1.3.0" 824 | path-is-absolute "^1.0.0" 825 | 826 | glob@^7.1.3, glob@~7.1.6: 827 | version "7.1.6" 828 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 829 | dependencies: 830 | fs.realpath "^1.0.0" 831 | inflight "^1.0.4" 832 | inherits "2" 833 | minimatch "^3.0.4" 834 | once "^1.3.0" 835 | path-is-absolute "^1.0.0" 836 | 837 | glob@~5.0.0: 838 | version "5.0.15" 839 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 840 | dependencies: 841 | inflight "^1.0.4" 842 | inherits "2" 843 | minimatch "2 || 3" 844 | once "^1.3.0" 845 | path-is-absolute "^1.0.0" 846 | 847 | global-modules@^1.0.0: 848 | version "1.0.0" 849 | resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" 850 | dependencies: 851 | global-prefix "^1.0.1" 852 | is-windows "^1.0.1" 853 | resolve-dir "^1.0.0" 854 | 855 | global-prefix@^1.0.1: 856 | version "1.0.2" 857 | resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" 858 | dependencies: 859 | expand-tilde "^2.0.2" 860 | homedir-polyfill "^1.0.1" 861 | ini "^1.3.4" 862 | is-windows "^1.0.1" 863 | which "^1.2.14" 864 | 865 | globule@^1.0.0: 866 | version "1.2.0" 867 | resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" 868 | dependencies: 869 | glob "~7.1.1" 870 | lodash "~4.17.4" 871 | minimatch "~3.0.2" 872 | 873 | graceful-fs@^4.1.9: 874 | version "4.1.11" 875 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 876 | 877 | growl@1.10.5: 878 | version "1.10.5" 879 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 880 | 881 | growl@1.9.2: 882 | version "1.9.2" 883 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 884 | 885 | grunt-cli@~1.3.2: 886 | version "1.3.2" 887 | resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" 888 | dependencies: 889 | grunt-known-options "~1.1.0" 890 | interpret "~1.1.0" 891 | liftoff "~2.5.0" 892 | nopt "~4.0.1" 893 | v8flags "~3.1.1" 894 | 895 | grunt-contrib-jshint@^1.1.0: 896 | version "1.1.0" 897 | resolved "https://registry.yarnpkg.com/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz#369d909b2593c40e8be79940b21340850c7939ac" 898 | dependencies: 899 | chalk "^1.1.1" 900 | hooker "^0.2.3" 901 | jshint "~2.9.4" 902 | 903 | grunt-contrib-watch@^1.1.0: 904 | version "1.1.0" 905 | resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4" 906 | dependencies: 907 | async "^2.6.0" 908 | gaze "^1.1.0" 909 | lodash "^4.17.10" 910 | tiny-lr "^1.1.1" 911 | 912 | grunt-jsdoc-to-markdown@^4.0.0: 913 | version "4.0.0" 914 | resolved "https://registry.yarnpkg.com/grunt-jsdoc-to-markdown/-/grunt-jsdoc-to-markdown-4.0.0.tgz#a554d2f97ca996dc4501b43facb34eebfaa3d274" 915 | dependencies: 916 | jsdoc-to-markdown "^4.0.1" 917 | 918 | grunt-known-options@~1.1.0: 919 | version "1.1.0" 920 | resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.0.tgz#a4274eeb32fa765da5a7a3b1712617ce3b144149" 921 | 922 | grunt-legacy-log-utils@~2.1.0: 923 | version "2.1.0" 924 | resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz#49a8c7dc74051476dcc116c32faf9db8646856ef" 925 | dependencies: 926 | chalk "~4.1.0" 927 | lodash "~4.17.19" 928 | 929 | grunt-legacy-log@~3.0.0: 930 | version "3.0.0" 931 | resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz#1c6eaf92371ea415af31ea84ce50d434ef6d39c4" 932 | dependencies: 933 | colors "~1.1.2" 934 | grunt-legacy-log-utils "~2.1.0" 935 | hooker "~0.2.3" 936 | lodash "~4.17.19" 937 | 938 | grunt-legacy-util@~2.0.0: 939 | version "2.0.0" 940 | resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-2.0.0.tgz#34d20f2a26c6adebfe9a9bdc8823f7016b0369c3" 941 | dependencies: 942 | async "~1.5.2" 943 | exit "~0.1.1" 944 | getobject "~0.1.0" 945 | hooker "~0.2.3" 946 | lodash "~4.17.20" 947 | underscore.string "~3.3.5" 948 | which "~1.3.0" 949 | 950 | grunt-simple-mocha@^0.4.1: 951 | version "0.4.1" 952 | resolved "https://registry.yarnpkg.com/grunt-simple-mocha/-/grunt-simple-mocha-0.4.1.tgz#579449249eaf0a81878fa72f3edab5145d45fd77" 953 | dependencies: 954 | mocha "^2.3.4" 955 | 956 | grunt@^1.3.0: 957 | version "1.3.0" 958 | resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.3.0.tgz#55db6ccd80c6fb53722e496f680620a2e681f809" 959 | dependencies: 960 | dateformat "~3.0.3" 961 | eventemitter2 "~0.4.13" 962 | exit "~0.1.2" 963 | findup-sync "~0.3.0" 964 | glob "~7.1.6" 965 | grunt-cli "~1.3.2" 966 | grunt-known-options "~1.1.0" 967 | grunt-legacy-log "~3.0.0" 968 | grunt-legacy-util "~2.0.0" 969 | iconv-lite "~0.4.13" 970 | js-yaml "~3.14.0" 971 | minimatch "~3.0.4" 972 | mkdirp "~1.0.4" 973 | nopt "~3.0.6" 974 | rimraf "~3.0.2" 975 | 976 | handlebars@^4.0.11: 977 | version "4.0.12" 978 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" 979 | dependencies: 980 | async "^2.5.0" 981 | optimist "^0.6.1" 982 | source-map "^0.6.1" 983 | optionalDependencies: 984 | uglify-js "^3.1.4" 985 | 986 | har-schema@^2.0.0: 987 | version "2.0.0" 988 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 989 | 990 | har-validator@~5.1.3: 991 | version "5.1.5" 992 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 993 | dependencies: 994 | ajv "^6.12.3" 995 | har-schema "^2.0.0" 996 | 997 | has-ansi@^2.0.0: 998 | version "2.0.0" 999 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1000 | dependencies: 1001 | ansi-regex "^2.0.0" 1002 | 1003 | has-flag@^3.0.0: 1004 | version "3.0.0" 1005 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1006 | 1007 | has-flag@^4.0.0: 1008 | version "4.0.0" 1009 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1010 | 1011 | has-value@^0.3.1: 1012 | version "0.3.1" 1013 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1014 | dependencies: 1015 | get-value "^2.0.3" 1016 | has-values "^0.1.4" 1017 | isobject "^2.0.0" 1018 | 1019 | has-value@^1.0.0: 1020 | version "1.0.0" 1021 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1022 | dependencies: 1023 | get-value "^2.0.6" 1024 | has-values "^1.0.0" 1025 | isobject "^3.0.0" 1026 | 1027 | has-values@^0.1.4: 1028 | version "0.1.4" 1029 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1030 | 1031 | has-values@^1.0.0: 1032 | version "1.0.0" 1033 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1034 | dependencies: 1035 | is-number "^3.0.0" 1036 | kind-of "^4.0.0" 1037 | 1038 | has@^1.0.3: 1039 | version "1.0.3" 1040 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1041 | dependencies: 1042 | function-bind "^1.1.1" 1043 | 1044 | he@1.1.1: 1045 | version "1.1.1" 1046 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 1047 | 1048 | homedir-polyfill@^1.0.1: 1049 | version "1.0.3" 1050 | resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" 1051 | dependencies: 1052 | parse-passwd "^1.0.0" 1053 | 1054 | hooker@^0.2.3, hooker@~0.2.3: 1055 | version "0.2.3" 1056 | resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" 1057 | 1058 | htmlparser2@3.8.x: 1059 | version "3.8.3" 1060 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" 1061 | dependencies: 1062 | domelementtype "1" 1063 | domhandler "2.3" 1064 | domutils "1.5" 1065 | entities "1.0" 1066 | readable-stream "1.1" 1067 | 1068 | http-parser-js@>=0.4.0: 1069 | version "0.4.9" 1070 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" 1071 | 1072 | http-signature@~1.2.0: 1073 | version "1.2.0" 1074 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1075 | dependencies: 1076 | assert-plus "^1.0.0" 1077 | jsprim "^1.2.2" 1078 | sshpk "^1.7.0" 1079 | 1080 | iconv-lite@~0.4.13: 1081 | version "0.4.19" 1082 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 1083 | 1084 | inflight@^1.0.4: 1085 | version "1.0.6" 1086 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1087 | dependencies: 1088 | once "^1.3.0" 1089 | wrappy "1" 1090 | 1091 | inherits@2, inherits@~2.0.1: 1092 | version "2.0.3" 1093 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1094 | 1095 | ini@^1.3.4: 1096 | version "1.3.5" 1097 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1098 | 1099 | interpret@~1.1.0: 1100 | version "1.1.0" 1101 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 1102 | 1103 | irregular-plurals@^1.0.0: 1104 | version "1.3.0" 1105 | resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" 1106 | 1107 | is-absolute@^1.0.0: 1108 | version "1.0.0" 1109 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" 1110 | dependencies: 1111 | is-relative "^1.0.0" 1112 | is-windows "^1.0.1" 1113 | 1114 | is-accessor-descriptor@^0.1.6: 1115 | version "0.1.6" 1116 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1117 | dependencies: 1118 | kind-of "^3.0.2" 1119 | 1120 | is-accessor-descriptor@^1.0.0: 1121 | version "1.0.0" 1122 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1123 | dependencies: 1124 | kind-of "^6.0.0" 1125 | 1126 | is-buffer@^1.1.5: 1127 | version "1.1.6" 1128 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1129 | 1130 | is-core-module@^2.0.0: 1131 | version "2.1.0" 1132 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" 1133 | dependencies: 1134 | has "^1.0.3" 1135 | 1136 | is-data-descriptor@^0.1.4: 1137 | version "0.1.4" 1138 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1139 | dependencies: 1140 | kind-of "^3.0.2" 1141 | 1142 | is-data-descriptor@^1.0.0: 1143 | version "1.0.0" 1144 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1145 | dependencies: 1146 | kind-of "^6.0.0" 1147 | 1148 | is-descriptor@^0.1.0: 1149 | version "0.1.6" 1150 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1151 | dependencies: 1152 | is-accessor-descriptor "^0.1.6" 1153 | is-data-descriptor "^0.1.4" 1154 | kind-of "^5.0.0" 1155 | 1156 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1157 | version "1.0.2" 1158 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1159 | dependencies: 1160 | is-accessor-descriptor "^1.0.0" 1161 | is-data-descriptor "^1.0.0" 1162 | kind-of "^6.0.2" 1163 | 1164 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1165 | version "0.1.1" 1166 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1167 | 1168 | is-extendable@^1.0.1: 1169 | version "1.0.1" 1170 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1171 | dependencies: 1172 | is-plain-object "^2.0.4" 1173 | 1174 | is-extglob@^2.1.0: 1175 | version "2.1.1" 1176 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1177 | 1178 | is-glob@^3.1.0: 1179 | version "3.1.0" 1180 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1181 | dependencies: 1182 | is-extglob "^2.1.0" 1183 | 1184 | is-number@^3.0.0: 1185 | version "3.0.0" 1186 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1187 | dependencies: 1188 | kind-of "^3.0.2" 1189 | 1190 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1191 | version "2.0.4" 1192 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1193 | dependencies: 1194 | isobject "^3.0.1" 1195 | 1196 | is-relative@^1.0.0: 1197 | version "1.0.0" 1198 | resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" 1199 | dependencies: 1200 | is-unc-path "^1.0.0" 1201 | 1202 | is-typedarray@~1.0.0: 1203 | version "1.0.0" 1204 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1205 | 1206 | is-unc-path@^1.0.0: 1207 | version "1.0.0" 1208 | resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" 1209 | dependencies: 1210 | unc-path-regex "^0.1.2" 1211 | 1212 | is-windows@^1.0.1, is-windows@^1.0.2: 1213 | version "1.0.2" 1214 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1215 | 1216 | isarray@0.0.1: 1217 | version "0.0.1" 1218 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1219 | 1220 | isarray@1.0.0: 1221 | version "1.0.0" 1222 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1223 | 1224 | isexe@^2.0.0: 1225 | version "2.0.0" 1226 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1227 | 1228 | isobject@^2.0.0: 1229 | version "2.1.0" 1230 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1231 | dependencies: 1232 | isarray "1.0.0" 1233 | 1234 | isobject@^3.0.0, isobject@^3.0.1: 1235 | version "3.0.1" 1236 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1237 | 1238 | isstream@~0.1.2: 1239 | version "0.1.2" 1240 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1241 | 1242 | jade@0.26.3: 1243 | version "0.26.3" 1244 | resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" 1245 | dependencies: 1246 | commander "0.6.1" 1247 | mkdirp "0.3.0" 1248 | 1249 | js-yaml@~3.14.0: 1250 | version "3.14.0" 1251 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1252 | dependencies: 1253 | argparse "^1.0.7" 1254 | esprima "^4.0.0" 1255 | 1256 | js2xmlparser@~3.0.0: 1257 | version "3.0.0" 1258 | resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" 1259 | dependencies: 1260 | xmlcreate "^1.0.1" 1261 | 1262 | jsbn@~0.1.0: 1263 | version "0.1.1" 1264 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1265 | 1266 | jsdoc-api@^4.0.1: 1267 | version "4.0.3" 1268 | resolved "https://registry.yarnpkg.com/jsdoc-api/-/jsdoc-api-4.0.3.tgz#f87357856349a0be40a03e64711c34c74754ba20" 1269 | dependencies: 1270 | array-back "^2.0.0" 1271 | cache-point "^0.4.1" 1272 | collect-all "^1.0.3" 1273 | file-set "^2.0.0" 1274 | fs-then-native "^2.0.0" 1275 | jsdoc "~3.5.5" 1276 | object-to-spawn-args "^1.1.1" 1277 | temp-path "^1.0.0" 1278 | walk-back "^3.0.0" 1279 | 1280 | jsdoc-parse@^3.0.1: 1281 | version "3.0.1" 1282 | resolved "https://registry.yarnpkg.com/jsdoc-parse/-/jsdoc-parse-3.0.1.tgz#1194d6a16a2dfbe5fb8cccfeb5058ea808759893" 1283 | dependencies: 1284 | array-back "^2.0.0" 1285 | lodash.omit "^4.5.0" 1286 | lodash.pick "^4.4.0" 1287 | reduce-extract "^1.0.0" 1288 | sort-array "^2.0.0" 1289 | test-value "^3.0.0" 1290 | 1291 | jsdoc-to-markdown@^4.0.1: 1292 | version "4.0.1" 1293 | resolved "https://registry.yarnpkg.com/jsdoc-to-markdown/-/jsdoc-to-markdown-4.0.1.tgz#247f7d977ecc209428972ec92ca14bd4e610355d" 1294 | dependencies: 1295 | array-back "^2.0.0" 1296 | command-line-tool "^0.8.0" 1297 | config-master "^3.1.0" 1298 | dmd "^3.0.10" 1299 | jsdoc-api "^4.0.1" 1300 | jsdoc-parse "^3.0.1" 1301 | walk-back "^3.0.0" 1302 | 1303 | jsdoc@~3.5.5: 1304 | version "3.5.5" 1305 | resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d" 1306 | dependencies: 1307 | babylon "7.0.0-beta.19" 1308 | bluebird "~3.5.0" 1309 | catharsis "~0.8.9" 1310 | escape-string-regexp "~1.0.5" 1311 | js2xmlparser "~3.0.0" 1312 | klaw "~2.0.0" 1313 | marked "~0.3.6" 1314 | mkdirp "~0.5.1" 1315 | requizzle "~0.2.1" 1316 | strip-json-comments "~2.0.1" 1317 | taffydb "2.6.2" 1318 | underscore "~1.8.3" 1319 | 1320 | jshint-stylish@^2.2.1: 1321 | version "2.2.1" 1322 | resolved "https://registry.yarnpkg.com/jshint-stylish/-/jshint-stylish-2.2.1.tgz#242082a2c035ae03fd81044e0570cc4208cf6e61" 1323 | dependencies: 1324 | beeper "^1.1.0" 1325 | chalk "^1.0.0" 1326 | log-symbols "^1.0.0" 1327 | plur "^2.1.0" 1328 | string-length "^1.0.0" 1329 | text-table "^0.2.0" 1330 | 1331 | jshint@~2.9.4: 1332 | version "2.9.5" 1333 | resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.5.tgz#1e7252915ce681b40827ee14248c46d34e9aa62c" 1334 | dependencies: 1335 | cli "~1.0.0" 1336 | console-browserify "1.1.x" 1337 | exit "0.1.x" 1338 | htmlparser2 "3.8.x" 1339 | lodash "3.7.x" 1340 | minimatch "~3.0.2" 1341 | shelljs "0.3.x" 1342 | strip-json-comments "1.0.x" 1343 | 1344 | json-schema-traverse@^0.4.1: 1345 | version "0.4.1" 1346 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1347 | 1348 | json-schema@0.2.3: 1349 | version "0.2.3" 1350 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1351 | 1352 | json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: 1353 | version "5.0.1" 1354 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1355 | 1356 | jsprim@^1.2.2: 1357 | version "1.4.1" 1358 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1359 | dependencies: 1360 | assert-plus "1.0.0" 1361 | extsprintf "1.3.0" 1362 | json-schema "0.2.3" 1363 | verror "1.10.0" 1364 | 1365 | just-extend@^3.0.0: 1366 | version "3.0.0" 1367 | resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-3.0.0.tgz#cee004031eaabf6406da03a7b84e4fe9d78ef288" 1368 | 1369 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1370 | version "3.2.2" 1371 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1372 | dependencies: 1373 | is-buffer "^1.1.5" 1374 | 1375 | kind-of@^4.0.0: 1376 | version "4.0.0" 1377 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1378 | dependencies: 1379 | is-buffer "^1.1.5" 1380 | 1381 | kind-of@^5.0.0: 1382 | version "5.1.0" 1383 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1384 | 1385 | kind-of@^6.0.0, kind-of@^6.0.2: 1386 | version "6.0.3" 1387 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1388 | 1389 | klaw@~2.0.0: 1390 | version "2.0.0" 1391 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" 1392 | dependencies: 1393 | graceful-fs "^4.1.9" 1394 | 1395 | liftoff@~2.5.0: 1396 | version "2.5.0" 1397 | resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" 1398 | dependencies: 1399 | extend "^3.0.0" 1400 | findup-sync "^2.0.0" 1401 | fined "^1.0.1" 1402 | flagged-respawn "^1.0.0" 1403 | is-plain-object "^2.0.4" 1404 | object.map "^1.0.0" 1405 | rechoir "^0.6.2" 1406 | resolve "^1.1.7" 1407 | 1408 | livereload-js@^2.3.0: 1409 | version "2.4.0" 1410 | resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" 1411 | 1412 | lodash.camelcase@^4.3.0: 1413 | version "4.3.0" 1414 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 1415 | 1416 | lodash.get@^4.4.2: 1417 | version "4.4.2" 1418 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1419 | 1420 | lodash.omit@^4.5.0: 1421 | version "4.5.0" 1422 | resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" 1423 | 1424 | lodash.padend@^4.6.1: 1425 | version "4.6.1" 1426 | resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" 1427 | 1428 | lodash.pick@^4.4.0: 1429 | version "4.4.0" 1430 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" 1431 | 1432 | lodash@3.7.x: 1433 | version "3.7.0" 1434 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.7.0.tgz#3678bd8ab995057c07ade836ed2ef087da811d45" 1435 | 1436 | lodash@^4.17.10: 1437 | version "4.17.10" 1438 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 1439 | 1440 | lodash@^4.17.14, lodash@~4.17.19, lodash@~4.17.20: 1441 | version "4.17.20" 1442 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 1443 | 1444 | lodash@~4.17.2, lodash@~4.17.4: 1445 | version "4.17.4" 1446 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1447 | 1448 | log-symbols@^1.0.0: 1449 | version "1.0.2" 1450 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" 1451 | dependencies: 1452 | chalk "^1.0.0" 1453 | 1454 | lolex@^2.3.2, lolex@^2.7.2: 1455 | version "2.7.4" 1456 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.4.tgz#6514de2c3291e9d6f09d49ddce4a95f7d4d5a93f" 1457 | 1458 | lru-cache@2: 1459 | version "2.7.3" 1460 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 1461 | 1462 | make-iterator@^1.0.0: 1463 | version "1.0.1" 1464 | resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" 1465 | dependencies: 1466 | kind-of "^6.0.2" 1467 | 1468 | map-cache@^0.2.0, map-cache@^0.2.2: 1469 | version "0.2.2" 1470 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1471 | 1472 | map-visit@^1.0.0: 1473 | version "1.0.0" 1474 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1475 | dependencies: 1476 | object-visit "^1.0.0" 1477 | 1478 | marked@^0.3.16: 1479 | version "0.3.19" 1480 | resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" 1481 | 1482 | marked@~0.3.6: 1483 | version "0.3.6" 1484 | resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" 1485 | 1486 | micromatch@^3.0.4: 1487 | version "3.1.10" 1488 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1489 | dependencies: 1490 | arr-diff "^4.0.0" 1491 | array-unique "^0.3.2" 1492 | braces "^2.3.1" 1493 | define-property "^2.0.2" 1494 | extend-shallow "^3.0.2" 1495 | extglob "^2.0.4" 1496 | fragment-cache "^0.2.1" 1497 | kind-of "^6.0.2" 1498 | nanomatch "^1.2.9" 1499 | object.pick "^1.3.0" 1500 | regex-not "^1.0.0" 1501 | snapdragon "^0.8.1" 1502 | to-regex "^3.0.2" 1503 | 1504 | mime-db@1.44.0: 1505 | version "1.44.0" 1506 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 1507 | 1508 | mime-db@~1.30.0: 1509 | version "1.30.0" 1510 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 1511 | 1512 | mime-types@^2.1.12: 1513 | version "2.1.17" 1514 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 1515 | dependencies: 1516 | mime-db "~1.30.0" 1517 | 1518 | mime-types@~2.1.19: 1519 | version "2.1.27" 1520 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 1521 | dependencies: 1522 | mime-db "1.44.0" 1523 | 1524 | minimatch@0.3: 1525 | version "0.3.0" 1526 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" 1527 | dependencies: 1528 | lru-cache "2" 1529 | sigmund "~1.0.0" 1530 | 1531 | "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2, minimatch@~3.0.4: 1532 | version "3.0.4" 1533 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1534 | dependencies: 1535 | brace-expansion "^1.1.7" 1536 | 1537 | minimist@0.0.8: 1538 | version "0.0.8" 1539 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1540 | 1541 | minimist@~0.0.1: 1542 | version "0.0.10" 1543 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1544 | 1545 | mixin-deep@^1.2.0: 1546 | version "1.3.2" 1547 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 1548 | dependencies: 1549 | for-in "^1.0.2" 1550 | is-extendable "^1.0.1" 1551 | 1552 | mkdirp2@^1.0.3: 1553 | version "1.0.3" 1554 | resolved "https://registry.yarnpkg.com/mkdirp2/-/mkdirp2-1.0.3.tgz#cc8dd8265f1f06e2d8f5b10b6e52f4e050bed21b" 1555 | 1556 | mkdirp@0.3.0: 1557 | version "0.3.0" 1558 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" 1559 | 1560 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@~0.5.1: 1561 | version "0.5.1" 1562 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1563 | dependencies: 1564 | minimist "0.0.8" 1565 | 1566 | mkdirp@~1.0.4: 1567 | version "1.0.4" 1568 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1569 | 1570 | mocha@^2.3.4: 1571 | version "2.5.3" 1572 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" 1573 | dependencies: 1574 | commander "2.3.0" 1575 | debug "2.2.0" 1576 | diff "1.4.0" 1577 | escape-string-regexp "1.0.2" 1578 | glob "3.2.11" 1579 | growl "1.9.2" 1580 | jade "0.26.3" 1581 | mkdirp "0.5.1" 1582 | supports-color "1.2.0" 1583 | to-iso-string "0.0.2" 1584 | 1585 | mocha@^5.2.0: 1586 | version "5.2.0" 1587 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" 1588 | dependencies: 1589 | browser-stdout "1.3.1" 1590 | commander "2.15.1" 1591 | debug "3.1.0" 1592 | diff "3.5.0" 1593 | escape-string-regexp "1.0.5" 1594 | glob "7.1.2" 1595 | growl "1.10.5" 1596 | he "1.1.1" 1597 | minimatch "3.0.4" 1598 | mkdirp "0.5.1" 1599 | supports-color "5.4.0" 1600 | 1601 | ms@0.7.1: 1602 | version "0.7.1" 1603 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1604 | 1605 | ms@2.0.0: 1606 | version "2.0.0" 1607 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1608 | 1609 | ms@^2.1.1: 1610 | version "2.1.2" 1611 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1612 | 1613 | nanomatch@^1.2.9: 1614 | version "1.2.13" 1615 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1616 | dependencies: 1617 | arr-diff "^4.0.0" 1618 | array-unique "^0.3.2" 1619 | define-property "^2.0.2" 1620 | extend-shallow "^3.0.2" 1621 | fragment-cache "^0.2.1" 1622 | is-windows "^1.0.2" 1623 | kind-of "^6.0.2" 1624 | object.pick "^1.3.0" 1625 | regex-not "^1.0.0" 1626 | snapdragon "^0.8.1" 1627 | to-regex "^3.0.1" 1628 | 1629 | nise@^1.4.4: 1630 | version "1.4.4" 1631 | resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.4.tgz#b8d9dd35334c99e514b75e46fcc38e358caecdd0" 1632 | dependencies: 1633 | "@sinonjs/formatio" "^2.0.0" 1634 | just-extend "^3.0.0" 1635 | lolex "^2.3.2" 1636 | path-to-regexp "^1.7.0" 1637 | text-encoding "^0.6.4" 1638 | 1639 | nock@^9.0.22: 1640 | version "9.0.22" 1641 | resolved "https://registry.yarnpkg.com/nock/-/nock-9.0.22.tgz#f6eb8ea58c6232dead857484370c2e46f010a087" 1642 | dependencies: 1643 | chai ">=1.9.2 <4.0.0" 1644 | debug "^2.2.0" 1645 | deep-equal "^1.0.0" 1646 | json-stringify-safe "^5.0.1" 1647 | lodash "~4.17.2" 1648 | mkdirp "^0.5.0" 1649 | propagate "0.4.0" 1650 | qs "^6.0.2" 1651 | semver "^5.3.0" 1652 | 1653 | nopt@~3.0.6: 1654 | version "3.0.6" 1655 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1656 | dependencies: 1657 | abbrev "1" 1658 | 1659 | nopt@~4.0.1: 1660 | version "4.0.3" 1661 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" 1662 | dependencies: 1663 | abbrev "1" 1664 | osenv "^0.1.4" 1665 | 1666 | oauth-sign@~0.9.0: 1667 | version "0.9.0" 1668 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1669 | 1670 | object-assign@^4.1.0: 1671 | version "4.1.1" 1672 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1673 | 1674 | object-copy@^0.1.0: 1675 | version "0.1.0" 1676 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1677 | dependencies: 1678 | copy-descriptor "^0.1.0" 1679 | define-property "^0.2.5" 1680 | kind-of "^3.0.3" 1681 | 1682 | object-get@^2.1.0: 1683 | version "2.1.0" 1684 | resolved "https://registry.yarnpkg.com/object-get/-/object-get-2.1.0.tgz#722bbdb60039efa47cad3c6dc2ce51a85c02c5ae" 1685 | 1686 | object-to-spawn-args@^1.1.1: 1687 | version "1.1.1" 1688 | resolved "https://registry.yarnpkg.com/object-to-spawn-args/-/object-to-spawn-args-1.1.1.tgz#77da8827f073d011c9e1b173f895781470246785" 1689 | 1690 | object-visit@^1.0.0: 1691 | version "1.0.1" 1692 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1693 | dependencies: 1694 | isobject "^3.0.0" 1695 | 1696 | object.defaults@^1.1.0: 1697 | version "1.1.0" 1698 | resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" 1699 | dependencies: 1700 | array-each "^1.0.1" 1701 | array-slice "^1.0.0" 1702 | for-own "^1.0.0" 1703 | isobject "^3.0.0" 1704 | 1705 | object.map@^1.0.0: 1706 | version "1.0.1" 1707 | resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" 1708 | dependencies: 1709 | for-own "^1.0.0" 1710 | make-iterator "^1.0.0" 1711 | 1712 | object.pick@^1.2.0, object.pick@^1.3.0: 1713 | version "1.3.0" 1714 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1715 | dependencies: 1716 | isobject "^3.0.1" 1717 | 1718 | once@^1.3.0: 1719 | version "1.4.0" 1720 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1721 | dependencies: 1722 | wrappy "1" 1723 | 1724 | optimist@^0.6.1: 1725 | version "0.6.1" 1726 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1727 | dependencies: 1728 | minimist "~0.0.1" 1729 | wordwrap "~0.0.2" 1730 | 1731 | os-homedir@^1.0.0: 1732 | version "1.0.2" 1733 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1734 | 1735 | os-tmpdir@^1.0.0: 1736 | version "1.0.2" 1737 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1738 | 1739 | osenv@^0.1.4: 1740 | version "0.1.5" 1741 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1742 | dependencies: 1743 | os-homedir "^1.0.0" 1744 | os-tmpdir "^1.0.0" 1745 | 1746 | parse-filepath@^1.0.1: 1747 | version "1.0.2" 1748 | resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" 1749 | dependencies: 1750 | is-absolute "^1.0.0" 1751 | map-cache "^0.2.0" 1752 | path-root "^0.1.1" 1753 | 1754 | parse-passwd@^1.0.0: 1755 | version "1.0.0" 1756 | resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" 1757 | 1758 | pascalcase@^0.1.1: 1759 | version "0.1.1" 1760 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1761 | 1762 | path-is-absolute@^1.0.0: 1763 | version "1.0.1" 1764 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1765 | 1766 | path-parse@^1.0.6: 1767 | version "1.0.6" 1768 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1769 | 1770 | path-root-regex@^0.1.0: 1771 | version "0.1.2" 1772 | resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" 1773 | 1774 | path-root@^0.1.1: 1775 | version "0.1.1" 1776 | resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" 1777 | dependencies: 1778 | path-root-regex "^0.1.0" 1779 | 1780 | path-to-regexp@^1.7.0: 1781 | version "1.7.0" 1782 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" 1783 | dependencies: 1784 | isarray "0.0.1" 1785 | 1786 | pathval@^1.0.0: 1787 | version "1.1.0" 1788 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1789 | 1790 | performance-now@^2.1.0: 1791 | version "2.1.0" 1792 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1793 | 1794 | plur@^2.1.0: 1795 | version "2.1.2" 1796 | resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" 1797 | dependencies: 1798 | irregular-plurals "^1.0.0" 1799 | 1800 | posix-character-classes@^0.1.0: 1801 | version "0.1.1" 1802 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 1803 | 1804 | propagate@0.4.0: 1805 | version "0.4.0" 1806 | resolved "https://registry.yarnpkg.com/propagate/-/propagate-0.4.0.tgz#f3fcca0a6fe06736a7ba572966069617c130b481" 1807 | 1808 | psl@^1.1.28: 1809 | version "1.8.0" 1810 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 1811 | 1812 | punycode@^2.1.0, punycode@^2.1.1: 1813 | version "2.1.1" 1814 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1815 | 1816 | q@^1.5.0: 1817 | version "1.5.0" 1818 | resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" 1819 | 1820 | qs@^6.0.2, qs@~6.5.2: 1821 | version "6.5.2" 1822 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1823 | 1824 | qs@^6.4.0: 1825 | version "6.9.4" 1826 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" 1827 | 1828 | raw-body@~1.1.0: 1829 | version "1.1.7" 1830 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" 1831 | dependencies: 1832 | bytes "1" 1833 | string_decoder "0.10" 1834 | 1835 | readable-stream@1.1: 1836 | version "1.1.13" 1837 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" 1838 | dependencies: 1839 | core-util-is "~1.0.0" 1840 | inherits "~2.0.1" 1841 | isarray "0.0.1" 1842 | string_decoder "~0.10.x" 1843 | 1844 | rechoir@^0.6.2: 1845 | version "0.6.2" 1846 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1847 | dependencies: 1848 | resolve "^1.1.6" 1849 | 1850 | reduce-extract@^1.0.0: 1851 | version "1.0.0" 1852 | resolved "https://registry.yarnpkg.com/reduce-extract/-/reduce-extract-1.0.0.tgz#67f2385beda65061b5f5f4312662e8b080ca1525" 1853 | dependencies: 1854 | test-value "^1.0.1" 1855 | 1856 | reduce-flatten@^1.0.1: 1857 | version "1.0.1" 1858 | resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327" 1859 | 1860 | reduce-unique@^1.0.0: 1861 | version "1.0.0" 1862 | resolved "https://registry.yarnpkg.com/reduce-unique/-/reduce-unique-1.0.0.tgz#7e586bcf87a4e32b6d7abd8277fad6cdec9f4803" 1863 | 1864 | reduce-without@^1.0.1: 1865 | version "1.0.1" 1866 | resolved "https://registry.yarnpkg.com/reduce-without/-/reduce-without-1.0.1.tgz#68ad0ead11855c9a37d4e8256c15bbf87972fc8c" 1867 | dependencies: 1868 | test-value "^2.0.0" 1869 | 1870 | regex-not@^1.0.0, regex-not@^1.0.2: 1871 | version "1.0.2" 1872 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 1873 | dependencies: 1874 | extend-shallow "^3.0.2" 1875 | safe-regex "^1.1.0" 1876 | 1877 | repeat-element@^1.1.2: 1878 | version "1.1.3" 1879 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 1880 | 1881 | repeat-string@^1.6.1: 1882 | version "1.6.1" 1883 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1884 | 1885 | request@^2.84.0: 1886 | version "2.88.2" 1887 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 1888 | dependencies: 1889 | aws-sign2 "~0.7.0" 1890 | aws4 "^1.8.0" 1891 | caseless "~0.12.0" 1892 | combined-stream "~1.0.6" 1893 | extend "~3.0.2" 1894 | forever-agent "~0.6.1" 1895 | form-data "~2.3.2" 1896 | har-validator "~5.1.3" 1897 | http-signature "~1.2.0" 1898 | is-typedarray "~1.0.0" 1899 | isstream "~0.1.2" 1900 | json-stringify-safe "~5.0.1" 1901 | mime-types "~2.1.19" 1902 | oauth-sign "~0.9.0" 1903 | performance-now "^2.1.0" 1904 | qs "~6.5.2" 1905 | safe-buffer "^5.1.2" 1906 | tough-cookie "~2.5.0" 1907 | tunnel-agent "^0.6.0" 1908 | uuid "^3.3.2" 1909 | 1910 | requizzle@~0.2.1: 1911 | version "0.2.1" 1912 | resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde" 1913 | dependencies: 1914 | underscore "~1.6.0" 1915 | 1916 | resolve-dir@^1.0.0, resolve-dir@^1.0.1: 1917 | version "1.0.1" 1918 | resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" 1919 | dependencies: 1920 | expand-tilde "^2.0.0" 1921 | global-modules "^1.0.0" 1922 | 1923 | resolve-url@^0.2.1: 1924 | version "0.2.1" 1925 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 1926 | 1927 | resolve@^1.1.6, resolve@^1.1.7: 1928 | version "1.18.1" 1929 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" 1930 | dependencies: 1931 | is-core-module "^2.0.0" 1932 | path-parse "^1.0.6" 1933 | 1934 | ret@~0.1.10: 1935 | version "0.1.15" 1936 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1937 | 1938 | rimraf@~3.0.2: 1939 | version "3.0.2" 1940 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1941 | dependencies: 1942 | glob "^7.1.3" 1943 | 1944 | safe-buffer@^5.0.1: 1945 | version "5.1.1" 1946 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1947 | 1948 | safe-buffer@^5.1.2: 1949 | version "5.2.1" 1950 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1951 | 1952 | safe-json-parse@~1.0.1: 1953 | version "1.0.1" 1954 | resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" 1955 | 1956 | safe-regex@^1.1.0: 1957 | version "1.1.0" 1958 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1959 | dependencies: 1960 | ret "~0.1.10" 1961 | 1962 | samsam@1.3.0: 1963 | version "1.3.0" 1964 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" 1965 | 1966 | sax@>=0.6.0: 1967 | version "1.2.4" 1968 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1969 | 1970 | semver@^5.3.0: 1971 | version "5.4.1" 1972 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 1973 | 1974 | set-value@^2.0.0, set-value@^2.0.1: 1975 | version "2.0.1" 1976 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 1977 | dependencies: 1978 | extend-shallow "^2.0.1" 1979 | is-extendable "^0.1.1" 1980 | is-plain-object "^2.0.3" 1981 | split-string "^3.0.1" 1982 | 1983 | shelljs@0.3.x: 1984 | version "0.3.0" 1985 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" 1986 | 1987 | sigmund@~1.0.0: 1988 | version "1.0.1" 1989 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 1990 | 1991 | sinon@^6.2.0: 1992 | version "6.2.0" 1993 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-6.2.0.tgz#ec95af3a88aeb451f0275f14213e6e9f066879e2" 1994 | dependencies: 1995 | "@sinonjs/commons" "^1.0.2" 1996 | "@sinonjs/formatio" "^2.0.0" 1997 | "@sinonjs/samsam" "^2.0.0" 1998 | diff "^3.5.0" 1999 | lodash.get "^4.4.2" 2000 | lolex "^2.7.2" 2001 | nise "^1.4.4" 2002 | supports-color "^5.5.0" 2003 | type-detect "^4.0.8" 2004 | 2005 | snapdragon-node@^2.0.1: 2006 | version "2.1.1" 2007 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2008 | dependencies: 2009 | define-property "^1.0.0" 2010 | isobject "^3.0.0" 2011 | snapdragon-util "^3.0.1" 2012 | 2013 | snapdragon-util@^3.0.1: 2014 | version "3.0.1" 2015 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2016 | dependencies: 2017 | kind-of "^3.2.0" 2018 | 2019 | snapdragon@^0.8.1: 2020 | version "0.8.2" 2021 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2022 | dependencies: 2023 | base "^0.11.1" 2024 | debug "^2.2.0" 2025 | define-property "^0.2.5" 2026 | extend-shallow "^2.0.1" 2027 | map-cache "^0.2.2" 2028 | source-map "^0.5.6" 2029 | source-map-resolve "^0.5.0" 2030 | use "^3.1.0" 2031 | 2032 | sort-array@^2.0.0: 2033 | version "2.0.0" 2034 | resolved "https://registry.yarnpkg.com/sort-array/-/sort-array-2.0.0.tgz#38a9c6da27fd7d147b42e60554f281187b4df472" 2035 | dependencies: 2036 | array-back "^1.0.4" 2037 | object-get "^2.1.0" 2038 | typical "^2.6.0" 2039 | 2040 | source-map-resolve@^0.5.0: 2041 | version "0.5.3" 2042 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" 2043 | dependencies: 2044 | atob "^2.1.2" 2045 | decode-uri-component "^0.2.0" 2046 | resolve-url "^0.2.1" 2047 | source-map-url "^0.4.0" 2048 | urix "^0.1.0" 2049 | 2050 | source-map-url@^0.4.0: 2051 | version "0.4.0" 2052 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2053 | 2054 | source-map@^0.5.6: 2055 | version "0.5.7" 2056 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2057 | 2058 | source-map@^0.6.1, source-map@~0.6.1: 2059 | version "0.6.1" 2060 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2061 | 2062 | split-string@^3.0.1, split-string@^3.0.2: 2063 | version "3.1.0" 2064 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2065 | dependencies: 2066 | extend-shallow "^3.0.0" 2067 | 2068 | sprintf-js@^1.0.3: 2069 | version "1.1.2" 2070 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" 2071 | 2072 | sprintf-js@~1.0.2: 2073 | version "1.0.3" 2074 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2075 | 2076 | sshpk@^1.7.0: 2077 | version "1.13.1" 2078 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 2079 | dependencies: 2080 | asn1 "~0.2.3" 2081 | assert-plus "^1.0.0" 2082 | dashdash "^1.12.0" 2083 | getpass "^0.1.1" 2084 | optionalDependencies: 2085 | bcrypt-pbkdf "^1.0.0" 2086 | ecc-jsbn "~0.1.1" 2087 | jsbn "~0.1.0" 2088 | tweetnacl "~0.14.0" 2089 | 2090 | static-extend@^0.1.1: 2091 | version "0.1.2" 2092 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2093 | dependencies: 2094 | define-property "^0.2.5" 2095 | object-copy "^0.1.0" 2096 | 2097 | stream-connect@^1.0.2: 2098 | version "1.0.2" 2099 | resolved "https://registry.yarnpkg.com/stream-connect/-/stream-connect-1.0.2.tgz#18bc81f2edb35b8b5d9a8009200a985314428a97" 2100 | dependencies: 2101 | array-back "^1.0.2" 2102 | 2103 | stream-via@^1.0.4: 2104 | version "1.0.4" 2105 | resolved "https://registry.yarnpkg.com/stream-via/-/stream-via-1.0.4.tgz#8dccbb0ac909328eb8bc8e2a4bd3934afdaf606c" 2106 | 2107 | string-length@^1.0.0: 2108 | version "1.0.1" 2109 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" 2110 | dependencies: 2111 | strip-ansi "^3.0.0" 2112 | 2113 | string-template@~0.2.1: 2114 | version "0.2.1" 2115 | resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" 2116 | 2117 | string_decoder@0.10, string_decoder@~0.10.x: 2118 | version "0.10.31" 2119 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2120 | 2121 | strip-ansi@^3.0.0: 2122 | version "3.0.1" 2123 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2124 | dependencies: 2125 | ansi-regex "^2.0.0" 2126 | 2127 | strip-json-comments@1.0.x: 2128 | version "1.0.4" 2129 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 2130 | 2131 | strip-json-comments@~2.0.1: 2132 | version "2.0.1" 2133 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2134 | 2135 | supports-color@1.2.0: 2136 | version "1.2.0" 2137 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" 2138 | 2139 | supports-color@5.4.0: 2140 | version "5.4.0" 2141 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 2142 | dependencies: 2143 | has-flag "^3.0.0" 2144 | 2145 | supports-color@^2.0.0: 2146 | version "2.0.0" 2147 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2148 | 2149 | supports-color@^5.5.0: 2150 | version "5.5.0" 2151 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2152 | dependencies: 2153 | has-flag "^3.0.0" 2154 | 2155 | supports-color@^7.1.0: 2156 | version "7.2.0" 2157 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2158 | dependencies: 2159 | has-flag "^4.0.0" 2160 | 2161 | table-layout@^0.4.2: 2162 | version "0.4.4" 2163 | resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.4.tgz#bc5398b2a05e58b67b05dd9238354b89ef27be0f" 2164 | dependencies: 2165 | array-back "^2.0.0" 2166 | deep-extend "~0.6.0" 2167 | lodash.padend "^4.6.1" 2168 | typical "^2.6.1" 2169 | wordwrapjs "^3.0.0" 2170 | 2171 | taffydb@2.6.2: 2172 | version "2.6.2" 2173 | resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" 2174 | 2175 | temp-path@^1.0.0: 2176 | version "1.0.0" 2177 | resolved "https://registry.yarnpkg.com/temp-path/-/temp-path-1.0.0.tgz#24b1543973ab442896d9ad367dd9cbdbfafe918b" 2178 | 2179 | test-value@^1.0.1: 2180 | version "1.1.0" 2181 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-1.1.0.tgz#a09136f72ec043d27c893707c2b159bfad7de93f" 2182 | dependencies: 2183 | array-back "^1.0.2" 2184 | typical "^2.4.2" 2185 | 2186 | test-value@^2.0.0: 2187 | version "2.1.0" 2188 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" 2189 | dependencies: 2190 | array-back "^1.0.3" 2191 | typical "^2.6.0" 2192 | 2193 | test-value@^3.0.0: 2194 | version "3.0.0" 2195 | resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92" 2196 | dependencies: 2197 | array-back "^2.0.0" 2198 | typical "^2.6.1" 2199 | 2200 | text-encoding@^0.6.4: 2201 | version "0.6.4" 2202 | resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" 2203 | 2204 | text-table@^0.2.0: 2205 | version "0.2.0" 2206 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2207 | 2208 | tiny-lr@^1.1.1: 2209 | version "1.1.1" 2210 | resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" 2211 | dependencies: 2212 | body "^5.1.0" 2213 | debug "^3.1.0" 2214 | faye-websocket "~0.10.0" 2215 | livereload-js "^2.3.0" 2216 | object-assign "^4.1.0" 2217 | qs "^6.4.0" 2218 | 2219 | to-iso-string@0.0.2: 2220 | version "0.0.2" 2221 | resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" 2222 | 2223 | to-object-path@^0.3.0: 2224 | version "0.3.0" 2225 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2226 | dependencies: 2227 | kind-of "^3.0.2" 2228 | 2229 | to-regex-range@^2.1.0: 2230 | version "2.1.1" 2231 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 2232 | dependencies: 2233 | is-number "^3.0.0" 2234 | repeat-string "^1.6.1" 2235 | 2236 | to-regex@^3.0.1, to-regex@^3.0.2: 2237 | version "3.0.2" 2238 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 2239 | dependencies: 2240 | define-property "^2.0.2" 2241 | extend-shallow "^3.0.2" 2242 | regex-not "^1.0.2" 2243 | safe-regex "^1.1.0" 2244 | 2245 | tough-cookie@~2.5.0: 2246 | version "2.5.0" 2247 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 2248 | dependencies: 2249 | psl "^1.1.28" 2250 | punycode "^2.1.1" 2251 | 2252 | tunnel-agent@^0.6.0: 2253 | version "0.6.0" 2254 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2255 | dependencies: 2256 | safe-buffer "^5.0.1" 2257 | 2258 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2259 | version "0.14.5" 2260 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2261 | 2262 | type-detect@0.1.1: 2263 | version "0.1.1" 2264 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" 2265 | 2266 | type-detect@4.0.8, type-detect@^4.0.8: 2267 | version "4.0.8" 2268 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2269 | 2270 | type-detect@^1.0.0: 2271 | version "1.0.0" 2272 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" 2273 | 2274 | type-detect@^4.0.0: 2275 | version "4.0.3" 2276 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 2277 | 2278 | typical@^2.4.2, typical@^2.6.0, typical@^2.6.1: 2279 | version "2.6.1" 2280 | resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" 2281 | 2282 | uglify-js@^3.1.4: 2283 | version "3.4.9" 2284 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" 2285 | dependencies: 2286 | commander "~2.17.1" 2287 | source-map "~0.6.1" 2288 | 2289 | unc-path-regex@^0.1.2: 2290 | version "0.1.2" 2291 | resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" 2292 | 2293 | underscore-contrib@~0.3.0: 2294 | version "0.3.0" 2295 | resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" 2296 | dependencies: 2297 | underscore "1.6.0" 2298 | 2299 | underscore.string@~3.3.5: 2300 | version "3.3.5" 2301 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" 2302 | dependencies: 2303 | sprintf-js "^1.0.3" 2304 | util-deprecate "^1.0.2" 2305 | 2306 | underscore@1.6.0, underscore@~1.6.0: 2307 | version "1.6.0" 2308 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" 2309 | 2310 | underscore@^1.8.3, underscore@~1.8.3: 2311 | version "1.8.3" 2312 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" 2313 | 2314 | union-value@^1.0.0: 2315 | version "1.0.1" 2316 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 2317 | dependencies: 2318 | arr-union "^3.1.0" 2319 | get-value "^2.0.6" 2320 | is-extendable "^0.1.1" 2321 | set-value "^2.0.1" 2322 | 2323 | unset-value@^1.0.0: 2324 | version "1.0.0" 2325 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2326 | dependencies: 2327 | has-value "^0.3.1" 2328 | isobject "^3.0.0" 2329 | 2330 | uri-js@^4.2.2: 2331 | version "4.4.0" 2332 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" 2333 | dependencies: 2334 | punycode "^2.1.0" 2335 | 2336 | urix@^0.1.0: 2337 | version "0.1.0" 2338 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2339 | 2340 | use@^3.1.0: 2341 | version "3.1.1" 2342 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 2343 | 2344 | util-deprecate@^1.0.2: 2345 | version "1.0.2" 2346 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2347 | 2348 | uuid@^3.3.2: 2349 | version "3.4.0" 2350 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2351 | 2352 | v8flags@~3.1.1: 2353 | version "3.1.3" 2354 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" 2355 | dependencies: 2356 | homedir-polyfill "^1.0.1" 2357 | 2358 | verror@1.10.0: 2359 | version "1.10.0" 2360 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2361 | dependencies: 2362 | assert-plus "^1.0.0" 2363 | core-util-is "1.0.2" 2364 | extsprintf "^1.2.0" 2365 | 2366 | walk-back@^2.0.1: 2367 | version "2.0.1" 2368 | resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-2.0.1.tgz#554e2a9d874fac47a8cb006bf44c2f0c4998a0a4" 2369 | 2370 | walk-back@^3.0.0: 2371 | version "3.0.0" 2372 | resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-3.0.0.tgz#2358787a35da91032dad5e92f80b12370d8795c5" 2373 | 2374 | websocket-driver@>=0.5.1: 2375 | version "0.7.0" 2376 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" 2377 | dependencies: 2378 | http-parser-js ">=0.4.0" 2379 | websocket-extensions ">=0.1.1" 2380 | 2381 | websocket-extensions@>=0.1.1: 2382 | version "0.1.2" 2383 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" 2384 | 2385 | which@^1.2.14, which@~1.3.0: 2386 | version "1.3.1" 2387 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2388 | dependencies: 2389 | isexe "^2.0.0" 2390 | 2391 | wordwrap@~0.0.2: 2392 | version "0.0.3" 2393 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2394 | 2395 | wordwrapjs@^3.0.0: 2396 | version "3.0.0" 2397 | resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" 2398 | dependencies: 2399 | reduce-flatten "^1.0.1" 2400 | typical "^2.6.1" 2401 | 2402 | wrappy@1: 2403 | version "1.0.2" 2404 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2405 | 2406 | xml2js@^0.4.19: 2407 | version "0.4.19" 2408 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 2409 | dependencies: 2410 | sax ">=0.6.0" 2411 | xmlbuilder "~9.0.1" 2412 | 2413 | xmlbuilder@~9.0.1: 2414 | version "9.0.4" 2415 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" 2416 | 2417 | xmlcreate@^1.0.1: 2418 | version "1.0.2" 2419 | resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" 2420 | --------------------------------------------------------------------------------