├── .gitignore ├── signpass ├── package.json ├── pass.json ├── license ├── readme.md ├── index.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | yarn-error.log 3 | 4 | card.pkpass 5 | -------------------------------------------------------------------------------- /signpass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lukaskollmer/passcard/HEAD/signpass -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "passcard", 3 | "version": "1.0.6", 4 | "description": "Create a Passbook/Wallet Business Card", 5 | "main": "index.js", 6 | "repository": "https://github.com/lukaskollmer/passcard", 7 | "author": "Lukas Kollmer ", 8 | "license": "MIT", 9 | "bin": "index.js", 10 | "preferGlobal": true, 11 | "engines": { 12 | "node": ">=7.6" 13 | }, 14 | "dependencies": { 15 | "execa": "^0.8.0", 16 | "jimp": "^0.2.28", 17 | "prompt": "^1.0.0", 18 | "request": "^2.81.0", 19 | "rimraf": "^2.6.1", 20 | "uuid": "^3.1.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /pass.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatVersion" : 1, 3 | "passTypeIdentifier" : "pass.me.lukaskollmer.passcard", 4 | "serialNumber" : "0", 5 | "teamIdentifier" : "A485NLSB8K", 6 | "barcodes" : [ 7 | { 8 | "message" : "https://www.youtube.com/watch?v=DLzxrzFCyOs", 9 | "format" : "PKBarcodeFormatQR", 10 | "messageEncoding" : "utf-8", 11 | "altText" : "https://www.youtube.com/watch?v=DLzxrzFCyOs" 12 | } 13 | ], 14 | "organizationName" : "Lukas Kollmer", 15 | "description" : "Name", 16 | "logoText" : "Name", 17 | "foregroundColor" : "rgb(9, 80, 160)", 18 | "backgroundColor" : "rgb(255, 255, 255)", 19 | "generic" : { 20 | "primaryFields" : [], 21 | "secondaryFields" : [], 22 | "auxiliaryFields" : [], 23 | "backFields" : [] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Lukas Kollmer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, 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, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # passcard [![npm](https://img.shields.io/npm/v/passcard.svg?style=flat-square)](https://www.npmjs.com/package/passcard) [![node](https://img.shields.io/node/v/passcard.svg?style=flat-square)](https://www.npmjs.com/package/passcard) 4 | 5 | > Create a Passbook/Wallet Business Card 6 | 7 | 8 | ## Install 9 | 10 | ``` 11 | $ npm install --global passcard 12 | ``` 13 | 14 | Apple requires all passes to be signed, so you'll need to prepare a couple of things in order for `passcard` to work: 15 | 1) Register a custom [Pass Type ID](https://developer.apple.com/account/ios/identifier/passTypeId) 16 | 2) Create a [Pass Signing Certificate](https://developer.apple.com/account/ios/certificate) 17 | 18 | > `passcard` includes the [`signpass`](https://developer.apple.com/download/more/?name=passbook) command line tool from apple 19 | 20 | ## Usage 21 | 22 | ```bash 23 | passcard TEAM_ID PASS_TYPE_ID 24 | ``` 25 | 26 | You can AirDrop the generated pass to your iPhone 27 | 28 | ## Example 29 | 30 | ```bash 31 | passcard A485NLSB8K pass.me.lukaskollmer.passcard 32 | ``` 33 | 34 | ![](https://files.lukaskollmer.me/embed/passcard-cli.png?v=2) 35 | 36 | 37 | ## License 38 | 39 | MIT © [Lukas Kollmer](https://lukaskollmer.me) 40 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | const fs = require('fs') 5 | const path = require('path') 6 | const rimraf = require('rimraf') 7 | const execa = require('execa') 8 | const prompt = require('prompt') 9 | const uuid = require('uuid/v4') 10 | const request = require('request') 11 | const jimp = require('jimp') 12 | 13 | const pass = require('./pass.json') 14 | 15 | if (process.argv.length == 4) { 16 | pass['teamIdentifier'] = process.argv[2] 17 | pass['passTypeIdentifier'] = process.argv[3] 18 | } 19 | 20 | console.log( 21 | ` 22 | We'll ask you for some information about you. You can skip any entry simply by pressing enter. 23 | 24 | Required fields: 25 | - Name 26 | - Twitter (your avatar will appear on the pass) 27 | 28 | Optional fields: 29 | - Title 30 | - Email 31 | - Website 32 | - GitHub 33 | ` 34 | ) 35 | 36 | prompt.message = 'passcard' 37 | 38 | prompt.start() 39 | 40 | let fields = [ 41 | // required 42 | 'Name', 43 | 'Twitter', 44 | 45 | // optional 46 | 'Email', 47 | 'Website', 48 | 'GitHub', 49 | 'Title' 50 | ] 51 | 52 | prompt.get(fields, (err, result) => { 53 | let dir = path.join(process.cwd(), 'card.pass') 54 | rimraf.sync(dir) 55 | fs.mkdirSync(dir) 56 | 57 | const fieldExists = key => result[key] !== '' 58 | 59 | let name = result['Name'] 60 | 61 | pass['serialNumber'] = uuid() 62 | pass['logoText'] = name 63 | pass['description'] = name 64 | 65 | pass['generic']['primaryFields'] = [{ key: "name", value: name }] 66 | 67 | 68 | if (fieldExists('Twitter')) { 69 | pass['generic']['secondaryFields'] = [{ key: "title", label: "TWITTER", value: result['Twitter'] }] 70 | } else { 71 | delete pass['generic'].secondaryFields 72 | } 73 | 74 | let auxiliaryFields = [] 75 | let backFields = [] 76 | 77 | const pushField = (key, ...dest) => { 78 | let field = { 79 | key: key.toLowerCase(), 80 | label: key.toUpperCase(), 81 | value: result[key] 82 | } 83 | for (let d of dest) { 84 | d.push(field) 85 | } 86 | } 87 | 88 | const pushFields = (fields, dest) => { 89 | fields.forEach(field => { 90 | if (fieldExists(field)) { 91 | pushField(field, dest) 92 | } 93 | }) 94 | } 95 | 96 | pushFields(['Email', 'Title'], auxiliaryFields) 97 | pushFields(fields, backFields) 98 | 99 | 100 | pass['generic']['auxiliaryFields'] = auxiliaryFields 101 | pass['generic']['backFields'] = backFields 102 | 103 | 104 | if (fieldExists('Website')) { 105 | pass['barcodes'][0] = { 106 | message: result['Website'], 107 | altText: result['Website'], 108 | format: "PKBarcodeFormatQR", 109 | messageEncoding: "utf-8", 110 | } 111 | } else { 112 | pass['barcodes'] = [] 113 | } 114 | 115 | let twitter = result['Twitter'].replace('@', '') 116 | 117 | let options = { 118 | url: `https://twitter.com/${twitter}/profile_image?size=original`, 119 | encoding: null // This forces a Buffer 120 | } 121 | 122 | request(options, (err, res, body) => { 123 | (async () => { 124 | let avatar = await jimp.read(body) 125 | 126 | avatar 127 | .write(path.join(dir, 'thumbnail@2x.png')) 128 | .scale(0.5) 129 | .write(path.join(dir, 'thumbnail.png')) 130 | .resize(58, 58) 131 | .write(path.join(dir, 'icon@2x.png')) 132 | .write(path.join(dir, 'logo@2x.png')) 133 | .resize(29, 29) 134 | .write(path.join(dir, 'icon.png')) 135 | .write(path.join(dir, 'logo.png')) 136 | 137 | fs.writeFileSync(path.join(dir, 'pass.json'), JSON.stringify(pass, null, 2) , 'utf-8') 138 | 139 | setTimeout(() => { 140 | (async () => { 141 | await execa(path.join(__dirname, 'signpass'), ['-p', dir]) 142 | console.log(`\nDONE. Your pass is available at ${process.cwd()}/card.pkpass`) 143 | rimraf.sync(dir) 144 | })() 145 | }, 500) // wait 0.5 secs to make sure all images are saved 146 | })() 147 | }) 148 | }) 149 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ajv@^4.9.1: 6 | version "4.11.8" 7 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 8 | dependencies: 9 | co "^4.6.0" 10 | json-stable-stringify "^1.0.1" 11 | 12 | asn1@~0.2.3: 13 | version "0.2.3" 14 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 15 | 16 | assert-plus@1.0.0, assert-plus@^1.0.0: 17 | version "1.0.0" 18 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 19 | 20 | assert-plus@^0.2.0: 21 | version "0.2.0" 22 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 23 | 24 | async@~0.9.0: 25 | version "0.9.2" 26 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" 27 | 28 | async@~1.0.0: 29 | version "1.0.0" 30 | resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" 31 | 32 | asynckit@^0.4.0: 33 | version "0.4.0" 34 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 35 | 36 | aws-sign2@~0.6.0: 37 | version "0.6.0" 38 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 39 | 40 | aws4@^1.2.1: 41 | version "1.6.0" 42 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 43 | 44 | balanced-match@^1.0.0: 45 | version "1.0.0" 46 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 47 | 48 | bcrypt-pbkdf@^1.0.0: 49 | version "1.0.1" 50 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 51 | dependencies: 52 | tweetnacl "^0.14.3" 53 | 54 | bignumber.js@^2.1.0: 55 | version "2.4.0" 56 | resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8" 57 | 58 | bmp-js@0.0.3: 59 | version "0.0.3" 60 | resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz#64113e9c7cf1202b376ed607bf30626ebe57b18a" 61 | 62 | boom@2.x.x: 63 | version "2.10.1" 64 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 65 | dependencies: 66 | hoek "2.x.x" 67 | 68 | brace-expansion@^1.1.7: 69 | version "1.1.8" 70 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 71 | dependencies: 72 | balanced-match "^1.0.0" 73 | concat-map "0.0.1" 74 | 75 | buffer-equal@0.0.1: 76 | version "0.0.1" 77 | resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" 78 | 79 | caseless@~0.12.0: 80 | version "0.12.0" 81 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 82 | 83 | co@^4.6.0: 84 | version "4.6.0" 85 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 86 | 87 | colors@1.0.x: 88 | version "1.0.3" 89 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 90 | 91 | colors@^1.1.2: 92 | version "1.1.2" 93 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 94 | 95 | combined-stream@^1.0.5, combined-stream@~1.0.5: 96 | version "1.0.5" 97 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 98 | dependencies: 99 | delayed-stream "~1.0.0" 100 | 101 | concat-map@0.0.1: 102 | version "0.0.1" 103 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 104 | 105 | core-util-is@1.0.2: 106 | version "1.0.2" 107 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 108 | 109 | cross-spawn@^5.0.1: 110 | version "5.1.0" 111 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 112 | dependencies: 113 | lru-cache "^4.0.1" 114 | shebang-command "^1.2.0" 115 | which "^1.2.9" 116 | 117 | cryptiles@2.x.x: 118 | version "2.0.5" 119 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 120 | dependencies: 121 | boom "2.x.x" 122 | 123 | cycle@1.0.x: 124 | version "1.0.3" 125 | resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" 126 | 127 | dashdash@^1.12.0: 128 | version "1.14.1" 129 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 130 | dependencies: 131 | assert-plus "^1.0.0" 132 | 133 | deep-equal@~0.2.1: 134 | version "0.2.2" 135 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.2.2.tgz#84b745896f34c684e98f2ce0e42abaf43bba017d" 136 | 137 | delayed-stream@~1.0.0: 138 | version "1.0.0" 139 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 140 | 141 | dom-walk@^0.1.0: 142 | version "0.1.1" 143 | resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" 144 | 145 | ecc-jsbn@~0.1.1: 146 | version "0.1.1" 147 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 148 | dependencies: 149 | jsbn "~0.1.0" 150 | 151 | es6-promise@^3.0.2: 152 | version "3.3.1" 153 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 154 | 155 | execa@^0.8.0: 156 | version "0.8.0" 157 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" 158 | dependencies: 159 | cross-spawn "^5.0.1" 160 | get-stream "^3.0.0" 161 | is-stream "^1.1.0" 162 | npm-run-path "^2.0.0" 163 | p-finally "^1.0.0" 164 | signal-exit "^3.0.0" 165 | strip-eof "^1.0.0" 166 | 167 | exif-parser@^0.1.9: 168 | version "0.1.12" 169 | resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" 170 | 171 | extend@~3.0.0: 172 | version "3.0.1" 173 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 174 | 175 | extsprintf@1.3.0, extsprintf@^1.2.0: 176 | version "1.3.0" 177 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 178 | 179 | eyes@0.1.x: 180 | version "0.1.8" 181 | resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" 182 | 183 | file-type@^3.1.0: 184 | version "3.9.0" 185 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 186 | 187 | for-each@^0.3.2: 188 | version "0.3.2" 189 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" 190 | dependencies: 191 | is-function "~1.0.0" 192 | 193 | forever-agent@~0.6.1: 194 | version "0.6.1" 195 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 196 | 197 | form-data@~2.1.1: 198 | version "2.1.4" 199 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 200 | dependencies: 201 | asynckit "^0.4.0" 202 | combined-stream "^1.0.5" 203 | mime-types "^2.1.12" 204 | 205 | fs.realpath@^1.0.0: 206 | version "1.0.0" 207 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 208 | 209 | get-stream@^3.0.0: 210 | version "3.0.0" 211 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 212 | 213 | getpass@^0.1.1: 214 | version "0.1.7" 215 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 216 | dependencies: 217 | assert-plus "^1.0.0" 218 | 219 | glob@^7.0.5: 220 | version "7.1.2" 221 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 222 | dependencies: 223 | fs.realpath "^1.0.0" 224 | inflight "^1.0.4" 225 | inherits "2" 226 | minimatch "^3.0.4" 227 | once "^1.3.0" 228 | path-is-absolute "^1.0.0" 229 | 230 | global@~4.3.0: 231 | version "4.3.2" 232 | resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" 233 | dependencies: 234 | min-document "^2.19.0" 235 | process "~0.5.1" 236 | 237 | har-schema@^1.0.5: 238 | version "1.0.5" 239 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 240 | 241 | har-validator@~4.2.1: 242 | version "4.2.1" 243 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 244 | dependencies: 245 | ajv "^4.9.1" 246 | har-schema "^1.0.5" 247 | 248 | hawk@~3.1.3: 249 | version "3.1.3" 250 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 251 | dependencies: 252 | boom "2.x.x" 253 | cryptiles "2.x.x" 254 | hoek "2.x.x" 255 | sntp "1.x.x" 256 | 257 | hoek@2.x.x: 258 | version "2.16.3" 259 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 260 | 261 | http-signature@~1.1.0: 262 | version "1.1.1" 263 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 264 | dependencies: 265 | assert-plus "^0.2.0" 266 | jsprim "^1.2.2" 267 | sshpk "^1.7.0" 268 | 269 | i@0.3.x: 270 | version "0.3.5" 271 | resolved "https://registry.yarnpkg.com/i/-/i-0.3.5.tgz#1d2b854158ec8169113c6cb7f6b6801e99e211d5" 272 | 273 | inflight@^1.0.4: 274 | version "1.0.6" 275 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 276 | dependencies: 277 | once "^1.3.0" 278 | wrappy "1" 279 | 280 | inherits@2: 281 | version "2.0.3" 282 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 283 | 284 | ip-regex@^1.0.1: 285 | version "1.0.3" 286 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" 287 | 288 | is-function@^1.0.1, is-function@~1.0.0: 289 | version "1.0.1" 290 | resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" 291 | 292 | is-stream@^1.1.0: 293 | version "1.1.0" 294 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 295 | 296 | is-typedarray@~1.0.0: 297 | version "1.0.0" 298 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 299 | 300 | isexe@^2.0.0: 301 | version "2.0.0" 302 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 303 | 304 | isstream@0.1.x, isstream@~0.1.2: 305 | version "0.1.2" 306 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 307 | 308 | jimp@^0.2.28: 309 | version "0.2.28" 310 | resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz#dd529a937190f42957a7937d1acc3a7762996ea2" 311 | dependencies: 312 | bignumber.js "^2.1.0" 313 | bmp-js "0.0.3" 314 | es6-promise "^3.0.2" 315 | exif-parser "^0.1.9" 316 | file-type "^3.1.0" 317 | jpeg-js "^0.2.0" 318 | load-bmfont "^1.2.3" 319 | mime "^1.3.4" 320 | mkdirp "0.5.1" 321 | pixelmatch "^4.0.0" 322 | pngjs "^3.0.0" 323 | read-chunk "^1.0.1" 324 | request "^2.65.0" 325 | stream-to-buffer "^0.1.0" 326 | tinycolor2 "^1.1.2" 327 | url-regex "^3.0.0" 328 | 329 | jpeg-js@^0.2.0: 330 | version "0.2.0" 331 | resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" 332 | 333 | jsbn@~0.1.0: 334 | version "0.1.1" 335 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 336 | 337 | json-schema@0.2.3: 338 | version "0.2.3" 339 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 340 | 341 | json-stable-stringify@^1.0.1: 342 | version "1.0.1" 343 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 344 | dependencies: 345 | jsonify "~0.0.0" 346 | 347 | json-stringify-safe@~5.0.1: 348 | version "5.0.1" 349 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 350 | 351 | jsonify@~0.0.0: 352 | version "0.0.0" 353 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 354 | 355 | jsprim@^1.2.2: 356 | version "1.4.1" 357 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 358 | dependencies: 359 | assert-plus "1.0.0" 360 | extsprintf "1.3.0" 361 | json-schema "0.2.3" 362 | verror "1.10.0" 363 | 364 | load-bmfont@^1.2.3: 365 | version "1.3.0" 366 | resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.3.0.tgz#bb7e7c710de6bcafcb13cb3b8c81e0c0131ecbc9" 367 | dependencies: 368 | buffer-equal "0.0.1" 369 | mime "^1.3.4" 370 | parse-bmfont-ascii "^1.0.3" 371 | parse-bmfont-binary "^1.0.5" 372 | parse-bmfont-xml "^1.1.0" 373 | xhr "^2.0.1" 374 | xtend "^4.0.0" 375 | 376 | lodash@^4.0.0: 377 | version "4.17.4" 378 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 379 | 380 | lru-cache@^4.0.1: 381 | version "4.1.1" 382 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 383 | dependencies: 384 | pseudomap "^1.0.2" 385 | yallist "^2.1.2" 386 | 387 | mime-db@~1.29.0: 388 | version "1.29.0" 389 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" 390 | 391 | mime-types@^2.1.12, mime-types@~2.1.7: 392 | version "2.1.16" 393 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" 394 | dependencies: 395 | mime-db "~1.29.0" 396 | 397 | mime@^1.3.4: 398 | version "1.3.6" 399 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" 400 | 401 | min-document@^2.19.0: 402 | version "2.19.0" 403 | resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" 404 | dependencies: 405 | dom-walk "^0.1.0" 406 | 407 | minimatch@^3.0.4: 408 | version "3.0.4" 409 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 410 | dependencies: 411 | brace-expansion "^1.1.7" 412 | 413 | minimist@0.0.8: 414 | version "0.0.8" 415 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 416 | 417 | mkdirp@0.5.1, mkdirp@0.x.x: 418 | version "0.5.1" 419 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 420 | dependencies: 421 | minimist "0.0.8" 422 | 423 | mute-stream@~0.0.4: 424 | version "0.0.7" 425 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 426 | 427 | ncp@1.0.x: 428 | version "1.0.1" 429 | resolved "https://registry.yarnpkg.com/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" 430 | 431 | npm-run-path@^2.0.0: 432 | version "2.0.2" 433 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 434 | dependencies: 435 | path-key "^2.0.0" 436 | 437 | oauth-sign@~0.8.1: 438 | version "0.8.2" 439 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 440 | 441 | once@^1.3.0: 442 | version "1.4.0" 443 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 444 | dependencies: 445 | wrappy "1" 446 | 447 | p-finally@^1.0.0: 448 | version "1.0.0" 449 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 450 | 451 | parse-bmfont-ascii@^1.0.3: 452 | version "1.0.6" 453 | resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" 454 | 455 | parse-bmfont-binary@^1.0.5: 456 | version "1.0.6" 457 | resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" 458 | 459 | parse-bmfont-xml@^1.1.0: 460 | version "1.1.3" 461 | resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz#d6b66a371afd39c5007d9f0eeb262a4f2cce7b7c" 462 | dependencies: 463 | xml-parse-from-string "^1.0.0" 464 | xml2js "^0.4.5" 465 | 466 | parse-headers@^2.0.0: 467 | version "2.0.1" 468 | resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" 469 | dependencies: 470 | for-each "^0.3.2" 471 | trim "0.0.1" 472 | 473 | path-is-absolute@^1.0.0: 474 | version "1.0.1" 475 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 476 | 477 | path-key@^2.0.0: 478 | version "2.0.1" 479 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 480 | 481 | performance-now@^0.2.0: 482 | version "0.2.0" 483 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 484 | 485 | pixelmatch@^4.0.0: 486 | version "4.0.2" 487 | resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" 488 | dependencies: 489 | pngjs "^3.0.0" 490 | 491 | pkginfo@0.3.x: 492 | version "0.3.1" 493 | resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" 494 | 495 | pkginfo@0.x.x: 496 | version "0.4.0" 497 | resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65" 498 | 499 | pngjs@^3.0.0: 500 | version "3.3.0" 501 | resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.0.tgz#1f5730c189c94933b81beda2ab2f8e2855263a8f" 502 | 503 | process@~0.5.1: 504 | version "0.5.2" 505 | resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" 506 | 507 | prompt@^1.0.0: 508 | version "1.0.0" 509 | resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.0.0.tgz#8e57123c396ab988897fb327fd3aedc3e735e4fe" 510 | dependencies: 511 | colors "^1.1.2" 512 | pkginfo "0.x.x" 513 | read "1.0.x" 514 | revalidator "0.1.x" 515 | utile "0.3.x" 516 | winston "2.1.x" 517 | 518 | pseudomap@^1.0.2: 519 | version "1.0.2" 520 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 521 | 522 | punycode@^1.4.1: 523 | version "1.4.1" 524 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 525 | 526 | qs@~6.4.0: 527 | version "6.4.0" 528 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 529 | 530 | read-chunk@^1.0.1: 531 | version "1.0.1" 532 | resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194" 533 | 534 | read@1.0.x: 535 | version "1.0.7" 536 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 537 | dependencies: 538 | mute-stream "~0.0.4" 539 | 540 | request@^2.65.0, request@^2.81.0: 541 | version "2.81.0" 542 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 543 | dependencies: 544 | aws-sign2 "~0.6.0" 545 | aws4 "^1.2.1" 546 | caseless "~0.12.0" 547 | combined-stream "~1.0.5" 548 | extend "~3.0.0" 549 | forever-agent "~0.6.1" 550 | form-data "~2.1.1" 551 | har-validator "~4.2.1" 552 | hawk "~3.1.3" 553 | http-signature "~1.1.0" 554 | is-typedarray "~1.0.0" 555 | isstream "~0.1.2" 556 | json-stringify-safe "~5.0.1" 557 | mime-types "~2.1.7" 558 | oauth-sign "~0.8.1" 559 | performance-now "^0.2.0" 560 | qs "~6.4.0" 561 | safe-buffer "^5.0.1" 562 | stringstream "~0.0.4" 563 | tough-cookie "~2.3.0" 564 | tunnel-agent "^0.6.0" 565 | uuid "^3.0.0" 566 | 567 | revalidator@0.1.x: 568 | version "0.1.8" 569 | resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" 570 | 571 | rimraf@2.x.x, rimraf@^2.6.1: 572 | version "2.6.1" 573 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 574 | dependencies: 575 | glob "^7.0.5" 576 | 577 | safe-buffer@^5.0.1: 578 | version "5.1.1" 579 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 580 | 581 | sax@>=0.6.0: 582 | version "1.2.4" 583 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 584 | 585 | shebang-command@^1.2.0: 586 | version "1.2.0" 587 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 588 | dependencies: 589 | shebang-regex "^1.0.0" 590 | 591 | shebang-regex@^1.0.0: 592 | version "1.0.0" 593 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 594 | 595 | signal-exit@^3.0.0: 596 | version "3.0.2" 597 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 598 | 599 | sntp@1.x.x: 600 | version "1.0.9" 601 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 602 | dependencies: 603 | hoek "2.x.x" 604 | 605 | sshpk@^1.7.0: 606 | version "1.13.1" 607 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 608 | dependencies: 609 | asn1 "~0.2.3" 610 | assert-plus "^1.0.0" 611 | dashdash "^1.12.0" 612 | getpass "^0.1.1" 613 | optionalDependencies: 614 | bcrypt-pbkdf "^1.0.0" 615 | ecc-jsbn "~0.1.1" 616 | jsbn "~0.1.0" 617 | tweetnacl "~0.14.0" 618 | 619 | stack-trace@0.0.x: 620 | version "0.0.10" 621 | resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" 622 | 623 | stream-to-buffer@^0.1.0: 624 | version "0.1.0" 625 | resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" 626 | dependencies: 627 | stream-to "~0.2.0" 628 | 629 | stream-to@~0.2.0: 630 | version "0.2.2" 631 | resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" 632 | 633 | stringstream@~0.0.4: 634 | version "0.0.5" 635 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 636 | 637 | strip-eof@^1.0.0: 638 | version "1.0.0" 639 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 640 | 641 | tinycolor2@^1.1.2: 642 | version "1.4.1" 643 | resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" 644 | 645 | tough-cookie@~2.3.0: 646 | version "2.3.2" 647 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 648 | dependencies: 649 | punycode "^1.4.1" 650 | 651 | trim@0.0.1: 652 | version "0.0.1" 653 | resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" 654 | 655 | tunnel-agent@^0.6.0: 656 | version "0.6.0" 657 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 658 | dependencies: 659 | safe-buffer "^5.0.1" 660 | 661 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 662 | version "0.14.5" 663 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 664 | 665 | url-regex@^3.0.0: 666 | version "3.2.0" 667 | resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" 668 | dependencies: 669 | ip-regex "^1.0.1" 670 | 671 | utile@0.3.x: 672 | version "0.3.0" 673 | resolved "https://registry.yarnpkg.com/utile/-/utile-0.3.0.tgz#1352c340eb820e4d8ddba039a4fbfaa32ed4ef3a" 674 | dependencies: 675 | async "~0.9.0" 676 | deep-equal "~0.2.1" 677 | i "0.3.x" 678 | mkdirp "0.x.x" 679 | ncp "1.0.x" 680 | rimraf "2.x.x" 681 | 682 | uuid@^3.0.0, uuid@^3.1.0: 683 | version "3.1.0" 684 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 685 | 686 | verror@1.10.0: 687 | version "1.10.0" 688 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 689 | dependencies: 690 | assert-plus "^1.0.0" 691 | core-util-is "1.0.2" 692 | extsprintf "^1.2.0" 693 | 694 | which@^1.2.9: 695 | version "1.3.0" 696 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 697 | dependencies: 698 | isexe "^2.0.0" 699 | 700 | winston@2.1.x: 701 | version "2.1.1" 702 | resolved "https://registry.yarnpkg.com/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e" 703 | dependencies: 704 | async "~1.0.0" 705 | colors "1.0.x" 706 | cycle "1.0.x" 707 | eyes "0.1.x" 708 | isstream "0.1.x" 709 | pkginfo "0.3.x" 710 | stack-trace "0.0.x" 711 | 712 | wrappy@1: 713 | version "1.0.2" 714 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 715 | 716 | xhr@^2.0.1: 717 | version "2.4.0" 718 | resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" 719 | dependencies: 720 | global "~4.3.0" 721 | is-function "^1.0.1" 722 | parse-headers "^2.0.0" 723 | xtend "^4.0.0" 724 | 725 | xml-parse-from-string@^1.0.0: 726 | version "1.0.1" 727 | resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" 728 | 729 | xml2js@^0.4.5: 730 | version "0.4.17" 731 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868" 732 | dependencies: 733 | sax ">=0.6.0" 734 | xmlbuilder "^4.1.0" 735 | 736 | xmlbuilder@^4.1.0: 737 | version "4.2.1" 738 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" 739 | dependencies: 740 | lodash "^4.0.0" 741 | 742 | xtend@^4.0.0: 743 | version "4.0.1" 744 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 745 | 746 | yallist@^2.1.2: 747 | version "2.1.2" 748 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 749 | --------------------------------------------------------------------------------