├── .gitignore ├── .npmignore ├── .tool-versions ├── CHANGELOG.md ├── README.md ├── __tests__ ├── .gitignore ├── demo_service │ ├── .bundle │ │ └── config │ ├── .serverless_plugins │ │ └── serverless-ruby-package │ │ │ └── index.js │ ├── Gemfile │ ├── Gemfile.lock │ ├── handler.rb │ ├── install-gems.sh │ ├── invoke-service.sh │ ├── lib │ │ ├── alpha.rb │ │ └── beta.rb │ ├── package.json │ ├── serverless.2.7.yml │ ├── serverless.3.2.yml │ ├── serverless.3.3.yml │ └── yarn.lock └── index.test.js ├── build-gems.sh ├── dev_setup.sh ├── index.js ├── integration-test.sh ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .bundle 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | __tests__ 3 | yarn-error.log 4 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | ruby 3.3.0 2 | nodejs 18.12.1 3 | yarn 1.22.4 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 3.3.0 4 | 5 | Default to ruby 3.3. 6 | 7 | Allow more flexibility for ruby point releases. 8 | Remove support for ruby 2.5 runtime. If you need ruby 2.5 support, you can 9 | continue to use an older version of the package. 10 | 11 | ## 3.2.0 12 | 13 | Default to ruby 3.2. 14 | 15 | Switched to using official Amazon Linux docker images. 16 | 17 | Removed the ability to configure your own docker image to build native gems. 18 | 19 | ## 2.7.0 20 | 21 | No behavior changes. Switching to a version strategy that where the first two 22 | digits match the default ruby runtime version. Additional revisions to the 23 | package will only increment the third part of the version number. 24 | 25 | ## 1.4.0 26 | Add support for ruby 2.7 runtime (Thank you kmfukuda) 27 | 28 | ## 1.3.0 29 | Add support for specifying a custom docker image for building native extensions. 30 | 31 | ## 1.2.0 32 | Add support for `CROSS_COMPILE_EXTENSIONS` environment variable. 33 | 34 | Update lodash and mixin-deep transitive dependencies, to address security vulnerabilities. 35 | 36 | ## 1.1.2 37 | 38 | Update js-yaml transitive dependency to address security vulnerability. 39 | 40 | ## 1.1.1 41 | 42 | Compile gems with native extensions using docker, even when developing on linux. 43 | 44 | ## 1.1.0 45 | 46 | Support for compiling gems with native extensions on non-linux platforms 47 | 48 | ## 1.0.1 49 | Initial release. Includes ruby gems in your serverless package 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # serverless-ruby-package 2 | 3 | Teaches the [serverless framework](https://serverless.com/framework/) how to 4 | package ruby services and their gem dependencies. 5 | 6 | By default, `serverless` will package _all_ files in your ruby service project. 7 | That includes test files, `node_modules`, readmes, etc. You don't need any of 8 | those files to execute your function - they just increase the size of the package 9 | and slow down updates. In most cases, it also won't include any rubygems that 10 | your function depends on, so the function will not work once it is deployed. 11 | 12 | This plugin solves those problems in a couple ways. First, it excludes _all_ 13 | files by default, forcing you to whitelist the files needed by your function 14 | (using the `package/includes` key in `serverless.yml`). Second, it automatically 15 | packages the gems from your default bundler group -- skipping gems from 16 | any custom groups, like `development` or `test`. Sometimes gems themselves will 17 | install their own test files - those will also be excluded from the package. 18 | 19 | It also handles cross-compiling any gems with native extensions. For example, 20 | if you are developing your service on macOS, any gems with native extensions 21 | will be compiled locally for macOS. But to deploy to a provider like AWS Lambda, 22 | the gems need to be compiled for linux. The plugin will automatically detect 23 | this situation and build the extensions for linux using a local docker container. 24 | You only need to have [docker](https://www.docker.com) installed with the daemon running. 25 | 26 | 27 | ## Usage 28 | 29 | The plugin will make it easier to work with rubygems in your serverless project, 30 | but it requires your project to follow some conventions: 31 | 32 | 1) Add the plugin 33 | 34 | ``` 35 | npm install --save-dev serverless-ruby-package 36 | ``` 37 | 38 | Add the plugin to your `serverless.yml` file: 39 | 40 | ```yaml 41 | plugins: 42 | - serverless-ruby-package 43 | ``` 44 | 45 | 2) You must use [bundler](https://bundler.io/) in _standalone_ mode, with the path `vendor/bundle`: 46 | 47 | ``` 48 | bundle install --standalone --path vendor/bundle 49 | ``` 50 | 51 | 3) Add the following lines to the top of your service handler file: 52 | 53 | ```ruby 54 | load "vendor/bundle/bundler/setup.rb" 55 | ``` 56 | 57 | 4) The plugin will force the `serverless` packaging step to exclude _all_ files 58 | by default. You need to explicitly add your service handler file to `serverless.yml`: 59 | 60 | ```yaml 61 | package: 62 | include: 63 | - handler.rb 64 | ``` 65 | 66 | (optional) If your service is implemented across multiple ruby files, it is 67 | recommended that you keep your handler file in the root, and the rest of the 68 | files in a `lib/` directory. You can make them available to your handler by 69 | adding the following line to the top of your handler: 70 | 71 | ```ruby 72 | # handler.rb 73 | load "vendor/bundle/bundler/setup.rb" 74 | $LOAD_PATH.unshift(File.expand_path("lib", __dir__)) 75 | ``` 76 | 77 | You will also need to edit your `serverless.yml` `package` settings to include 78 | those files: 79 | 80 | ```yaml 81 | package: 82 | include: 83 | - handler.rb 84 | - lib/** 85 | ``` 86 | 87 | ## Verify 88 | 89 | Build your package to confirm it is being built as expected: 90 | 91 | ``` 92 | serverless package 93 | ``` 94 | 95 | > Note - if you have gems with native extensions, and are not developing on 96 | linux, make sure have docker installed and running. The first time you package 97 | may take a really long time as the docker image is downloaded. Future packaging 98 | will be much faster. 99 | 100 | That will create the package that is uploaded during a `serverless deploy`, but 101 | keep it around so you can examine it. You can use the following command to verify 102 | it only includes the files you expect: 103 | 104 | ``` 105 | unzip -l .serverless/.zip 106 | ``` 107 | 108 | ## Configuration 109 | 110 | By default, if any gems have native extensions, they will be compiled for the 111 | AWS Lambda Linux using Docker. 112 | 113 | You can override the default behavior by adding to your `serverless.yml` file: 114 | 115 | ``` 116 | custom: 117 | rubyPackage: 118 | alwaysCrossCompileExtensions: false 119 | ``` 120 | 121 | You can also override this behavior using environment variable. If you set the 122 | environment variable, it will have precedence over the `serverless.yml` file: 123 | 124 | ``` 125 | CROSS_COMPILE_EXTENSIONS=false serverless package 126 | ``` 127 | 128 | ## Development 129 | 130 | To work on this plugin, you should first run the following in your local directory: 131 | 132 | ``` 133 | ./dev_setup.sh # configures the demo service project needed by the tests 134 | 135 | yarn test # run the automated test suite 136 | 137 | ./integration-test.sh # run serverless package on the demo project and observe the results 138 | ``` 139 | 140 | ### Troubleshooting the demo_service 141 | 142 | * Make sure the version of bundler specified in the demo_service Gemfile.lock 143 | is compatible with the version installed in the `amazon/aws-lambda-ruby:3.3` 144 | image. 145 | 146 | * Make sure you can invoke the function n in the docker image: 147 | 148 | ``` 149 | ./invoke-service.sh 150 | ``` 151 | 152 | ### Releasing a new version 153 | 154 | * Commit a description of the changes in CHANGELOG.md 155 | 156 | * Run `yarn publish`. It will prompt for the new version number, and npm credentials. 157 | It will create a new commit and tag with the version number changes. Make sure 158 | to push them. 159 | -------------------------------------------------------------------------------- /__tests__/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | vendor/ 3 | .serverless/ 4 | -------------------------------------------------------------------------------- /__tests__/demo_service/.bundle/config: -------------------------------------------------------------------------------- 1 | --- 2 | BUNDLE_PATH: "vendor/bundle" 3 | BUNDLE_BUILD__FFI: "--disable-system-libffi" 4 | -------------------------------------------------------------------------------- /__tests__/demo_service/.serverless_plugins/serverless-ruby-package/index.js: -------------------------------------------------------------------------------- 1 | ../../../../index.js -------------------------------------------------------------------------------- /__tests__/demo_service/Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | gem 'redis-namespace' 6 | gem 'http' # exercises dependency on libffi 7 | gem 'psych' # exercises dependency on libyaml 8 | 9 | group :development do 10 | gem 'rspec-core' 11 | gem 'nio4r' 12 | end 13 | -------------------------------------------------------------------------------- /__tests__/demo_service/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.4) 5 | public_suffix (>= 2.0.2, < 6.0) 6 | connection_pool (2.4.1) 7 | domain_name (0.5.20190701) 8 | unf (>= 0.0.5, < 1.0.0) 9 | ffi (1.15.5) 10 | ffi-compiler (1.0.1) 11 | ffi (>= 1.0.0) 12 | rake 13 | http (5.1.1) 14 | addressable (~> 2.8) 15 | http-cookie (~> 1.0) 16 | http-form_data (~> 2.2) 17 | llhttp-ffi (~> 0.4.0) 18 | http-cookie (1.0.5) 19 | domain_name (~> 0.5) 20 | http-form_data (2.3.0) 21 | llhttp-ffi (0.4.0) 22 | ffi-compiler (~> 1.0) 23 | rake (~> 13.0) 24 | nio4r (2.5.9) 25 | psych (5.0.1) 26 | stringio 27 | public_suffix (5.0.1) 28 | rake (13.0.6) 29 | redis (5.0.6) 30 | redis-client (>= 0.9.0) 31 | redis-client (0.14.1) 32 | connection_pool 33 | redis-namespace (1.11.0) 34 | redis (>= 4) 35 | rspec-core (3.12.2) 36 | rspec-support (~> 3.12.0) 37 | rspec-support (3.12.1) 38 | stringio (3.1.0) 39 | unf (0.1.4) 40 | unf_ext 41 | unf_ext (0.0.8.2) 42 | 43 | PLATFORMS 44 | arm64-darwin-21 45 | arm64-darwin-22 46 | x86_64-linux 47 | 48 | DEPENDENCIES 49 | http 50 | nio4r 51 | psych 52 | redis-namespace 53 | rspec-core 54 | 55 | BUNDLED WITH 56 | 2.4.1 57 | -------------------------------------------------------------------------------- /__tests__/demo_service/handler.rb: -------------------------------------------------------------------------------- 1 | load "vendor/bundle/bundler/setup.rb" 2 | $LOAD_PATH.unshift(File.expand_path("lib", __dir__)) 3 | 4 | require "json" 5 | require "alpha" 6 | require "beta" 7 | require "redis" 8 | 9 | def hello(event:, context:) 10 | body = { 11 | alpha: Alpha.describe, 12 | beta: Beta.describe, 13 | redis_version: Redis::VERSION 14 | } 15 | 16 | begin 17 | require "http" 18 | r = HTTP.get("http://icanhazip.com") 19 | body[:response] = r.to_s 20 | rescue Exception => e 21 | body[:error_class] = e.class.to_s 22 | body[:error_message] = e.message 23 | end 24 | 25 | { 26 | statusCode: 200, 27 | body: JSON.generate(body) 28 | } 29 | end 30 | -------------------------------------------------------------------------------- /__tests__/demo_service/install-gems.sh: -------------------------------------------------------------------------------- 1 | bundle install --standalone --path vendor/bundle 2 | -------------------------------------------------------------------------------- /__tests__/demo_service/invoke-service.sh: -------------------------------------------------------------------------------- 1 | docker run --rm \ 2 | --volume $(pwd):/var/task \ 3 | --env RUBYLIB=/var/task \ 4 | --entrypoint '/var/lang/bin/ruby' \ 5 | $RUBY_IMAGE \ 6 | '-e require "handler"; puts hello(event:{},context:{})' -------------------------------------------------------------------------------- /__tests__/demo_service/lib/alpha.rb: -------------------------------------------------------------------------------- 1 | module Alpha 2 | def self.describe 3 | "first" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /__tests__/demo_service/lib/beta.rb: -------------------------------------------------------------------------------- 1 | module Beta 2 | def self.describe 3 | "second" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /__tests__/demo_service/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-project", 3 | "version": "1.0.0", 4 | "description": "Used for integration tests", 5 | "main": "main.js", 6 | "license": "UNLICENSED", 7 | "private": true, 8 | "scripts": { 9 | "test": "echo 'nope'" 10 | }, 11 | "devDependencies": { 12 | "serverless": "^1.39.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /__tests__/demo_service/serverless.2.7.yml: -------------------------------------------------------------------------------- 1 | service: demo 2 | provider: 3 | name: aws 4 | runtime: ruby2.7 5 | package: 6 | include: 7 | - handler.rb 8 | - lib/** 9 | exclude: 10 | - node_modules 11 | functions: 12 | hello: 13 | handler: handler.hello 14 | events: 15 | - http: 16 | path: / 17 | method: get 18 | plugins: 19 | - serverless-ruby-package 20 | -------------------------------------------------------------------------------- /__tests__/demo_service/serverless.3.2.yml: -------------------------------------------------------------------------------- 1 | service: demo 2 | provider: 3 | name: aws 4 | runtime: ruby3.2 5 | package: 6 | include: 7 | - handler.rb 8 | - lib/** 9 | exclude: 10 | - node_modules 11 | functions: 12 | hello: 13 | handler: handler.hello 14 | events: 15 | - http: 16 | path: / 17 | method: get 18 | plugins: 19 | - serverless-ruby-package 20 | -------------------------------------------------------------------------------- /__tests__/demo_service/serverless.3.3.yml: -------------------------------------------------------------------------------- 1 | service: demo 2 | provider: 3 | name: aws 4 | runtime: ruby3.3 5 | package: 6 | include: 7 | - handler.rb 8 | - lib/** 9 | exclude: 10 | - node_modules 11 | functions: 12 | hello: 13 | handler: handler.hello 14 | events: 15 | - http: 16 | path: / 17 | method: get 18 | plugins: 19 | - serverless-ruby-package 20 | -------------------------------------------------------------------------------- /__tests__/demo_service/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | agent-base@^4.3.0: 6 | version "4.3.0" 7 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 8 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 9 | dependencies: 10 | es6-promisify "^5.0.0" 11 | 12 | ansi-align@^2.0.0: 13 | version "2.0.0" 14 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" 15 | integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= 16 | dependencies: 17 | string-width "^2.0.0" 18 | 19 | ansi-escapes@^1.1.0: 20 | version "1.4.0" 21 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 22 | integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= 23 | 24 | ansi-regex@^2.0.0: 25 | version "2.1.1" 26 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 27 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 28 | 29 | ansi-regex@^3.0.0: 30 | version "3.0.0" 31 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 32 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 33 | 34 | ansi-styles@^2.2.1: 35 | version "2.2.1" 36 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 37 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 38 | 39 | ansi-styles@^3.2.1: 40 | version "3.2.1" 41 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 42 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 43 | dependencies: 44 | color-convert "^1.9.0" 45 | 46 | ansi@^0.3.0, ansi@~0.3.1: 47 | version "0.3.1" 48 | resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" 49 | integrity sha1-DELU+xcWDVqa8eSEus4cZpIsGyE= 50 | 51 | archiver-utils@^1.3.0: 52 | version "1.3.0" 53 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" 54 | integrity sha1-5QtMCccL89aA4y/xt5lOn52JUXQ= 55 | dependencies: 56 | glob "^7.0.0" 57 | graceful-fs "^4.1.0" 58 | lazystream "^1.0.0" 59 | lodash "^4.8.0" 60 | normalize-path "^2.0.0" 61 | readable-stream "^2.0.0" 62 | 63 | archiver@^1.1.0: 64 | version "1.3.0" 65 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" 66 | integrity sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI= 67 | dependencies: 68 | archiver-utils "^1.3.0" 69 | async "^2.0.0" 70 | buffer-crc32 "^0.2.1" 71 | glob "^7.0.0" 72 | lodash "^4.8.0" 73 | readable-stream "^2.0.0" 74 | tar-stream "^1.5.0" 75 | walkdir "^0.0.11" 76 | zip-stream "^1.1.0" 77 | 78 | are-we-there-yet@~1.1.2: 79 | version "1.1.5" 80 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 81 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 82 | dependencies: 83 | delegates "^1.0.0" 84 | readable-stream "^2.0.6" 85 | 86 | argparse@^1.0.7: 87 | version "1.0.10" 88 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 89 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 90 | dependencies: 91 | sprintf-js "~1.0.2" 92 | 93 | arr-diff@^4.0.0: 94 | version "4.0.0" 95 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 96 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 97 | 98 | arr-union@^3.1.0: 99 | version "3.1.0" 100 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 101 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 102 | 103 | array-union@^1.0.1: 104 | version "1.0.2" 105 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 106 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 107 | dependencies: 108 | array-uniq "^1.0.1" 109 | 110 | array-uniq@^1.0.1: 111 | version "1.0.3" 112 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 113 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 114 | 115 | array-unique@^0.3.2: 116 | version "0.3.2" 117 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 118 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 119 | 120 | assign-symbols@^1.0.0: 121 | version "1.0.0" 122 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 123 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 124 | 125 | async@^1.5.2: 126 | version "1.5.2" 127 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 128 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= 129 | 130 | async@^2.0.0: 131 | version "2.6.2" 132 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" 133 | integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== 134 | dependencies: 135 | lodash "^4.17.11" 136 | 137 | asynckit@^0.4.0: 138 | version "0.4.0" 139 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 140 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 141 | 142 | atob@^2.1.1: 143 | version "2.1.2" 144 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 145 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 146 | 147 | aws-sdk@^2.373.0: 148 | version "2.427.0" 149 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.427.0.tgz#74c3d7d3d57229ea07eb19232a9310b3b775ddf6" 150 | integrity sha512-NpFNZa7Wt9fQ8hRLt40OD1ii3qnIhUkpXH4fMSjXP2YqGxCYAHYRj2yARN86YJKCMH566+QobTRyPjtgEWmMKA== 151 | dependencies: 152 | buffer "4.9.1" 153 | events "1.1.1" 154 | ieee754 "1.1.8" 155 | jmespath "0.15.0" 156 | querystring "0.2.0" 157 | sax "1.2.1" 158 | url "0.10.3" 159 | uuid "3.3.2" 160 | xml2js "0.4.19" 161 | 162 | balanced-match@^1.0.0: 163 | version "1.0.0" 164 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 165 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 166 | 167 | base64-js@^1.0.2: 168 | version "1.3.0" 169 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" 170 | integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== 171 | 172 | base@^0.11.1: 173 | version "0.11.2" 174 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 175 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 176 | dependencies: 177 | cache-base "^1.0.1" 178 | class-utils "^0.3.5" 179 | component-emitter "^1.2.1" 180 | define-property "^1.0.0" 181 | isobject "^3.0.1" 182 | mixin-deep "^1.2.0" 183 | pascalcase "^0.1.1" 184 | 185 | bl@^1.0.0: 186 | version "1.2.2" 187 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" 188 | integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== 189 | dependencies: 190 | readable-stream "^2.3.5" 191 | safe-buffer "^5.1.1" 192 | 193 | bluebird@^3.5.0: 194 | version "3.5.3" 195 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 196 | integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== 197 | 198 | boxen@^1.2.1: 199 | version "1.3.0" 200 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" 201 | integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== 202 | dependencies: 203 | ansi-align "^2.0.0" 204 | camelcase "^4.0.0" 205 | chalk "^2.0.1" 206 | cli-boxes "^1.0.0" 207 | string-width "^2.0.0" 208 | term-size "^1.2.0" 209 | widest-line "^2.0.0" 210 | 211 | brace-expansion@^1.1.7: 212 | version "1.1.11" 213 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 214 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 215 | dependencies: 216 | balanced-match "^1.0.0" 217 | concat-map "0.0.1" 218 | 219 | buffer-alloc-unsafe@^1.1.0: 220 | version "1.1.0" 221 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 222 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 223 | 224 | buffer-alloc@^1.2.0: 225 | version "1.2.0" 226 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 227 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 228 | dependencies: 229 | buffer-alloc-unsafe "^1.1.0" 230 | buffer-fill "^1.0.0" 231 | 232 | buffer-crc32@^0.2.1, buffer-crc32@~0.2.3: 233 | version "0.2.13" 234 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 235 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 236 | 237 | buffer-fill@^1.0.0: 238 | version "1.0.0" 239 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 240 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= 241 | 242 | buffer-from@^1.0.0: 243 | version "1.1.1" 244 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 245 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 246 | 247 | buffer@4.9.1: 248 | version "4.9.1" 249 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 250 | integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= 251 | dependencies: 252 | base64-js "^1.0.2" 253 | ieee754 "^1.1.4" 254 | isarray "^1.0.0" 255 | 256 | buffer@^5.1.0, buffer@^5.2.1: 257 | version "5.2.1" 258 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" 259 | integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== 260 | dependencies: 261 | base64-js "^1.0.2" 262 | ieee754 "^1.1.4" 263 | 264 | cache-base@^1.0.1: 265 | version "1.0.1" 266 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 267 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 268 | dependencies: 269 | collection-visit "^1.0.0" 270 | component-emitter "^1.2.1" 271 | get-value "^2.0.6" 272 | has-value "^1.0.0" 273 | isobject "^3.0.1" 274 | set-value "^2.0.0" 275 | to-object-path "^0.3.0" 276 | union-value "^1.0.0" 277 | unset-value "^1.0.0" 278 | 279 | cachedir@^2.1.0: 280 | version "2.2.0" 281 | resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" 282 | integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== 283 | 284 | camelcase@^4.0.0: 285 | version "4.1.0" 286 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 287 | integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= 288 | 289 | capture-stack-trace@^1.0.0: 290 | version "1.0.1" 291 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 292 | integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== 293 | 294 | caw@^2.0.0: 295 | version "2.0.1" 296 | resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" 297 | integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== 298 | dependencies: 299 | get-proxy "^2.0.0" 300 | isurl "^1.0.0-alpha5" 301 | tunnel-agent "^0.6.0" 302 | url-to-options "^1.0.1" 303 | 304 | chalk@^1.0.0: 305 | version "1.1.3" 306 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 307 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 308 | dependencies: 309 | ansi-styles "^2.2.1" 310 | escape-string-regexp "^1.0.2" 311 | has-ansi "^2.0.0" 312 | strip-ansi "^3.0.0" 313 | supports-color "^2.0.0" 314 | 315 | chalk@^2.0.0, chalk@^2.0.1: 316 | version "2.4.2" 317 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 318 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 319 | dependencies: 320 | ansi-styles "^3.2.1" 321 | escape-string-regexp "^1.0.5" 322 | supports-color "^5.3.0" 323 | 324 | ci-info@^1.1.1, ci-info@^1.5.0: 325 | version "1.6.0" 326 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" 327 | integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== 328 | 329 | class-utils@^0.3.5: 330 | version "0.3.6" 331 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 332 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 333 | dependencies: 334 | arr-union "^3.1.0" 335 | define-property "^0.2.5" 336 | isobject "^3.0.0" 337 | static-extend "^0.1.1" 338 | 339 | cli-boxes@^1.0.0: 340 | version "1.0.0" 341 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 342 | integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= 343 | 344 | cli-cursor@^1.0.1: 345 | version "1.0.2" 346 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 347 | integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= 348 | dependencies: 349 | restore-cursor "^1.0.1" 350 | 351 | cli-width@^2.0.0: 352 | version "2.2.0" 353 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 354 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 355 | 356 | code-point-at@^1.0.0: 357 | version "1.1.0" 358 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 359 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 360 | 361 | collection-visit@^1.0.0: 362 | version "1.0.0" 363 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 364 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 365 | dependencies: 366 | map-visit "^1.0.0" 367 | object-visit "^1.0.0" 368 | 369 | color-convert@^1.9.0: 370 | version "1.9.3" 371 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 372 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 373 | dependencies: 374 | color-name "1.1.3" 375 | 376 | color-name@1.1.3: 377 | version "1.1.3" 378 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 379 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 380 | 381 | combined-stream@^1.0.6: 382 | version "1.0.7" 383 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" 384 | integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== 385 | dependencies: 386 | delayed-stream "~1.0.0" 387 | 388 | commander@^2.9.0: 389 | version "2.19.0" 390 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 391 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 392 | 393 | commander@~2.8.1: 394 | version "2.8.1" 395 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" 396 | integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= 397 | dependencies: 398 | graceful-readlink ">= 1.0.0" 399 | 400 | component-emitter@^1.2.0, component-emitter@^1.2.1: 401 | version "1.2.1" 402 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 403 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= 404 | 405 | compress-commons@^1.2.0: 406 | version "1.2.2" 407 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" 408 | integrity sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8= 409 | dependencies: 410 | buffer-crc32 "^0.2.1" 411 | crc32-stream "^2.0.0" 412 | normalize-path "^2.0.0" 413 | readable-stream "^2.0.0" 414 | 415 | concat-map@0.0.1: 416 | version "0.0.1" 417 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 418 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 419 | 420 | concat-stream@^1.4.7: 421 | version "1.6.2" 422 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 423 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 424 | dependencies: 425 | buffer-from "^1.0.0" 426 | inherits "^2.0.3" 427 | readable-stream "^2.2.2" 428 | typedarray "^0.0.6" 429 | 430 | config-chain@^1.1.11: 431 | version "1.1.12" 432 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" 433 | integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== 434 | dependencies: 435 | ini "^1.3.4" 436 | proto-list "~1.2.1" 437 | 438 | configstore@^3.0.0: 439 | version "3.1.2" 440 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" 441 | integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== 442 | dependencies: 443 | dot-prop "^4.1.0" 444 | graceful-fs "^4.1.2" 445 | make-dir "^1.0.0" 446 | unique-string "^1.0.0" 447 | write-file-atomic "^2.0.0" 448 | xdg-basedir "^3.0.0" 449 | 450 | cookie@0.3.1: 451 | version "0.3.1" 452 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 453 | integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= 454 | 455 | cookiejar@^2.1.0: 456 | version "2.1.2" 457 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" 458 | integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== 459 | 460 | copy-descriptor@^0.1.0: 461 | version "0.1.1" 462 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 463 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 464 | 465 | core-util-is@~1.0.0: 466 | version "1.0.2" 467 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 468 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 469 | 470 | crc32-stream@^2.0.0: 471 | version "2.0.0" 472 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" 473 | integrity sha1-483TtN8xaN10494/u8t7KX/pCPQ= 474 | dependencies: 475 | crc "^3.4.4" 476 | readable-stream "^2.0.0" 477 | 478 | crc@^3.4.4: 479 | version "3.8.0" 480 | resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" 481 | integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== 482 | dependencies: 483 | buffer "^5.1.0" 484 | 485 | create-error-class@^3.0.0: 486 | version "3.0.2" 487 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 488 | integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 489 | dependencies: 490 | capture-stack-trace "^1.0.0" 491 | 492 | cross-spawn@^5.0.1: 493 | version "5.1.0" 494 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 495 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 496 | dependencies: 497 | lru-cache "^4.0.1" 498 | shebang-command "^1.2.0" 499 | which "^1.2.9" 500 | 501 | crypto-random-string@^1.0.0: 502 | version "1.0.0" 503 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" 504 | integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= 505 | 506 | debug@^2.2.0: 507 | version "2.6.9" 508 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 509 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 510 | dependencies: 511 | ms "2.0.0" 512 | 513 | debug@^3.1.0: 514 | version "3.2.6" 515 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 516 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 517 | dependencies: 518 | ms "^2.1.1" 519 | 520 | decode-uri-component@^0.2.0: 521 | version "0.2.0" 522 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 523 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 524 | 525 | decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: 526 | version "4.1.1" 527 | resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" 528 | integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== 529 | dependencies: 530 | file-type "^5.2.0" 531 | is-stream "^1.1.0" 532 | tar-stream "^1.5.2" 533 | 534 | decompress-tarbz2@^4.0.0: 535 | version "4.1.1" 536 | resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" 537 | integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== 538 | dependencies: 539 | decompress-tar "^4.1.0" 540 | file-type "^6.1.0" 541 | is-stream "^1.1.0" 542 | seek-bzip "^1.0.5" 543 | unbzip2-stream "^1.0.9" 544 | 545 | decompress-targz@^4.0.0: 546 | version "4.1.1" 547 | resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" 548 | integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== 549 | dependencies: 550 | decompress-tar "^4.1.1" 551 | file-type "^5.2.0" 552 | is-stream "^1.1.0" 553 | 554 | decompress-unzip@^4.0.1: 555 | version "4.0.1" 556 | resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" 557 | integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= 558 | dependencies: 559 | file-type "^3.8.0" 560 | get-stream "^2.2.0" 561 | pify "^2.3.0" 562 | yauzl "^2.4.2" 563 | 564 | decompress@^4.0.0: 565 | version "4.2.0" 566 | resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" 567 | integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= 568 | dependencies: 569 | decompress-tar "^4.0.0" 570 | decompress-tarbz2 "^4.0.0" 571 | decompress-targz "^4.0.0" 572 | decompress-unzip "^4.0.1" 573 | graceful-fs "^4.1.10" 574 | make-dir "^1.0.0" 575 | pify "^2.3.0" 576 | strip-dirs "^2.0.0" 577 | 578 | deep-extend@^0.6.0: 579 | version "0.6.0" 580 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 581 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 582 | 583 | define-property@^0.2.5: 584 | version "0.2.5" 585 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 586 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 587 | dependencies: 588 | is-descriptor "^0.1.0" 589 | 590 | define-property@^1.0.0: 591 | version "1.0.0" 592 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 593 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 594 | dependencies: 595 | is-descriptor "^1.0.0" 596 | 597 | define-property@^2.0.2: 598 | version "2.0.2" 599 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 600 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 601 | dependencies: 602 | is-descriptor "^1.0.2" 603 | isobject "^3.0.1" 604 | 605 | delayed-stream@~1.0.0: 606 | version "1.0.0" 607 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 608 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 609 | 610 | delegates@^1.0.0: 611 | version "1.0.0" 612 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 613 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 614 | 615 | dot-prop@^4.1.0: 616 | version "4.2.0" 617 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 618 | integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== 619 | dependencies: 620 | is-obj "^1.0.0" 621 | 622 | download@^5.0.2: 623 | version "5.0.3" 624 | resolved "https://registry.yarnpkg.com/download/-/download-5.0.3.tgz#63537f977f99266a30eb8a2a2fbd1f20b8000f7a" 625 | integrity sha1-Y1N/l3+ZJmow64oqL70fILgAD3o= 626 | dependencies: 627 | caw "^2.0.0" 628 | decompress "^4.0.0" 629 | filenamify "^2.0.0" 630 | get-stream "^3.0.0" 631 | got "^6.3.0" 632 | mkdirp "^0.5.1" 633 | pify "^2.3.0" 634 | 635 | duplexer3@^0.1.4: 636 | version "0.1.4" 637 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 638 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 639 | 640 | encoding@^0.1.11: 641 | version "0.1.12" 642 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 643 | integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= 644 | dependencies: 645 | iconv-lite "~0.4.13" 646 | 647 | end-of-stream@^1.0.0: 648 | version "1.4.1" 649 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 650 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 651 | dependencies: 652 | once "^1.4.0" 653 | 654 | es6-promise@^4.0.3: 655 | version "4.2.8" 656 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 657 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 658 | 659 | es6-promisify@^5.0.0: 660 | version "5.0.0" 661 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 662 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 663 | dependencies: 664 | es6-promise "^4.0.3" 665 | 666 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 667 | version "1.0.5" 668 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 669 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 670 | 671 | esprima@^4.0.0: 672 | version "4.0.1" 673 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 674 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 675 | 676 | events@1.1.1: 677 | version "1.1.1" 678 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 679 | integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 680 | 681 | execa@^0.7.0: 682 | version "0.7.0" 683 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 684 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 685 | dependencies: 686 | cross-spawn "^5.0.1" 687 | get-stream "^3.0.0" 688 | is-stream "^1.1.0" 689 | npm-run-path "^2.0.0" 690 | p-finally "^1.0.0" 691 | signal-exit "^3.0.0" 692 | strip-eof "^1.0.0" 693 | 694 | exit-hook@^1.0.0: 695 | version "1.1.1" 696 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 697 | integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= 698 | 699 | extend-shallow@^2.0.1: 700 | version "2.0.1" 701 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 702 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 703 | dependencies: 704 | is-extendable "^0.1.0" 705 | 706 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 707 | version "3.0.2" 708 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 709 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 710 | dependencies: 711 | assign-symbols "^1.0.0" 712 | is-extendable "^1.0.1" 713 | 714 | extend@^3.0.0: 715 | version "3.0.2" 716 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 717 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 718 | 719 | external-editor@^1.1.0: 720 | version "1.1.1" 721 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" 722 | integrity sha1-Etew24UPf/fnCBuvQAVwAGDEYAs= 723 | dependencies: 724 | extend "^3.0.0" 725 | spawn-sync "^1.0.15" 726 | tmp "^0.0.29" 727 | 728 | fast-levenshtein@^2.0.6: 729 | version "2.0.6" 730 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 731 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 732 | 733 | fd-slicer@~1.1.0: 734 | version "1.1.0" 735 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 736 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 737 | dependencies: 738 | pend "~1.2.0" 739 | 740 | figures@^1.3.5: 741 | version "1.7.0" 742 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 743 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= 744 | dependencies: 745 | escape-string-regexp "^1.0.5" 746 | object-assign "^4.1.0" 747 | 748 | file-type@^3.8.0: 749 | version "3.9.0" 750 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 751 | integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= 752 | 753 | file-type@^5.2.0: 754 | version "5.2.0" 755 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" 756 | integrity sha1-LdvqfHP/42No365J3DOMBYwritY= 757 | 758 | file-type@^6.1.0: 759 | version "6.2.0" 760 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" 761 | integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== 762 | 763 | filename-reserved-regex@^2.0.0: 764 | version "2.0.0" 765 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" 766 | integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= 767 | 768 | filenamify@^2.0.0: 769 | version "2.1.0" 770 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" 771 | integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== 772 | dependencies: 773 | filename-reserved-regex "^2.0.0" 774 | strip-outer "^1.0.0" 775 | trim-repeated "^1.0.0" 776 | 777 | filesize@^3.3.0: 778 | version "3.6.1" 779 | resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" 780 | integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== 781 | 782 | for-in@^1.0.2: 783 | version "1.0.2" 784 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 785 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 786 | 787 | form-data@^2.3.1: 788 | version "2.3.3" 789 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 790 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 791 | dependencies: 792 | asynckit "^0.4.0" 793 | combined-stream "^1.0.6" 794 | mime-types "^2.1.12" 795 | 796 | formidable@^1.2.0: 797 | version "1.2.1" 798 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" 799 | integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg== 800 | 801 | fragment-cache@^0.2.1: 802 | version "0.2.1" 803 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 804 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 805 | dependencies: 806 | map-cache "^0.2.2" 807 | 808 | fs-constants@^1.0.0: 809 | version "1.0.0" 810 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 811 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 812 | 813 | fs-extra@^0.26.7: 814 | version "0.26.7" 815 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" 816 | integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k= 817 | dependencies: 818 | graceful-fs "^4.1.2" 819 | jsonfile "^2.1.0" 820 | klaw "^1.0.0" 821 | path-is-absolute "^1.0.0" 822 | rimraf "^2.2.8" 823 | 824 | fs.realpath@^1.0.0: 825 | version "1.0.0" 826 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 827 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 828 | 829 | gauge@~1.2.5: 830 | version "1.2.7" 831 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" 832 | integrity sha1-6c7FSD09TuDvRLYKfZnkk14TbZM= 833 | dependencies: 834 | ansi "^0.3.0" 835 | has-unicode "^2.0.0" 836 | lodash.pad "^4.1.0" 837 | lodash.padend "^4.1.0" 838 | lodash.padstart "^4.1.0" 839 | 840 | get-proxy@^2.0.0: 841 | version "2.1.0" 842 | resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" 843 | integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== 844 | dependencies: 845 | npm-conf "^1.1.0" 846 | 847 | get-stdin@^5.0.1: 848 | version "5.0.1" 849 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" 850 | integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= 851 | 852 | get-stream@^2.2.0: 853 | version "2.3.1" 854 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" 855 | integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= 856 | dependencies: 857 | object-assign "^4.0.1" 858 | pinkie-promise "^2.0.0" 859 | 860 | get-stream@^3.0.0: 861 | version "3.0.0" 862 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 863 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 864 | 865 | get-value@^2.0.3, get-value@^2.0.6: 866 | version "2.0.6" 867 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 868 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 869 | 870 | glob@^7.0.0, glob@^7.0.3, glob@^7.1.3: 871 | version "7.1.3" 872 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 873 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 874 | dependencies: 875 | fs.realpath "^1.0.0" 876 | inflight "^1.0.4" 877 | inherits "2" 878 | minimatch "^3.0.4" 879 | once "^1.3.0" 880 | path-is-absolute "^1.0.0" 881 | 882 | global-dirs@^0.1.0: 883 | version "0.1.1" 884 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" 885 | integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= 886 | dependencies: 887 | ini "^1.3.4" 888 | 889 | globby@^6.1.0: 890 | version "6.1.0" 891 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 892 | integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= 893 | dependencies: 894 | array-union "^1.0.1" 895 | glob "^7.0.3" 896 | object-assign "^4.0.1" 897 | pify "^2.0.0" 898 | pinkie-promise "^2.0.0" 899 | 900 | got@^6.3.0, got@^6.7.1: 901 | version "6.7.1" 902 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 903 | integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= 904 | dependencies: 905 | create-error-class "^3.0.0" 906 | duplexer3 "^0.1.4" 907 | get-stream "^3.0.0" 908 | is-redirect "^1.0.0" 909 | is-retry-allowed "^1.0.0" 910 | is-stream "^1.0.0" 911 | lowercase-keys "^1.0.0" 912 | safe-buffer "^5.0.1" 913 | timed-out "^4.0.0" 914 | unzip-response "^2.0.1" 915 | url-parse-lax "^1.0.0" 916 | 917 | graceful-fs@^4.1.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 918 | version "4.1.15" 919 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 920 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 921 | 922 | "graceful-readlink@>= 1.0.0": 923 | version "1.0.1" 924 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 925 | integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= 926 | 927 | graphlib@^2.1.1: 928 | version "2.1.7" 929 | resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.7.tgz#b6a69f9f44bd9de3963ce6804a2fc9e73d86aecc" 930 | integrity sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w== 931 | dependencies: 932 | lodash "^4.17.5" 933 | 934 | has-ansi@^2.0.0: 935 | version "2.0.0" 936 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 937 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 938 | dependencies: 939 | ansi-regex "^2.0.0" 940 | 941 | has-flag@^3.0.0: 942 | version "3.0.0" 943 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 944 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 945 | 946 | has-symbol-support-x@^1.4.1: 947 | version "1.4.2" 948 | resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" 949 | integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== 950 | 951 | has-to-string-tag-x@^1.2.0: 952 | version "1.4.1" 953 | resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" 954 | integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== 955 | dependencies: 956 | has-symbol-support-x "^1.4.1" 957 | 958 | has-unicode@^2.0.0: 959 | version "2.0.1" 960 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 961 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 962 | 963 | has-value@^0.3.1: 964 | version "0.3.1" 965 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 966 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 967 | dependencies: 968 | get-value "^2.0.3" 969 | has-values "^0.1.4" 970 | isobject "^2.0.0" 971 | 972 | has-value@^1.0.0: 973 | version "1.0.0" 974 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 975 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 976 | dependencies: 977 | get-value "^2.0.6" 978 | has-values "^1.0.0" 979 | isobject "^3.0.0" 980 | 981 | has-values@^0.1.4: 982 | version "0.1.4" 983 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 984 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 985 | 986 | has-values@^1.0.0: 987 | version "1.0.0" 988 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 989 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 990 | dependencies: 991 | is-number "^3.0.0" 992 | kind-of "^4.0.0" 993 | 994 | https-proxy-agent@^2.2.1: 995 | version "2.2.4" 996 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 997 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 998 | dependencies: 999 | agent-base "^4.3.0" 1000 | debug "^3.1.0" 1001 | 1002 | iconv-lite@~0.4.13: 1003 | version "0.4.24" 1004 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1005 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1006 | dependencies: 1007 | safer-buffer ">= 2.1.2 < 3" 1008 | 1009 | ieee754@1.1.8: 1010 | version "1.1.8" 1011 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1012 | integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= 1013 | 1014 | ieee754@^1.1.4: 1015 | version "1.1.12" 1016 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" 1017 | integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== 1018 | 1019 | immediate@~3.0.5: 1020 | version "3.0.6" 1021 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 1022 | integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= 1023 | 1024 | import-lazy@^2.1.0: 1025 | version "2.1.0" 1026 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 1027 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 1028 | 1029 | imurmurhash@^0.1.4: 1030 | version "0.1.4" 1031 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1032 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1033 | 1034 | inflight@^1.0.4: 1035 | version "1.0.6" 1036 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1037 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1038 | dependencies: 1039 | once "^1.3.0" 1040 | wrappy "1" 1041 | 1042 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1043 | version "2.0.3" 1044 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1045 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1046 | 1047 | ini@^1.3.4, ini@~1.3.0: 1048 | version "1.3.5" 1049 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1050 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1051 | 1052 | inquirer@^1.0.2: 1053 | version "1.2.3" 1054 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" 1055 | integrity sha1-TexvMvN+97sLLtPx0aXD9UUHSRg= 1056 | dependencies: 1057 | ansi-escapes "^1.1.0" 1058 | chalk "^1.0.0" 1059 | cli-cursor "^1.0.1" 1060 | cli-width "^2.0.0" 1061 | external-editor "^1.1.0" 1062 | figures "^1.3.5" 1063 | lodash "^4.3.0" 1064 | mute-stream "0.0.6" 1065 | pinkie-promise "^2.0.0" 1066 | run-async "^2.2.0" 1067 | rx "^4.1.0" 1068 | string-width "^1.0.1" 1069 | strip-ansi "^3.0.0" 1070 | through "^2.3.6" 1071 | 1072 | is-accessor-descriptor@^0.1.6: 1073 | version "0.1.6" 1074 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1075 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1076 | dependencies: 1077 | kind-of "^3.0.2" 1078 | 1079 | is-accessor-descriptor@^1.0.0: 1080 | version "1.0.0" 1081 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1082 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1083 | dependencies: 1084 | kind-of "^6.0.0" 1085 | 1086 | is-buffer@^1.1.5: 1087 | version "1.1.6" 1088 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1089 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1090 | 1091 | is-ci@^1.0.10: 1092 | version "1.2.1" 1093 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" 1094 | integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== 1095 | dependencies: 1096 | ci-info "^1.5.0" 1097 | 1098 | is-data-descriptor@^0.1.4: 1099 | version "0.1.4" 1100 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1101 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1102 | dependencies: 1103 | kind-of "^3.0.2" 1104 | 1105 | is-data-descriptor@^1.0.0: 1106 | version "1.0.0" 1107 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1108 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1109 | dependencies: 1110 | kind-of "^6.0.0" 1111 | 1112 | is-descriptor@^0.1.0: 1113 | version "0.1.6" 1114 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1115 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1116 | dependencies: 1117 | is-accessor-descriptor "^0.1.6" 1118 | is-data-descriptor "^0.1.4" 1119 | kind-of "^5.0.0" 1120 | 1121 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1122 | version "1.0.2" 1123 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1124 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1125 | dependencies: 1126 | is-accessor-descriptor "^1.0.0" 1127 | is-data-descriptor "^1.0.0" 1128 | kind-of "^6.0.2" 1129 | 1130 | is-docker@^1.1.0: 1131 | version "1.1.0" 1132 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-1.1.0.tgz#f04374d4eee5310e9a8e113bf1495411e46176a1" 1133 | integrity sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE= 1134 | 1135 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1136 | version "0.1.1" 1137 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1138 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1139 | 1140 | is-extendable@^1.0.1: 1141 | version "1.0.1" 1142 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1143 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 1144 | dependencies: 1145 | is-plain-object "^2.0.4" 1146 | 1147 | is-fullwidth-code-point@^1.0.0: 1148 | version "1.0.0" 1149 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1150 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1151 | dependencies: 1152 | number-is-nan "^1.0.0" 1153 | 1154 | is-fullwidth-code-point@^2.0.0: 1155 | version "2.0.0" 1156 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1157 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1158 | 1159 | is-installed-globally@^0.1.0: 1160 | version "0.1.0" 1161 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" 1162 | integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= 1163 | dependencies: 1164 | global-dirs "^0.1.0" 1165 | is-path-inside "^1.0.0" 1166 | 1167 | is-natural-number@^4.0.1: 1168 | version "4.0.1" 1169 | resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" 1170 | integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= 1171 | 1172 | is-npm@^1.0.0: 1173 | version "1.0.0" 1174 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 1175 | integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= 1176 | 1177 | is-number@^3.0.0: 1178 | version "3.0.0" 1179 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1180 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1181 | dependencies: 1182 | kind-of "^3.0.2" 1183 | 1184 | is-obj@^1.0.0: 1185 | version "1.0.1" 1186 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1187 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 1188 | 1189 | is-object@^1.0.1: 1190 | version "1.0.1" 1191 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 1192 | integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= 1193 | 1194 | is-path-inside@^1.0.0: 1195 | version "1.0.1" 1196 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 1197 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= 1198 | dependencies: 1199 | path-is-inside "^1.0.1" 1200 | 1201 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1202 | version "2.0.4" 1203 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1204 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1205 | dependencies: 1206 | isobject "^3.0.1" 1207 | 1208 | is-promise@^2.1.0: 1209 | version "2.1.0" 1210 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1211 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1212 | 1213 | is-redirect@^1.0.0: 1214 | version "1.0.0" 1215 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1216 | integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= 1217 | 1218 | is-retry-allowed@^1.0.0: 1219 | version "1.1.0" 1220 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1221 | integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= 1222 | 1223 | is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: 1224 | version "1.1.0" 1225 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1226 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1227 | 1228 | is-windows@^1.0.2: 1229 | version "1.0.2" 1230 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1231 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1232 | 1233 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1234 | version "1.0.0" 1235 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1236 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1237 | 1238 | isexe@^2.0.0: 1239 | version "2.0.0" 1240 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1241 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1242 | 1243 | isobject@^2.0.0: 1244 | version "2.1.0" 1245 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1246 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1247 | dependencies: 1248 | isarray "1.0.0" 1249 | 1250 | isobject@^3.0.0, isobject@^3.0.1: 1251 | version "3.0.1" 1252 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1253 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1254 | 1255 | isurl@^1.0.0-alpha5: 1256 | version "1.0.0" 1257 | resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" 1258 | integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== 1259 | dependencies: 1260 | has-to-string-tag-x "^1.2.0" 1261 | is-object "^1.0.1" 1262 | 1263 | jmespath@0.15.0: 1264 | version "0.15.0" 1265 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 1266 | integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= 1267 | 1268 | js-yaml@^3.6.1, js-yaml@^3.8.3: 1269 | version "3.13.1" 1270 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1271 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1272 | dependencies: 1273 | argparse "^1.0.7" 1274 | esprima "^4.0.0" 1275 | 1276 | json-cycle@^1.3.0: 1277 | version "1.3.0" 1278 | resolved "https://registry.yarnpkg.com/json-cycle/-/json-cycle-1.3.0.tgz#c4f6f7d926c2979012cba173b06f9cae9e866d3f" 1279 | integrity sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw== 1280 | 1281 | json-refs@^2.1.5: 1282 | version "2.1.7" 1283 | resolved "https://registry.yarnpkg.com/json-refs/-/json-refs-2.1.7.tgz#b9eb01fe29f5ea3e92878f15aea10ad38b5acf89" 1284 | integrity sha1-uesB/in16j6Sh48VrqEK04taz4k= 1285 | dependencies: 1286 | commander "^2.9.0" 1287 | graphlib "^2.1.1" 1288 | js-yaml "^3.8.3" 1289 | native-promise-only "^0.8.1" 1290 | path-loader "^1.0.2" 1291 | slash "^1.0.0" 1292 | uri-js "^3.0.2" 1293 | 1294 | json-stringify-safe@5.0.1: 1295 | version "5.0.1" 1296 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1297 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1298 | 1299 | jsonfile@^2.1.0: 1300 | version "2.4.0" 1301 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 1302 | integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= 1303 | optionalDependencies: 1304 | graceful-fs "^4.1.6" 1305 | 1306 | jszip@^3.1.2: 1307 | version "3.2.1" 1308 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.1.tgz#c5d32df7274042282b157efb16e522b43435e01a" 1309 | integrity sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw== 1310 | dependencies: 1311 | lie "~3.3.0" 1312 | pako "~1.0.2" 1313 | readable-stream "~2.3.6" 1314 | set-immediate-shim "~1.0.1" 1315 | 1316 | jwt-decode@^2.2.0: 1317 | version "2.2.0" 1318 | resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" 1319 | integrity sha1-fYa9VmefWM5qhHBKZX3TkruoGnk= 1320 | 1321 | kind-of@^3.0.2, kind-of@^3.0.3: 1322 | version "3.2.2" 1323 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1324 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1325 | dependencies: 1326 | is-buffer "^1.1.5" 1327 | 1328 | kind-of@^4.0.0: 1329 | version "4.0.0" 1330 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1331 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1332 | dependencies: 1333 | is-buffer "^1.1.5" 1334 | 1335 | kind-of@^5.0.0: 1336 | version "5.1.0" 1337 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1338 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1339 | 1340 | kind-of@^6.0.0, kind-of@^6.0.2: 1341 | version "6.0.2" 1342 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1343 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 1344 | 1345 | klaw@^1.0.0: 1346 | version "1.3.1" 1347 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 1348 | integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= 1349 | optionalDependencies: 1350 | graceful-fs "^4.1.9" 1351 | 1352 | latest-version@^3.0.0: 1353 | version "3.1.0" 1354 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 1355 | integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= 1356 | dependencies: 1357 | package-json "^4.0.0" 1358 | 1359 | lazystream@^1.0.0: 1360 | version "1.0.0" 1361 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" 1362 | integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= 1363 | dependencies: 1364 | readable-stream "^2.0.5" 1365 | 1366 | lie@~3.3.0: 1367 | version "3.3.0" 1368 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1369 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1370 | dependencies: 1371 | immediate "~3.0.5" 1372 | 1373 | lodash.difference@^4.5.0: 1374 | version "4.5.0" 1375 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 1376 | integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= 1377 | 1378 | lodash.pad@^4.1.0: 1379 | version "4.5.1" 1380 | resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" 1381 | integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= 1382 | 1383 | lodash.padend@^4.1.0: 1384 | version "4.6.1" 1385 | resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" 1386 | integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= 1387 | 1388 | lodash.padstart@^4.1.0: 1389 | version "4.6.1" 1390 | resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" 1391 | integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= 1392 | 1393 | lodash.uniq@^4.5.0: 1394 | version "4.5.0" 1395 | resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" 1396 | integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= 1397 | 1398 | lodash@^4.13.1, lodash@^4.17.11, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.8.0: 1399 | version "4.17.14" 1400 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" 1401 | integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== 1402 | 1403 | lowercase-keys@^1.0.0: 1404 | version "1.0.1" 1405 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 1406 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 1407 | 1408 | lru-cache@^4.0.1: 1409 | version "4.1.5" 1410 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1411 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1412 | dependencies: 1413 | pseudomap "^1.0.2" 1414 | yallist "^2.1.2" 1415 | 1416 | lsmod@1.0.0: 1417 | version "1.0.0" 1418 | resolved "https://registry.yarnpkg.com/lsmod/-/lsmod-1.0.0.tgz#9a00f76dca36eb23fa05350afe1b585d4299e64b" 1419 | integrity sha1-mgD3bco26yP6BTUK/htYXUKZ5ks= 1420 | 1421 | make-dir@^1.0.0: 1422 | version "1.3.0" 1423 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1424 | integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== 1425 | dependencies: 1426 | pify "^3.0.0" 1427 | 1428 | map-cache@^0.2.2: 1429 | version "0.2.2" 1430 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1431 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1432 | 1433 | map-visit@^1.0.0: 1434 | version "1.0.0" 1435 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1436 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1437 | dependencies: 1438 | object-visit "^1.0.0" 1439 | 1440 | methods@^1.1.1: 1441 | version "1.1.2" 1442 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1443 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1444 | 1445 | mime-db@~1.38.0: 1446 | version "1.38.0" 1447 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" 1448 | integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== 1449 | 1450 | mime-types@^2.1.12: 1451 | version "2.1.22" 1452 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" 1453 | integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== 1454 | dependencies: 1455 | mime-db "~1.38.0" 1456 | 1457 | mime@^1.4.1: 1458 | version "1.6.0" 1459 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1460 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1461 | 1462 | minimatch@^3.0.4: 1463 | version "3.0.4" 1464 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1465 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1466 | dependencies: 1467 | brace-expansion "^1.1.7" 1468 | 1469 | minimist@0.0.8: 1470 | version "0.0.8" 1471 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1472 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1473 | 1474 | minimist@^1.2.0: 1475 | version "1.2.0" 1476 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1477 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1478 | 1479 | mixin-deep@^1.2.0: 1480 | version "1.3.2" 1481 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 1482 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 1483 | dependencies: 1484 | for-in "^1.0.2" 1485 | is-extendable "^1.0.1" 1486 | 1487 | mkdirp@^0.5.1: 1488 | version "0.5.1" 1489 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1490 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1491 | dependencies: 1492 | minimist "0.0.8" 1493 | 1494 | moment@^2.13.0: 1495 | version "2.24.0" 1496 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" 1497 | integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== 1498 | 1499 | ms@2.0.0: 1500 | version "2.0.0" 1501 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1502 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1503 | 1504 | ms@^2.1.1: 1505 | version "2.1.2" 1506 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1507 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1508 | 1509 | mute-stream@0.0.6: 1510 | version "0.0.6" 1511 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" 1512 | integrity sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s= 1513 | 1514 | nanomatch@^1.2.13: 1515 | version "1.2.13" 1516 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1517 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 1518 | dependencies: 1519 | arr-diff "^4.0.0" 1520 | array-unique "^0.3.2" 1521 | define-property "^2.0.2" 1522 | extend-shallow "^3.0.2" 1523 | fragment-cache "^0.2.1" 1524 | is-windows "^1.0.2" 1525 | kind-of "^6.0.2" 1526 | object.pick "^1.3.0" 1527 | regex-not "^1.0.0" 1528 | snapdragon "^0.8.1" 1529 | to-regex "^3.0.1" 1530 | 1531 | native-promise-only@^0.8.1: 1532 | version "0.8.1" 1533 | resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" 1534 | integrity sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE= 1535 | 1536 | node-fetch@^1.6.0: 1537 | version "1.7.3" 1538 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 1539 | integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== 1540 | dependencies: 1541 | encoding "^0.1.11" 1542 | is-stream "^1.0.1" 1543 | 1544 | normalize-path@^2.0.0: 1545 | version "2.1.1" 1546 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1547 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 1548 | dependencies: 1549 | remove-trailing-separator "^1.0.1" 1550 | 1551 | npm-conf@^1.1.0: 1552 | version "1.1.3" 1553 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" 1554 | integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== 1555 | dependencies: 1556 | config-chain "^1.1.11" 1557 | pify "^3.0.0" 1558 | 1559 | npm-run-path@^2.0.0: 1560 | version "2.0.2" 1561 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1562 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1563 | dependencies: 1564 | path-key "^2.0.0" 1565 | 1566 | npmlog@^2.0.3: 1567 | version "2.0.4" 1568 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" 1569 | integrity sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI= 1570 | dependencies: 1571 | ansi "~0.3.1" 1572 | are-we-there-yet "~1.1.2" 1573 | gauge "~1.2.5" 1574 | 1575 | number-is-nan@^1.0.0: 1576 | version "1.0.1" 1577 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1578 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1579 | 1580 | object-assign@^4.0.1, object-assign@^4.1.0: 1581 | version "4.1.1" 1582 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1583 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1584 | 1585 | object-copy@^0.1.0: 1586 | version "0.1.0" 1587 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1588 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 1589 | dependencies: 1590 | copy-descriptor "^0.1.0" 1591 | define-property "^0.2.5" 1592 | kind-of "^3.0.3" 1593 | 1594 | object-hash@^1.2.0: 1595 | version "1.3.1" 1596 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" 1597 | integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== 1598 | 1599 | object-visit@^1.0.0: 1600 | version "1.0.1" 1601 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1602 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 1603 | dependencies: 1604 | isobject "^3.0.0" 1605 | 1606 | object.pick@^1.3.0: 1607 | version "1.3.0" 1608 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1609 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 1610 | dependencies: 1611 | isobject "^3.0.1" 1612 | 1613 | once@^1.3.0, once@^1.4.0: 1614 | version "1.4.0" 1615 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1616 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1617 | dependencies: 1618 | wrappy "1" 1619 | 1620 | onetime@^1.0.0: 1621 | version "1.1.0" 1622 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 1623 | integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= 1624 | 1625 | os-shim@^0.1.2: 1626 | version "0.1.3" 1627 | resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" 1628 | integrity sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc= 1629 | 1630 | os-tmpdir@~1.0.1: 1631 | version "1.0.2" 1632 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1633 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1634 | 1635 | p-finally@^1.0.0: 1636 | version "1.0.0" 1637 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1638 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1639 | 1640 | package-json@^4.0.0: 1641 | version "4.0.1" 1642 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" 1643 | integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= 1644 | dependencies: 1645 | got "^6.7.1" 1646 | registry-auth-token "^3.0.1" 1647 | registry-url "^3.0.3" 1648 | semver "^5.1.0" 1649 | 1650 | pako@~1.0.2: 1651 | version "1.0.10" 1652 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" 1653 | integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== 1654 | 1655 | pascalcase@^0.1.1: 1656 | version "0.1.1" 1657 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1658 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 1659 | 1660 | path-is-absolute@^1.0.0: 1661 | version "1.0.1" 1662 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1663 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1664 | 1665 | path-is-inside@^1.0.1: 1666 | version "1.0.2" 1667 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1668 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 1669 | 1670 | path-key@^2.0.0: 1671 | version "2.0.1" 1672 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1673 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1674 | 1675 | path-loader@^1.0.2: 1676 | version "1.0.9" 1677 | resolved "https://registry.yarnpkg.com/path-loader/-/path-loader-1.0.9.tgz#4f204ada1a477db2a572fce382029c3f24dc5237" 1678 | integrity sha512-pD37gArtr+/72Tst9oJoDB9k7gB9A09Efj7yyBi5HDUqaxqULXBWW8Rnw2TfNF+3sN7QZv0ZNdW1Qx2pFGW5Jg== 1679 | dependencies: 1680 | native-promise-only "^0.8.1" 1681 | superagent "^3.8.3" 1682 | 1683 | pend@~1.2.0: 1684 | version "1.2.0" 1685 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1686 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1687 | 1688 | pify@^2.0.0, pify@^2.3.0: 1689 | version "2.3.0" 1690 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1691 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1692 | 1693 | pify@^3.0.0: 1694 | version "3.0.0" 1695 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1696 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1697 | 1698 | pinkie-promise@^2.0.0: 1699 | version "2.0.1" 1700 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1701 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 1702 | dependencies: 1703 | pinkie "^2.0.0" 1704 | 1705 | pinkie@^2.0.0: 1706 | version "2.0.4" 1707 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1708 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 1709 | 1710 | prepend-http@^1.0.1: 1711 | version "1.0.4" 1712 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 1713 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 1714 | 1715 | process-nextick-args@~2.0.0: 1716 | version "2.0.0" 1717 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1718 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 1719 | 1720 | promise-queue@^2.2.3: 1721 | version "2.2.5" 1722 | resolved "https://registry.yarnpkg.com/promise-queue/-/promise-queue-2.2.5.tgz#2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4" 1723 | integrity sha1-L29ffA9tCBCelnZZx5uIqe1ek7Q= 1724 | 1725 | proto-list@~1.2.1: 1726 | version "1.2.4" 1727 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 1728 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= 1729 | 1730 | pseudomap@^1.0.2: 1731 | version "1.0.2" 1732 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1733 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1734 | 1735 | punycode@1.3.2: 1736 | version "1.3.2" 1737 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1738 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1739 | 1740 | punycode@^2.1.0: 1741 | version "2.1.1" 1742 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1743 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1744 | 1745 | qs@^6.5.1: 1746 | version "6.7.0" 1747 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1748 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1749 | 1750 | querystring@0.2.0: 1751 | version "0.2.0" 1752 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1753 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1754 | 1755 | raven@^1.2.1: 1756 | version "1.2.1" 1757 | resolved "https://registry.yarnpkg.com/raven/-/raven-1.2.1.tgz#949c134db028a190b7bbf8f790aae541b7c020bd" 1758 | integrity sha1-lJwTTbAooZC3u/j3kKrlQbfAIL0= 1759 | dependencies: 1760 | cookie "0.3.1" 1761 | json-stringify-safe "5.0.1" 1762 | lsmod "1.0.0" 1763 | stack-trace "0.0.9" 1764 | uuid "3.0.0" 1765 | 1766 | rc@^1.0.1, rc@^1.1.6: 1767 | version "1.2.8" 1768 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1769 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1770 | dependencies: 1771 | deep-extend "^0.6.0" 1772 | ini "~1.3.0" 1773 | minimist "^1.2.0" 1774 | strip-json-comments "~2.0.1" 1775 | 1776 | readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: 1777 | version "2.3.6" 1778 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1779 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 1780 | dependencies: 1781 | core-util-is "~1.0.0" 1782 | inherits "~2.0.3" 1783 | isarray "~1.0.0" 1784 | process-nextick-args "~2.0.0" 1785 | safe-buffer "~5.1.1" 1786 | string_decoder "~1.1.1" 1787 | util-deprecate "~1.0.1" 1788 | 1789 | regex-not@^1.0.0, regex-not@^1.0.2: 1790 | version "1.0.2" 1791 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 1792 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 1793 | dependencies: 1794 | extend-shallow "^3.0.2" 1795 | safe-regex "^1.1.0" 1796 | 1797 | registry-auth-token@^3.0.1: 1798 | version "3.4.0" 1799 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" 1800 | integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== 1801 | dependencies: 1802 | rc "^1.1.6" 1803 | safe-buffer "^5.0.1" 1804 | 1805 | registry-url@^3.0.3: 1806 | version "3.1.0" 1807 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 1808 | integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= 1809 | dependencies: 1810 | rc "^1.0.1" 1811 | 1812 | remove-trailing-separator@^1.0.1: 1813 | version "1.1.0" 1814 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 1815 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 1816 | 1817 | replaceall@^0.1.6: 1818 | version "0.1.6" 1819 | resolved "https://registry.yarnpkg.com/replaceall/-/replaceall-0.1.6.tgz#81d81ac7aeb72d7f5c4942adf2697a3220688d8e" 1820 | integrity sha1-gdgax663LX9cSUKt8ml6MiBojY4= 1821 | 1822 | resolve-url@^0.2.1: 1823 | version "0.2.1" 1824 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 1825 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 1826 | 1827 | restore-cursor@^1.0.1: 1828 | version "1.0.1" 1829 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 1830 | integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= 1831 | dependencies: 1832 | exit-hook "^1.0.0" 1833 | onetime "^1.0.0" 1834 | 1835 | ret@~0.1.10: 1836 | version "0.1.15" 1837 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1838 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 1839 | 1840 | rimraf@^2.2.8: 1841 | version "2.6.3" 1842 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1843 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1844 | dependencies: 1845 | glob "^7.1.3" 1846 | 1847 | run-async@^2.2.0: 1848 | version "2.3.0" 1849 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1850 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 1851 | dependencies: 1852 | is-promise "^2.1.0" 1853 | 1854 | rx@^4.1.0: 1855 | version "4.1.0" 1856 | resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" 1857 | integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= 1858 | 1859 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1860 | version "5.1.2" 1861 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1862 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1863 | 1864 | safe-regex@^1.1.0: 1865 | version "1.1.0" 1866 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1867 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 1868 | dependencies: 1869 | ret "~0.1.10" 1870 | 1871 | "safer-buffer@>= 2.1.2 < 3": 1872 | version "2.1.2" 1873 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1874 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1875 | 1876 | sax@1.2.1: 1877 | version "1.2.1" 1878 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 1879 | integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= 1880 | 1881 | sax@>=0.6.0: 1882 | version "1.2.4" 1883 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1884 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1885 | 1886 | seek-bzip@^1.0.5: 1887 | version "1.0.5" 1888 | resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" 1889 | integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= 1890 | dependencies: 1891 | commander "~2.8.1" 1892 | 1893 | semver-diff@^2.0.0: 1894 | version "2.1.0" 1895 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 1896 | integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= 1897 | dependencies: 1898 | semver "^5.0.3" 1899 | 1900 | semver-regex@^1.0.0: 1901 | version "1.0.0" 1902 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" 1903 | integrity sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk= 1904 | 1905 | semver@^5.0.3, semver@^5.1.0: 1906 | version "5.6.0" 1907 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 1908 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 1909 | 1910 | serverless@^1.39.1: 1911 | version "1.39.1" 1912 | resolved "https://registry.yarnpkg.com/serverless/-/serverless-1.39.1.tgz#ada4b0dfd471593b5d83d4eec449d65297fbb864" 1913 | integrity sha512-b23fUICJZU88k0GS7gZPG4CZhfGhEzIS9u7lP/Ky9ny1Ja4s7beK62NzYRPtgFOpfBmJROUlRcVZeDFcGsF1GA== 1914 | dependencies: 1915 | archiver "^1.1.0" 1916 | async "^1.5.2" 1917 | aws-sdk "^2.373.0" 1918 | bluebird "^3.5.0" 1919 | cachedir "^2.1.0" 1920 | chalk "^2.0.0" 1921 | ci-info "^1.1.1" 1922 | download "^5.0.2" 1923 | fast-levenshtein "^2.0.6" 1924 | filesize "^3.3.0" 1925 | fs-extra "^0.26.7" 1926 | get-stdin "^5.0.1" 1927 | globby "^6.1.0" 1928 | graceful-fs "^4.1.11" 1929 | https-proxy-agent "^2.2.1" 1930 | is-docker "^1.1.0" 1931 | js-yaml "^3.6.1" 1932 | json-cycle "^1.3.0" 1933 | json-refs "^2.1.5" 1934 | jszip "^3.1.2" 1935 | jwt-decode "^2.2.0" 1936 | lodash "^4.13.1" 1937 | minimist "^1.2.0" 1938 | mkdirp "^0.5.1" 1939 | moment "^2.13.0" 1940 | nanomatch "^1.2.13" 1941 | node-fetch "^1.6.0" 1942 | object-hash "^1.2.0" 1943 | promise-queue "^2.2.3" 1944 | raven "^1.2.1" 1945 | rc "^1.1.6" 1946 | replaceall "^0.1.6" 1947 | semver "^5.0.3" 1948 | semver-regex "^1.0.0" 1949 | tabtab "^2.2.2" 1950 | untildify "^3.0.3" 1951 | update-notifier "^2.2.0" 1952 | uuid "^2.0.2" 1953 | write-file-atomic "^2.1.0" 1954 | yaml-ast-parser "0.0.34" 1955 | 1956 | set-immediate-shim@~1.0.1: 1957 | version "1.0.1" 1958 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1959 | integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= 1960 | 1961 | set-value@^0.4.3: 1962 | version "0.4.3" 1963 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 1964 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= 1965 | dependencies: 1966 | extend-shallow "^2.0.1" 1967 | is-extendable "^0.1.1" 1968 | is-plain-object "^2.0.1" 1969 | to-object-path "^0.3.0" 1970 | 1971 | set-value@^2.0.0: 1972 | version "2.0.0" 1973 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 1974 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== 1975 | dependencies: 1976 | extend-shallow "^2.0.1" 1977 | is-extendable "^0.1.1" 1978 | is-plain-object "^2.0.3" 1979 | split-string "^3.0.1" 1980 | 1981 | shebang-command@^1.2.0: 1982 | version "1.2.0" 1983 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1984 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1985 | dependencies: 1986 | shebang-regex "^1.0.0" 1987 | 1988 | shebang-regex@^1.0.0: 1989 | version "1.0.0" 1990 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1991 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1992 | 1993 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1994 | version "3.0.2" 1995 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1996 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 1997 | 1998 | slash@^1.0.0: 1999 | version "1.0.0" 2000 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2001 | integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= 2002 | 2003 | snapdragon@^0.8.1: 2004 | version "0.8.2" 2005 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2006 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 2007 | dependencies: 2008 | base "^0.11.1" 2009 | debug "^2.2.0" 2010 | define-property "^0.2.5" 2011 | extend-shallow "^2.0.1" 2012 | map-cache "^0.2.2" 2013 | source-map "^0.5.6" 2014 | source-map-resolve "^0.5.0" 2015 | use "^3.1.0" 2016 | 2017 | source-map-resolve@^0.5.0: 2018 | version "0.5.2" 2019 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 2020 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 2021 | dependencies: 2022 | atob "^2.1.1" 2023 | decode-uri-component "^0.2.0" 2024 | resolve-url "^0.2.1" 2025 | source-map-url "^0.4.0" 2026 | urix "^0.1.0" 2027 | 2028 | source-map-url@^0.4.0: 2029 | version "0.4.0" 2030 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2031 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 2032 | 2033 | source-map@^0.5.6: 2034 | version "0.5.7" 2035 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2036 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2037 | 2038 | spawn-sync@^1.0.15: 2039 | version "1.0.15" 2040 | resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" 2041 | integrity sha1-sAeZVX63+wyDdsKdROih6mfldHY= 2042 | dependencies: 2043 | concat-stream "^1.4.7" 2044 | os-shim "^0.1.2" 2045 | 2046 | split-string@^3.0.1: 2047 | version "3.1.0" 2048 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2049 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 2050 | dependencies: 2051 | extend-shallow "^3.0.0" 2052 | 2053 | sprintf-js@~1.0.2: 2054 | version "1.0.3" 2055 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2056 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2057 | 2058 | stack-trace@0.0.9: 2059 | version "0.0.9" 2060 | resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" 2061 | integrity sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU= 2062 | 2063 | static-extend@^0.1.1: 2064 | version "0.1.2" 2065 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2066 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 2067 | dependencies: 2068 | define-property "^0.2.5" 2069 | object-copy "^0.1.0" 2070 | 2071 | string-width@^1.0.1: 2072 | version "1.0.2" 2073 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2074 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2075 | dependencies: 2076 | code-point-at "^1.0.0" 2077 | is-fullwidth-code-point "^1.0.0" 2078 | strip-ansi "^3.0.0" 2079 | 2080 | string-width@^2.0.0, string-width@^2.1.1: 2081 | version "2.1.1" 2082 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2083 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2084 | dependencies: 2085 | is-fullwidth-code-point "^2.0.0" 2086 | strip-ansi "^4.0.0" 2087 | 2088 | string_decoder@~1.1.1: 2089 | version "1.1.1" 2090 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2091 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2092 | dependencies: 2093 | safe-buffer "~5.1.0" 2094 | 2095 | strip-ansi@^3.0.0: 2096 | version "3.0.1" 2097 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2098 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2099 | dependencies: 2100 | ansi-regex "^2.0.0" 2101 | 2102 | strip-ansi@^4.0.0: 2103 | version "4.0.0" 2104 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2105 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2106 | dependencies: 2107 | ansi-regex "^3.0.0" 2108 | 2109 | strip-dirs@^2.0.0: 2110 | version "2.1.0" 2111 | resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" 2112 | integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== 2113 | dependencies: 2114 | is-natural-number "^4.0.1" 2115 | 2116 | strip-eof@^1.0.0: 2117 | version "1.0.0" 2118 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2119 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2120 | 2121 | strip-json-comments@~2.0.1: 2122 | version "2.0.1" 2123 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2124 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2125 | 2126 | strip-outer@^1.0.0: 2127 | version "1.0.1" 2128 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" 2129 | integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== 2130 | dependencies: 2131 | escape-string-regexp "^1.0.2" 2132 | 2133 | superagent@^3.8.3: 2134 | version "3.8.3" 2135 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" 2136 | integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== 2137 | dependencies: 2138 | component-emitter "^1.2.0" 2139 | cookiejar "^2.1.0" 2140 | debug "^3.1.0" 2141 | extend "^3.0.0" 2142 | form-data "^2.3.1" 2143 | formidable "^1.2.0" 2144 | methods "^1.1.1" 2145 | mime "^1.4.1" 2146 | qs "^6.5.1" 2147 | readable-stream "^2.3.5" 2148 | 2149 | supports-color@^2.0.0: 2150 | version "2.0.0" 2151 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2152 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2153 | 2154 | supports-color@^5.3.0: 2155 | version "5.5.0" 2156 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2157 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2158 | dependencies: 2159 | has-flag "^3.0.0" 2160 | 2161 | tabtab@^2.2.2: 2162 | version "2.2.2" 2163 | resolved "https://registry.yarnpkg.com/tabtab/-/tabtab-2.2.2.tgz#7a047f143b010b4cbd31f857e82961512cbf4e14" 2164 | integrity sha1-egR/FDsBC0y9MfhX6ClhUSy/ThQ= 2165 | dependencies: 2166 | debug "^2.2.0" 2167 | inquirer "^1.0.2" 2168 | lodash.difference "^4.5.0" 2169 | lodash.uniq "^4.5.0" 2170 | minimist "^1.2.0" 2171 | mkdirp "^0.5.1" 2172 | npmlog "^2.0.3" 2173 | object-assign "^4.1.0" 2174 | 2175 | tar-stream@^1.5.0, tar-stream@^1.5.2: 2176 | version "1.6.2" 2177 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" 2178 | integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== 2179 | dependencies: 2180 | bl "^1.0.0" 2181 | buffer-alloc "^1.2.0" 2182 | end-of-stream "^1.0.0" 2183 | fs-constants "^1.0.0" 2184 | readable-stream "^2.3.0" 2185 | to-buffer "^1.1.1" 2186 | xtend "^4.0.0" 2187 | 2188 | term-size@^1.2.0: 2189 | version "1.2.0" 2190 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" 2191 | integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= 2192 | dependencies: 2193 | execa "^0.7.0" 2194 | 2195 | through@^2.3.6, through@^2.3.8: 2196 | version "2.3.8" 2197 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2198 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2199 | 2200 | timed-out@^4.0.0: 2201 | version "4.0.1" 2202 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 2203 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 2204 | 2205 | tmp@^0.0.29: 2206 | version "0.0.29" 2207 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" 2208 | integrity sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= 2209 | dependencies: 2210 | os-tmpdir "~1.0.1" 2211 | 2212 | to-buffer@^1.1.1: 2213 | version "1.1.1" 2214 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" 2215 | integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== 2216 | 2217 | to-object-path@^0.3.0: 2218 | version "0.3.0" 2219 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2220 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 2221 | dependencies: 2222 | kind-of "^3.0.2" 2223 | 2224 | to-regex@^3.0.1: 2225 | version "3.0.2" 2226 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 2227 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 2228 | dependencies: 2229 | define-property "^2.0.2" 2230 | extend-shallow "^3.0.2" 2231 | regex-not "^1.0.2" 2232 | safe-regex "^1.1.0" 2233 | 2234 | trim-repeated@^1.0.0: 2235 | version "1.0.0" 2236 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" 2237 | integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= 2238 | dependencies: 2239 | escape-string-regexp "^1.0.2" 2240 | 2241 | tunnel-agent@^0.6.0: 2242 | version "0.6.0" 2243 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2244 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2245 | dependencies: 2246 | safe-buffer "^5.0.1" 2247 | 2248 | typedarray@^0.0.6: 2249 | version "0.0.6" 2250 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2251 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 2252 | 2253 | unbzip2-stream@^1.0.9: 2254 | version "1.3.3" 2255 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" 2256 | integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== 2257 | dependencies: 2258 | buffer "^5.2.1" 2259 | through "^2.3.8" 2260 | 2261 | union-value@^1.0.0: 2262 | version "1.0.0" 2263 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 2264 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= 2265 | dependencies: 2266 | arr-union "^3.1.0" 2267 | get-value "^2.0.6" 2268 | is-extendable "^0.1.1" 2269 | set-value "^0.4.3" 2270 | 2271 | unique-string@^1.0.0: 2272 | version "1.0.0" 2273 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" 2274 | integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= 2275 | dependencies: 2276 | crypto-random-string "^1.0.0" 2277 | 2278 | unset-value@^1.0.0: 2279 | version "1.0.0" 2280 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2281 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 2282 | dependencies: 2283 | has-value "^0.3.1" 2284 | isobject "^3.0.0" 2285 | 2286 | untildify@^3.0.3: 2287 | version "3.0.3" 2288 | resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" 2289 | integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== 2290 | 2291 | unzip-response@^2.0.1: 2292 | version "2.0.1" 2293 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 2294 | integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= 2295 | 2296 | update-notifier@^2.2.0: 2297 | version "2.5.0" 2298 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" 2299 | integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== 2300 | dependencies: 2301 | boxen "^1.2.1" 2302 | chalk "^2.0.1" 2303 | configstore "^3.0.0" 2304 | import-lazy "^2.1.0" 2305 | is-ci "^1.0.10" 2306 | is-installed-globally "^0.1.0" 2307 | is-npm "^1.0.0" 2308 | latest-version "^3.0.0" 2309 | semver-diff "^2.0.0" 2310 | xdg-basedir "^3.0.0" 2311 | 2312 | uri-js@^3.0.2: 2313 | version "3.0.2" 2314 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" 2315 | integrity sha1-+QuFhQf4HepNz7s8TD2/orVX+qo= 2316 | dependencies: 2317 | punycode "^2.1.0" 2318 | 2319 | urix@^0.1.0: 2320 | version "0.1.0" 2321 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2322 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 2323 | 2324 | url-parse-lax@^1.0.0: 2325 | version "1.0.0" 2326 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 2327 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 2328 | dependencies: 2329 | prepend-http "^1.0.1" 2330 | 2331 | url-to-options@^1.0.1: 2332 | version "1.0.1" 2333 | resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" 2334 | integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= 2335 | 2336 | url@0.10.3: 2337 | version "0.10.3" 2338 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 2339 | integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= 2340 | dependencies: 2341 | punycode "1.3.2" 2342 | querystring "0.2.0" 2343 | 2344 | use@^3.1.0: 2345 | version "3.1.1" 2346 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 2347 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 2348 | 2349 | util-deprecate@~1.0.1: 2350 | version "1.0.2" 2351 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2352 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2353 | 2354 | uuid@3.0.0: 2355 | version "3.0.0" 2356 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" 2357 | integrity sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg= 2358 | 2359 | uuid@3.3.2: 2360 | version "3.3.2" 2361 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 2362 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 2363 | 2364 | uuid@^2.0.2: 2365 | version "2.0.3" 2366 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" 2367 | integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= 2368 | 2369 | walkdir@^0.0.11: 2370 | version "0.0.11" 2371 | resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" 2372 | integrity sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI= 2373 | 2374 | which@^1.2.9: 2375 | version "1.3.1" 2376 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2377 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2378 | dependencies: 2379 | isexe "^2.0.0" 2380 | 2381 | widest-line@^2.0.0: 2382 | version "2.0.1" 2383 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" 2384 | integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== 2385 | dependencies: 2386 | string-width "^2.1.1" 2387 | 2388 | wrappy@1: 2389 | version "1.0.2" 2390 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2391 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2392 | 2393 | write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: 2394 | version "2.4.2" 2395 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" 2396 | integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== 2397 | dependencies: 2398 | graceful-fs "^4.1.11" 2399 | imurmurhash "^0.1.4" 2400 | signal-exit "^3.0.2" 2401 | 2402 | xdg-basedir@^3.0.0: 2403 | version "3.0.0" 2404 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" 2405 | integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= 2406 | 2407 | xml2js@0.4.19: 2408 | version "0.4.19" 2409 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 2410 | integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== 2411 | dependencies: 2412 | sax ">=0.6.0" 2413 | xmlbuilder "~9.0.1" 2414 | 2415 | xmlbuilder@~9.0.1: 2416 | version "9.0.7" 2417 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 2418 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= 2419 | 2420 | xtend@^4.0.0: 2421 | version "4.0.1" 2422 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2423 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 2424 | 2425 | yallist@^2.1.2: 2426 | version "2.1.2" 2427 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2428 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2429 | 2430 | yaml-ast-parser@0.0.34: 2431 | version "0.0.34" 2432 | resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.34.tgz#d00f3cf9d773b7241409ae92a6740d1db19f49e6" 2433 | integrity sha1-0A88+ddztyQUCa6SpnQNHbGfSeY= 2434 | 2435 | yauzl@^2.4.2: 2436 | version "2.10.0" 2437 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 2438 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 2439 | dependencies: 2440 | buffer-crc32 "~0.2.3" 2441 | fd-slicer "~1.1.0" 2442 | 2443 | zip-stream@^1.1.0: 2444 | version "1.2.0" 2445 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" 2446 | integrity sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ= 2447 | dependencies: 2448 | archiver-utils "^1.3.0" 2449 | compress-commons "^1.2.0" 2450 | lodash "^4.8.0" 2451 | readable-stream "^2.0.0" 2452 | -------------------------------------------------------------------------------- /__tests__/index.test.js: -------------------------------------------------------------------------------- 1 | const Plugin = require("../index"); 2 | 3 | const process = require('process'); 4 | 5 | 6 | let plugin = null; 7 | let serverless = null; 8 | let options = null; 9 | 10 | beforeEach(()=>{ 11 | serverless = { 12 | cli: {log: () => {}}, 13 | config: { 14 | servicePath: process.cwd() + "/__tests__/demo_service" 15 | }, 16 | service: { 17 | package: { 18 | include: ["handler.rb", "lib/**"], 19 | exclude: ["mytest.rb"] 20 | }, 21 | provider: { 22 | name: "aws", 23 | runtime: "ruby3.3" 24 | }, 25 | custom: { 26 | rubyPackage: { 27 | alwaysCrossCompileExtensions: false, 28 | } 29 | } 30 | } 31 | } 32 | options = {}; 33 | 34 | plugin = new Plugin(serverless, options); 35 | }); 36 | 37 | test("captures the serverless configuration", () => { 38 | expect(plugin.serverless).toBe(serverless); 39 | }); 40 | 41 | test("captures the options", () => { 42 | expect(plugin.options).toBe(options); 43 | }); 44 | 45 | test("hooks in before packaging deployment artifacts", () => { 46 | expect(Object.keys(plugin.hooks)).toContain("before:package:createDeploymentArtifacts"); 47 | }); 48 | 49 | test("hooks in before packaging an individual function", () => { 50 | expect(Object.keys(plugin.hooks)).toContain("before:package:function:package"); 51 | }); 52 | 53 | test("disables 'Excluding development dependencies', which only applies to node projects", () =>{ 54 | plugin.beforePackage(); 55 | expect(plugin.serverless.service.package.excludeDevDependencies).toBe(false); 56 | }); 57 | 58 | test("forces whitelisting files to package by excluding all files by default", () =>{ 59 | plugin.beforePackage(); 60 | expect(plugin.serverless.service.package.exclude).toEqual(["**"]); 61 | }); 62 | 63 | test("include the bundler standalone files", () => { 64 | plugin.beforePackage(); 65 | 66 | expect(plugin.serverless.service.package.include).toContain("vendor/bundle/bundler/**"); 67 | }); 68 | 69 | test("preserve the includes specified in serverless configuration", () => { 70 | plugin.beforePackage(); 71 | 72 | expect(plugin.serverless.service.package.include).toContain("handler.rb"); 73 | expect(plugin.serverless.service.package.include).toContain("lib/**"); 74 | }); 75 | 76 | test("include files for each gem needed by default bundler group - excluding .git/test files", () =>{ 77 | plugin.beforePackage(); 78 | 79 | // asserting on entire array since order matters 80 | expect(plugin.serverless.service.package.include).toEqual([ 81 | "handler.rb", 82 | "lib/**", 83 | "vendor/bundle/bundler/**", 84 | "vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/**", 85 | "!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/.git/**", 86 | "!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/test/**", 87 | "!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/spec/**", 88 | "vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/**", 89 | "!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/.git/**", 90 | "!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/test/**", 91 | "!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/spec/**", 92 | "vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/**", 93 | "!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/.git/**", 94 | "!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/test/**", 95 | "!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/spec/**", 96 | "vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/**", 97 | "vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/ffi-1.15.5/**", 98 | "!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/.git/**", 99 | "!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/test/**", 100 | "!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/spec/**", 101 | "vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/**", 102 | "!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/.git/**", 103 | "!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/test/**", 104 | "!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/spec/**", 105 | "vendor/bundle/ruby/3.3.0/gems/http-5.1.1/**", 106 | "!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/.git/**", 107 | "!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/test/**", 108 | "!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/spec/**", 109 | "vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/**", 110 | "!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/.git/**", 111 | "!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/test/**", 112 | "!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/spec/**", 113 | "vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/**", 114 | "!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/.git/**", 115 | "!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/test/**", 116 | "!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/spec/**", 117 | "vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/**", 118 | "vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/llhttp-ffi-0.4.0/**", 119 | "!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/.git/**", 120 | "!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/test/**", 121 | "!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/spec/**", 122 | "vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/**", 123 | "vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/psych-5.0.1/**", 124 | "!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/.git/**", 125 | "!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/test/**", 126 | "!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/spec/**", 127 | "vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/**", 128 | "!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/.git/**", 129 | "!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/test/**", 130 | "!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/spec/**", 131 | "vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/**", 132 | "!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/.git/**", 133 | "!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/test/**", 134 | "!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/spec/**", 135 | "vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/**", 136 | "!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/.git/**", 137 | "!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/test/**", 138 | "!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/spec/**", 139 | "vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/**", 140 | "!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/.git/**", 141 | "!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/test/**", 142 | "!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/spec/**", 143 | "vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/**", 144 | "!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/.git/**", 145 | "!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/test/**", 146 | "!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/spec/**", 147 | "vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/**", 148 | "vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/stringio-3.1.0/**", 149 | "!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/.git/**", 150 | "!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/test/**", 151 | "!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/spec/**", 152 | "vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/**", 153 | "!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/.git/**", 154 | "!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/test/**", 155 | "!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/spec/**", 156 | "vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/**", 157 | "vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/unf_ext-0.0.8.2/**", 158 | "!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/.git/**", 159 | "!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/test/**", 160 | "!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/spec/**" 161 | ]); 162 | }); 163 | -------------------------------------------------------------------------------- /build-gems.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | os=$(. /etc/os-release; echo "$PRETTY_NAME") 5 | 6 | # script to build gems within amazon linux lambda containers 7 | echo '## INSTALLING PACKAGES ##' 8 | 9 | # Amazon Linux 2 uses yum while Amazon Linux 2023 and likely future versions 10 | # use dnf 11 | if [[ $os == "Amazon Linux 2" ]] 12 | then 13 | pkg_mgr="yum" 14 | else 15 | pkg_mgr="dnf" 16 | fi 17 | 18 | eval "${pkg_mgr} update -y" 19 | eval "${pkg_mgr} install -y gcc gcc-c++ make libffi-devel libyaml-devel" 20 | 21 | echo '## INSTALLING GEMS ##' 22 | bundle config set --local path 'vendor/bundle' 23 | bundle install --standalone 24 | -------------------------------------------------------------------------------- /dev_setup.sh: -------------------------------------------------------------------------------- 1 | yarn 2 | pushd __tests__/demo_service 3 | ./install-gems.sh 4 | yarn 5 | popd 6 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require("path"); 4 | const { execSync } = require('child_process'); 5 | const fs = require('fs'); 6 | 7 | class PackageRubyBundlePlugin { 8 | get config() { 9 | const config = Object.assign( 10 | { 11 | alwaysCrossCompileExtensions: true, 12 | debug: !!process.env.SRP_DEBUG, 13 | }, 14 | ( 15 | this.serverless.service.custom && 16 | this.serverless.service.custom.rubyPackage 17 | ) || {} 18 | ); 19 | // give precedence to environment variable, if set 20 | if (typeof(process.env.CROSS_COMPILE_EXTENSIONS) !== 'undefined'){ 21 | const override = (/^(?:y|yes|true|1|on)$/i.test(process.env.CROSS_COMPILE_EXTENSIONS)); 22 | config.alwaysCrossCompileExtensions = override; 23 | } 24 | 25 | return config; 26 | } 27 | 28 | constructor(serverless, options) { 29 | this.serverless = serverless; 30 | this.options = options; 31 | 32 | this.hooks = { 33 | 'before:package:createDeploymentArtifacts': this.beforePackage.bind(this), 34 | 'before:package:function:package': this.beforePackage.bind(this), 35 | }; 36 | } 37 | 38 | log(message){ 39 | this.serverless.cli.log(message, "ruby-package"); 40 | } 41 | 42 | rubyVersion() { 43 | // RbConfig::CONFIG['ruby_version'] 44 | const runtime_version = this.serverless.service.provider.runtime 45 | const match = runtime_version.match(/ruby(\d+\.\d+)/); 46 | 47 | if (match) { 48 | return `${match[1]}.0`; 49 | } 50 | 51 | // If not set, default to 3.3.0 52 | return '3.3.0'; 53 | } 54 | 55 | beforePackage(){ 56 | this.warnOnUnsupportedRuntime(); 57 | 58 | const gemRoot = `vendor/bundle/ruby/${this.rubyVersion()}`; 59 | const extensionDir = `${gemRoot}/extensions/x86_64-linux/${this.rubyVersion()}`; 60 | 61 | const excludeGemTests = true; //TODO: make configurable 62 | const identifyGemsScript = ` 63 | require 'json' 64 | root = ENV['GEM_HOME'] 65 | gems = Bundler.definition.specs_for([:default]).reject{|s| s.name=='bundler'} 66 | details = gems.map{|gem| 67 | { 68 | extensions: !!gem.extensions.any?, 69 | name: gem.full_name, 70 | path: gem.full_gem_path.split(root).last, 71 | } 72 | } 73 | puts JSON.generate(details.sort_by{|x| x[:name]}) 74 | ` 75 | 76 | this.serverless.service.package.excludeDevDependencies = false; // only relevant to nodejs 77 | this.serverless.service.package.exclude = ["**"]; // force whitelist 78 | this.serverless.service.package.include.push("vendor/bundle/bundler/**"); // bundler standalone files 79 | 80 | const gemFilePath = path.join(this.serverless.config.servicePath, "Gemfile"); 81 | const bundleEnv = Object.assign({ 82 | "BUNDLE_GEMFILE": gemFilePath 83 | }, process.env); 84 | const output = execSync("bundle exec ruby", {input: identifyGemsScript, env: bundleEnv}); 85 | const gems = JSON.parse(output) 86 | 87 | if (gems.some(x=>x.extensions)){ 88 | if (this.config.alwaysCrossCompileExtensions){ 89 | this.nativeLinuxBundle(); 90 | } 91 | } 92 | 93 | if (gems.length < 10) { 94 | this.log(`Packaging gems: ${gems.map(x=>x.name).join(" ")}`); 95 | } else { 96 | this.log(`Packaging ${gems.length} gems`); 97 | } 98 | 99 | gems.forEach((gem) =>{ 100 | this.serverless.service.package.include.push(`${gemRoot}${gem.path}/**`); 101 | if (gem.extensions){ 102 | this.serverless.service.package.include.push(`${extensionDir}/${gem.name}/**`); 103 | } 104 | 105 | // includes that start with a ! are treated as excludes when evaluating, 106 | // but are ordered along with the includes. If these patterns were 107 | // specified as excludes, they would be evaluated first, and then the 108 | // includes on the gem paths would bring them back. 109 | this.serverless.service.package.include.push(`!${gemRoot}${gem.path}/.git/**`); 110 | if (excludeGemTests) { 111 | this.serverless.service.package.include.push(`!${gemRoot}${gem.path}/test/**`); 112 | this.serverless.service.package.include.push(`!${gemRoot}${gem.path}/spec/**`); 113 | } 114 | }); 115 | } 116 | 117 | nativeLinuxBundle(){ 118 | this.log(`Building gems with native extensions for linux`); 119 | const localPath = this.serverless.config.servicePath; 120 | const imageTag = this.serverless.service.provider.runtime.slice(-3); 121 | const dockerImage = `amazon/aws-lambda-ruby:${imageTag}`; 122 | const command = `docker run --rm \ 123 | --volume "${localPath}:/var/task" \ 124 | --entrypoint '/bin/bash' \ 125 | ${dockerImage} \ 126 | '/var/task/node_modules/serverless-ruby-package/build-gems.sh'` 127 | 128 | if (this.config.debug){ 129 | this.log(`docker image: ${dockerImage}`); 130 | this.log(`command: ${command}`); 131 | } 132 | execSync(command) 133 | } 134 | 135 | warnOnUnsupportedRuntime(){ 136 | const runtimes = ['ruby2.7', 'ruby3.2', 'ruby3.3']; 137 | 138 | if (this.config.debug){ 139 | this.log(`platform: ${process.platform}`); 140 | this.log(`provider: ${this.serverless.service.provider.name}`); 141 | this.log(`runtime: ${this.serverless.service.provider.runtime}`); 142 | } 143 | if (this.serverless.service.provider.name != 'aws'){ 144 | this.log(`WARNING: serverless-ruby-package has only been tested with the AWS provider. It may not work with ${this.serverless.service.provider.name}, but bug reports are welcome.`); 145 | return; 146 | } 147 | 148 | if (!runtimes.includes(this.serverless.service.provider.runtime)){ 149 | this.log(`WARNING: serverless-ruby-package has only been tested with the following ruby runtimes: ${runtimes.join(', ')}. It may not work with ${this.serverless.service.provider.runtime}, but bug reports are welcome.`); 150 | } 151 | } 152 | } 153 | 154 | module.exports = PackageRubyBundlePlugin; 155 | -------------------------------------------------------------------------------- /integration-test.sh: -------------------------------------------------------------------------------- 1 | set -euo pipefail 2 | 3 | function test_version() { 4 | local version="${1}" 5 | 6 | echo "## BUILD PACKAGE FOR RUBY ${version}" 7 | cp "serverless.${version}.yml" serverless.yml 8 | npx serverless package 9 | rm serverless.yml 10 | 11 | echo 12 | echo "## EXAMINE PACKAGE FOR RUBY ${version}" 13 | unzip -l .serverless/demo.zip 14 | 15 | echo "## VERIFY RUBY ${version} FUNCTION CAN LOAD DEPENDENCIES" 16 | #RUBY_IMAGE="amazon/aws-lambda-ruby:3.2" ./invoke-service.sh 17 | result=$(docker run --rm \ 18 | --platform linux/amd64 \ 19 | --volume $(pwd):/var/task \ 20 | --env RUBYLIB=/var/task \ 21 | --entrypoint '/var/lang/bin/ruby' \ 22 | "amazon/aws-lambda-ruby:${version}" \ 23 | '-e require "handler"; puts hello(event:{},context:{})' ) 24 | echo "${result}" 25 | local status_code=$(echo "${result}" | cut -c 15-17) 26 | echo "status_code: ${status_code}" 27 | 28 | if [ "${status_code}" != "200" ]; then 29 | echo "ERROR: status code was '${status_code} for ruby ${version}" 30 | exit 1 31 | fi 32 | 33 | rm .serverless/demo.zip 34 | } 35 | 36 | echo "## BUILDING PLUGIN PACKAGE" 37 | npm pack 38 | mv serverless-ruby-*.tgz __tests__/demo_service/ 39 | 40 | echo "## INSTALLING PLUGIN PACKAGE FOR DEMO SERVICE" 41 | pushd __tests__/demo_service 42 | npm install --no-save serverless-ruby-*.tgz 43 | 44 | echo "## RUNNING RUBY VERSION TESTS" 45 | test_version "3.3" 46 | test_version "3.2" 47 | test_version "2.7" 48 | 49 | echo "## CLEANING UP" 50 | git checkout yarn.lock 51 | rm serverless-ruby-*.tgz -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverless-ruby-package", 3 | "repository": "https://github.com/joshuaflanagan/serverless-ruby-package", 4 | "version": "3.3.0", 5 | "description": "serverless plugin to package ruby gems", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "jest" 9 | }, 10 | "author": "Joshua Flanagan", 11 | "license": "MIT", 12 | "files": [ 13 | "index.js", 14 | "build-gems.sh" 15 | ], 16 | "devDependencies": { 17 | "jest": "^24.5.0", 18 | "serverless": "^3.33.0" 19 | } 20 | } 21 | --------------------------------------------------------------------------------