├── app ├── controllers │ ├── .keep │ └── active_storage │ │ └── resumable_uploads_controller.rb └── javascript │ └── activestorage-resumable │ ├── index.js │ ├── helpers.js │ ├── resumable_upload.js │ ├── resumable_uploads_controller.js │ ├── resumable_blob_upload.js │ ├── resumable_file_checksum.js │ ├── resumable_upload_controller.js │ ├── resumable_blob_record.js │ └── ujs-resumable.js ├── .rubocop.yml ├── lib ├── activestorage │ ├── resumable │ │ ├── version.rb │ │ └── engine.rb │ └── resumable.rb ├── actionview_extensions │ └── helpers │ │ └── form_tag_helper.rb └── activestorage_extensions │ ├── service │ └── gcs_service.rb │ └── blob.rb ├── db └── migrate │ └── 20190825001409_add_resumable_url_to_active_storage_blobs.rb ├── config └── routes.rb ├── Rakefile ├── .eslintrc ├── Gemfile ├── .gitignore ├── .github └── stale.yml ├── bin └── rails ├── CHANGELOG.md ├── activestorage-resumable.gemspec ├── MIT-LICENSE ├── rollup.config.js ├── package.json ├── README.md └── yarn.lock /app/controllers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | Metrics/LineLength: 2 | Max: 120 3 | Layout/MultilineMethodCallIndentation: 4 | EnforcedStyle: indented_relative_to_receiver 5 | -------------------------------------------------------------------------------- /lib/activestorage/resumable/version.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module ActiveStorage 4 | module Resumable 5 | VERSION = '1.0.1' 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20190825001409_add_resumable_url_to_active_storage_blobs.rb: -------------------------------------------------------------------------------- 1 | class AddResumableUrlToActiveStorageBlobs < ActiveRecord::Migration[6.0] 2 | def change 3 | add_column :active_storage_blobs, :resumable_url, :text 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /lib/activestorage/resumable/engine.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module ActiveStorage 4 | module Resumable 5 | class Engine < ::Rails::Engine 6 | engine_name 'active_storage_resumable' 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/index.js: -------------------------------------------------------------------------------- 1 | import { start } from "./ujs-resumable" 2 | import { ResumableUpload } from "./resumable_upload" 3 | export { start, ResumableUpload } 4 | 5 | function autostart() { 6 | if (window.ActiveStorageResumable) { 7 | start() 8 | } 9 | } 10 | 11 | setTimeout(autostart, 1) 12 | -------------------------------------------------------------------------------- /config/routes.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Rails.application.routes.draw do 4 | scope ActiveStorage.routes_prefix do 5 | post '/resumable_uploads' => 'active_storage/resumable_uploads#create', as: :rails_resumable_uploads 6 | put '/resumable_uploads/:signed_blob_id' => 'active_storage/resumable_uploads#update', as: :update_rails_resumable_upload 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/activestorage/resumable.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'activestorage/resumable/engine' 4 | require 'activestorage_extensions/service/gcs_service' 5 | require 'activestorage_extensions/blob' 6 | require 'actionview_extensions/helpers/form_tag_helper' 7 | 8 | module ActiveStorage 9 | module Resumable 10 | mattr_accessor :upload_origin_url 11 | @@upload_origin_url = ENV['UPLOAD_ORIGIN_URL'] 12 | 13 | def self.configure 14 | yield self 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | begin 2 | require 'bundler/setup' 3 | rescue LoadError 4 | puts 'You must `gem install bundler` and `bundle install` to run rake tasks' 5 | end 6 | 7 | require 'rdoc/task' 8 | 9 | RDoc::Task.new(:rdoc) do |rdoc| 10 | rdoc.rdoc_dir = 'rdoc' 11 | rdoc.title = 'ActiveStorage::Resumable' 12 | rdoc.options << '--line-numbers' 13 | rdoc.rdoc_files.include('README.md') 14 | rdoc.rdoc_files.include('lib/**/*.rb') 15 | end 16 | 17 | load 'rails/tasks/statistics.rake' 18 | 19 | require 'bundler/gem_tasks' 20 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "rules": { 4 | "semi": [ 5 | "error", 6 | "never" 7 | ], 8 | "quotes": [ 9 | "error", 10 | "double" 11 | ], 12 | "no-unused-vars": [ 13 | "error", 14 | { 15 | "vars": "all", 16 | "args": "none" 17 | } 18 | ] 19 | }, 20 | "plugins": [ 21 | "import" 22 | ], 23 | "env": { 24 | "browser": true, 25 | "es6": true 26 | }, 27 | "parserOptions": { 28 | "ecmaVersion": 8, 29 | "sourceType": "module" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 | 4 | # Declare your gem's dependencies in activestorage-resumable.gemspec. 5 | # Bundler will treat runtime dependencies like base dependencies, and 6 | # development dependencies will be added by default to the :development group. 7 | gemspec 8 | 9 | # Declare any dependencies that are still in development here instead of in 10 | # your gemspec. These might include edge Rails or gems from your path or 11 | # Git. Remember to move these dependencies to your gemspec before releasing 12 | # your gem to rubygems.org. 13 | 14 | # To use a debugger 15 | # gem 'byebug', group: [:development, :test] 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile '~/.gitignore_global' 6 | 7 | !/log/.keep 8 | !/storage/.keep 9 | !/tmp/.keep 10 | .byebug_history 11 | .yarn-integrity 12 | /.bundle 13 | /config/master.key 14 | /log/* 15 | /node_modules 16 | /node_modules 17 | /public/assets 18 | /public/packs 19 | /public/packs-test 20 | /src 21 | /storage/* 22 | /tmp/* 23 | /yarn-error.log 24 | /yarn-error.log 25 | activestorage-resumable-*.gem 26 | Gemfile.lock 27 | yarn-debug.log* 28 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 60 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: wontfix 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false 18 | -------------------------------------------------------------------------------- /lib/actionview_extensions/helpers/form_tag_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ActiveSupport.on_load(:action_view) do 4 | module ActionView 5 | module Helpers 6 | module FormTagHelper 7 | private 8 | 9 | def convert_direct_upload_option_to_url(options) 10 | if options.delete(:direct_upload) && main_app.respond_to?(:rails_direct_uploads_url) 11 | options['data-direct-upload-url'] = main_app.rails_direct_uploads_url 12 | elsif options.delete(:resumable_upload) && main_app.respond_to?(:rails_resumable_uploads_url) 13 | options['data-resumable-upload-url'] = main_app.rails_resumable_uploads_url 14 | end 15 | options 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/controllers/active_storage/resumable_uploads_controller.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module ActiveStorage 4 | class ResumableUploadsController < ActiveStorage::BaseController 5 | def create 6 | blob = ActiveStorage::Blob.find_or_create_before_resumable_upload!(blob_args) 7 | render json: resumable_upload_json(blob) 8 | end 9 | 10 | def update 11 | blob = ActiveStorage::Blob.find_by(key: params[:signed_blob_id]) 12 | blob.update(blob_args) 13 | render json: resumable_upload_json(blob) 14 | end 15 | 16 | private 17 | 18 | def blob_args 19 | params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :metadata).to_h.symbolize_keys 20 | end 21 | 22 | def resumable_upload_json(blob) 23 | blob.as_json(root: false, methods: :signed_id) 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # This command will automatically be run when you run "rails" with Rails gems 3 | # installed from the root of your application. 4 | 5 | ENGINE_ROOT = File.expand_path('..', __dir__) 6 | ENGINE_PATH = File.expand_path('../lib/activestorage/resumable/engine', __dir__) 7 | 8 | # Set up gems listed in the Gemfile. 9 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) 10 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 11 | 12 | require "rails" 13 | # Pick the frameworks you want: 14 | require "active_model/railtie" 15 | require "active_job/railtie" 16 | require "active_record/railtie" 17 | require "active_storage/engine" 18 | require "action_controller/railtie" 19 | require "action_mailer/railtie" 20 | require "action_view/railtie" 21 | require "action_cable/engine" 22 | require "sprockets/railtie" 23 | # require "rails/test_unit/railtie" 24 | require 'rails/engine/commands' 25 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 4 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 5 | 6 | ## [Unreleased] 7 | 8 | ## [1.0.1] - 2019-10-27 9 | ### Fixes 10 | - Our ActiveStorage::Blob extensions was interacting with non-resumable blobs, creating resumable URLs for non-resumable 11 | blobs and finding blobs for resumable upload without a resumable URL. 12 | - Missing information about upload origin URL. 13 | 14 | ## [1.0.0] - 2019-10-01 15 | ### Birthdate 16 | - Adds support for Google Cloud Storage resumable uploads to ActiveStorage. 17 | 18 | [Unreleased]: https://github.com/fnix/activestorage-resumable/compare/v1.0.1...HEAD 19 | [1.0.1]: https://github.com/fnix/activestorage-resumable/compare/v1.0.0...v1.0.1 20 | [1.0.0]: https://github.com/fnix/activestorage-resumable/compare/ba4fc7ce0ad5ac51ebe11512d694ebd2db33124d...v1.0.0 21 | -------------------------------------------------------------------------------- /activestorage-resumable.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | $LOAD_PATH.push File.expand_path('lib', __dir__) 4 | 5 | # Maintain your gem's version: 6 | require 'activestorage/resumable/version' 7 | 8 | # Describe your gem and declare its dependencies: 9 | Gem::Specification.new do |spec| 10 | spec.name = 'activestorage-resumable' 11 | spec.version = ActiveStorage::Resumable::VERSION 12 | spec.authors = ['Kadu Diógenes'] 13 | spec.email = ['kadu@fnix.com.br'] 14 | spec.homepage = 'https://github.com/fnix/activestorage-resumable' 15 | spec.summary = 'Adds resumable support for ActiveStorage.' 16 | spec.description = 'Adds resumable support for ActiveStorage.' 17 | spec.license = 'MIT' 18 | 19 | spec.files = Dir['{app,config,db,lib}/**/*', 'MIT-LICENSE', 'Rakefile', 'README.md'] 20 | 21 | spec.add_dependency 'activestorage', '>= 5.2.0' 22 | spec.add_dependency 'rails', '>= 5.2.0' 23 | 24 | spec.add_development_dependency 'sqlite3' 25 | end 26 | -------------------------------------------------------------------------------- /lib/activestorage_extensions/service/gcs_service.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ActiveSupport.on_load(:after_initialize) do 4 | require 'active_storage/service/gcs_service' 5 | 6 | module ActiveStorage 7 | class Service::GCSService 8 | def url_for_resumable_upload(key, content_type, **) 9 | instrument :url, key: key do |payload| 10 | signed_url = bucket.signed_url(key, method: 'PUT', content_type: content_type, version: :v4) 11 | 12 | uri = URI.parse(signed_url) 13 | https = Net::HTTP.new(uri.host, uri.port) 14 | https.use_ssl = true 15 | 16 | headers = { 17 | 'Origin': ActiveStorage::Resumable.upload_origin_url, 18 | 'x-goog-resumable': 'start' 19 | } 20 | request = Net::HTTP::Put.new(uri.request_uri, headers) 21 | response = https.request(request) 22 | 23 | generated_url = response['location'] 24 | 25 | payload[:url] = generated_url 26 | 27 | generated_url 28 | end 29 | end 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /MIT-LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Kadu Diógenes 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import globals from "rollup-plugin-node-globals" 2 | import resolve from "rollup-plugin-node-resolve" 3 | import json from "rollup-plugin-json" 4 | import commonjs from "rollup-plugin-commonjs" 5 | import babel from "rollup-plugin-babel" 6 | import { terser } from "rollup-plugin-terser" 7 | 8 | const terserOptions = { 9 | mangle: false, 10 | compress: false, 11 | output: { 12 | beautify: true, 13 | indent_level: 2 14 | } 15 | } 16 | 17 | export default { 18 | input: "app/javascript/activestorage-resumable/index.js", 19 | output: { 20 | file: "app/assets/javascripts/activestorage-resumable.js", 21 | format: "umd", 22 | name: "ActiveStorageResumable" 23 | }, 24 | plugins: [ 25 | resolve({ browser: true, preferBuiltins: true }), 26 | json(), 27 | babel({ 28 | "presets": [ 29 | [ 30 | "@babel/env", 31 | { 32 | "modules": false, 33 | "useBuiltIns": "usage", 34 | "corejs": 3 35 | } 36 | ] 37 | ], 38 | exclude: 'node_modules/**' 39 | }), 40 | commonjs(), 41 | globals(), 42 | terser(terserOptions) 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/helpers.js: -------------------------------------------------------------------------------- 1 | export function getMetaValue(name) { 2 | const element = findElement(document.head, `meta[name="${name}"]`) 3 | if (element) { 4 | return element.getAttribute("content") 5 | } 6 | } 7 | 8 | export function findElements(root, selector) { 9 | if (typeof root == "string") { 10 | selector = root 11 | root = document 12 | } 13 | const elements = root.querySelectorAll(selector) 14 | return toArray(elements) 15 | } 16 | 17 | export function findElement(root, selector) { 18 | if (typeof root == "string") { 19 | selector = root 20 | root = document 21 | } 22 | return root.querySelector(selector) 23 | } 24 | 25 | export function dispatchEvent(element, type, eventInit = {}) { 26 | const { disabled } = element 27 | const { bubbles, cancelable, detail } = eventInit 28 | const event = document.createEvent("Event") 29 | 30 | event.initEvent(type, bubbles || true, cancelable || true) 31 | event.detail = detail || {} 32 | 33 | try { 34 | element.disabled = false 35 | element.dispatchEvent(event) 36 | } finally { 37 | element.disabled = disabled 38 | } 39 | 40 | return event 41 | } 42 | 43 | export function toArray(value) { 44 | if (Array.isArray(value)) { 45 | return value 46 | } else if (Array.from) { 47 | return Array.from(value) 48 | } else { 49 | return [].slice.call(value) 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fnix/activestorage-resumable", 3 | "version": "1.0.0", 4 | "description": "Resumable support for ActiveStorage", 5 | "main": "app/assets/javascripts/activestorage-resumable.js", 6 | "repository": "https://github.com/fnix/activestorage-resumable", 7 | "author": "Kadu Diógenes ", 8 | "license": "MIT", 9 | "scripts": { 10 | "prebuild": "yarn lint", 11 | "build": "rollup --config rollup.config.js", 12 | "lint": "eslint app/javascript", 13 | "prepublishOnly": "rm -rf src && cp -R app/javascript/activestorage-resumable src" 14 | }, 15 | "devDependencies": { 16 | "@babel/core": "^7.6.0", 17 | "@babel/plugin-transform-modules-umd": "^7.2.0", 18 | "@babel/plugin-transform-regenerator": "^7.4.5", 19 | "@babel/plugin-transform-runtime": "^7.6.0", 20 | "@babel/preset-env": "^7.6.0", 21 | "core-js": "^3.2.1", 22 | "eslint": "^6.3.0", 23 | "eslint-plugin-import": "^2.18.2", 24 | "regenerator-runtime": "^0.13.3", 25 | "rollup": "^1.20.3", 26 | "rollup-plugin-async": "^1.2.0", 27 | "rollup-plugin-babel": "^4.3.3", 28 | "rollup-plugin-commonjs": "^10.1.0", 29 | "rollup-plugin-json": "^4.0.0", 30 | "rollup-plugin-node-globals": "^1.4.0", 31 | "rollup-plugin-node-resolve": "^5.2.0", 32 | "rollup-plugin-terser": "^5.1.1" 33 | }, 34 | "dependencies": { 35 | "@fnix/gcs-browser-upload": "^1.0.5", 36 | "spark-md5": "^3.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/activestorage_extensions/blob.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ActiveSupport.on_load(:active_storage_blob) do 4 | class ActiveStorage::Blob 5 | scope :resumable, -> { unattached.where.not(resumable_url: nil) } 6 | scope :active_resumable, -> { resumable.where('active_storage_blobs.created_at >= ?', 7.days.ago) } 7 | scope :expired_resumable, -> { resumable.where('active_storage_blobs.created_at < ?', 7.days.ago) } 8 | 9 | def self.find_or_create_before_resumable_upload!(filename:, byte_size:, checksum:, content_type: nil, metadata: nil) 10 | expired_resumable.destroy_all 11 | active_resumable.find_or_create_by!( 12 | filename: filename, byte_size: byte_size, checksum: checksum, content_type: content_type, metadata: metadata 13 | ) do |blob| 14 | blob.resumable_url = blob.service_url_for_resumable_upload 15 | end 16 | end 17 | 18 | def uploaded_bytes 19 | return unless resumable_url 20 | 21 | @uploaded_bytes ||= begin 22 | uri = URI(resumable_url) 23 | req = Net::HTTP::Put.new(resumable_url, 'Content-Range': "bytes */#{byte_size}") 24 | http = Net::HTTP.new(uri.hostname, uri.port) 25 | http.use_ssl = true 26 | res = http.request(req) 27 | res['Range'].split('-').last.to_i + 1 28 | end 29 | end 30 | 31 | def service_url_for_resumable_upload 32 | service.url_for_resumable_upload key, content_type: content_type 33 | end 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_upload.js: -------------------------------------------------------------------------------- 1 | import { ResumableFileChecksum } from "./resumable_file_checksum" 2 | import { ResumableBlobRecord } from "./resumable_blob_record" 3 | import { ResumableBlobUpload } from "./resumable_blob_upload" 4 | 5 | let id = 0 6 | 7 | export class ResumableUpload { 8 | constructor(file, url, delegate) { 9 | this.id = ++id 10 | this.file = file 11 | this.url = url 12 | this.delegate = delegate 13 | } 14 | 15 | create(callback) { 16 | ResumableFileChecksum.create(this.file, (error, checksum) => { 17 | if (error) { 18 | callback(error) 19 | return 20 | } 21 | 22 | const blob = new ResumableBlobRecord(this.file, checksum, this.url) 23 | notify(this.delegate, "resumableUploadWillCreateBlobWithXHR", blob.xhr) 24 | 25 | blob.create(error => { 26 | if (error) { 27 | callback(error) 28 | } else { 29 | const upload = new ResumableBlobUpload(blob) 30 | notify(this.delegate, "resumableUploadWillStoreFileWithGcsBrowserUpload", upload.gcsBrowserUpload) 31 | upload.create(error => { 32 | if (error) { 33 | callback(error) 34 | } else { 35 | callback(null, blob.toJSON()) 36 | } 37 | }) 38 | } 39 | }) 40 | }) 41 | } 42 | } 43 | 44 | function notify(object, methodName, ...messages) { 45 | if (object && typeof object[methodName] == "function") { 46 | return object[methodName](...messages) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_uploads_controller.js: -------------------------------------------------------------------------------- 1 | import { ResumableUploadController } from "./resumable_upload_controller" 2 | import { findElements, dispatchEvent, toArray } from "./helpers" 3 | 4 | const inputSelector = "input[type=file][data-resumable-upload-url]:not([disabled])" 5 | 6 | export class ResumableUploadsController { 7 | constructor(form) { 8 | this.form = form 9 | this.inputs = findElements(form, inputSelector).filter(input => input.files.length) 10 | } 11 | 12 | start(callback) { 13 | const controllers = this.createResumableUploadControllers() 14 | 15 | const startNextController = () => { 16 | const controller = controllers.shift() 17 | if (controller) { 18 | controller.start(error => { 19 | if (error) { 20 | callback(error) 21 | this.dispatch("end") 22 | } else { 23 | startNextController() 24 | } 25 | }) 26 | } else { 27 | callback() 28 | this.dispatch("end") 29 | } 30 | } 31 | 32 | this.dispatch("start") 33 | startNextController() 34 | } 35 | 36 | createResumableUploadControllers() { 37 | const controllers = [] 38 | this.inputs.forEach(input => { 39 | toArray(input.files).forEach(file => { 40 | const controller = new ResumableUploadController(input, file) 41 | controllers.push(controller) 42 | }) 43 | }) 44 | return controllers 45 | } 46 | 47 | dispatch(name, detail = {}) { 48 | return dispatchEvent(this.form, `resumable-uploads:${name}`, { detail }) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_blob_upload.js: -------------------------------------------------------------------------------- 1 | import Upload from "@fnix/gcs-browser-upload" 2 | import { getMetaValue } from "./helpers" 3 | 4 | export class ResumableBlobUpload { 5 | constructor(blob) { 6 | this.blob = blob 7 | this.file = blob.file 8 | 9 | this.gcsBrowserUpload = new Upload({ 10 | id: this.blob.attributes.key, 11 | url: this.blob.attributes.resumable_url, 12 | file: this.file, 13 | contentType: this.file.type 14 | }) 15 | } 16 | 17 | async create(callback) { 18 | this.callback = callback 19 | try { 20 | await this.gcsBrowserUpload.start() 21 | 22 | const { headers } = this.gcsBrowserUpload.lastResult 23 | let updateHeaders = { 24 | "Content-Type": "application/json", 25 | "Accept": "application/json" 26 | } 27 | const csrfToken = getMetaValue("csrf-token") 28 | if (csrfToken != undefined) { 29 | updateHeaders["X-CSRF-Token"] = csrfToken 30 | } 31 | 32 | const response = await fetch(`/rails/active_storage/resumable_uploads/${this.blob.attributes.key}`, { 33 | method: "PUT", 34 | headers: updateHeaders, 35 | body: JSON.stringify({ 36 | blob: { checksum: headers["x-goog-hash"].match("md5=(.*)")[1] } 37 | }) 38 | }) 39 | 40 | if (!response.ok) { 41 | this.callback(`Failed to update ${this.blob.attributes.key} blob checksum`) 42 | } else { 43 | this.callback(null, this.gcsBrowserUpload.lastResult) 44 | } 45 | } catch (e) { 46 | this.requestDidError(e) 47 | } finally { 48 | this.gcsBrowserUpload = null 49 | } 50 | } 51 | 52 | requestDidError() { 53 | const status = !!this.gcsBrowserUpload.lastResult && this.gcsBrowserUpload.lastResult.status 54 | this.callback(`Error storing "${this.file.name}". Status: ${status}`) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_file_checksum.js: -------------------------------------------------------------------------------- 1 | import SparkMD5 from "spark-md5" 2 | 3 | const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice 4 | 5 | export class ResumableFileChecksum { 6 | static create(file, callback) { 7 | const instance = new ResumableFileChecksum(file) 8 | instance.create(callback) 9 | } 10 | 11 | constructor(file) { 12 | this.file = file 13 | this.chunkSize = 2097152 // 2MB 14 | this.chunkIndex = 0 15 | 16 | let chunkCount = Math.ceil(this.file.size / this.chunkSize) 17 | if (chunkCount > 5) { chunkCount = 5 } 18 | this.chunkCount = chunkCount 19 | } 20 | 21 | create(callback) { 22 | this.callback = callback 23 | this.md5Buffer = new SparkMD5.ArrayBuffer 24 | this.fileReader = new FileReader 25 | this.fileReader.addEventListener("load", event => this.fileReaderDidLoad(event)) 26 | this.fileReader.addEventListener("error", event => this.fileReaderDidError(event)) 27 | this.readNextChunk() 28 | } 29 | 30 | str2ArrayBuffer(str) { 31 | var buf = new ArrayBuffer(str.length * 2) // 2 bytes for each char 32 | var bufView = new Uint16Array(buf) 33 | for (var i = 0, strLen = str.length; i < strLen; i++) { 34 | bufView[i] = str.charCodeAt(i) 35 | } 36 | return buf 37 | } 38 | 39 | 40 | fileReaderDidLoad(event) { 41 | this.md5Buffer.append(event.target.result) 42 | 43 | if (!this.readNextChunk()) { 44 | const binaryDigest = this.md5Buffer.end(true) 45 | const base64digest = btoa(binaryDigest) 46 | this.callback(null, base64digest) 47 | } 48 | } 49 | 50 | fileReaderDidError(event) { 51 | this.callback(`Error reading ${this.file.name}`) 52 | } 53 | 54 | readNextChunk() { 55 | if (this.chunkIndex < this.chunkCount || (this.chunkIndex == 0 && this.chunkCount == 0)) { 56 | const start = this.chunkIndex * this.chunkSize 57 | const end = Math.min(start + this.chunkSize, this.file.size) 58 | const bytes = fileSlice.call(this.file, start, end) 59 | this.fileReader.readAsArrayBuffer(bytes) 60 | this.chunkIndex++ 61 | return true 62 | } else { 63 | return false 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_upload_controller.js: -------------------------------------------------------------------------------- 1 | import { ResumableUpload } from "./resumable_upload" 2 | import { dispatchEvent } from "./helpers" 3 | 4 | export class ResumableUploadController { 5 | constructor(input, file) { 6 | this.input = input 7 | this.file = file 8 | this.resumableUpload = new ResumableUpload(this.file, this.url, this) 9 | this.dispatch("initialize") 10 | } 11 | 12 | start(callback) { 13 | const hiddenInput = document.createElement("input") 14 | hiddenInput.type = "hidden" 15 | hiddenInput.name = this.input.name 16 | this.input.insertAdjacentElement("beforebegin", hiddenInput) 17 | 18 | this.dispatch("start") 19 | 20 | this.resumableUpload.create((error, attributes) => { 21 | if (error) { 22 | hiddenInput.parentNode.removeChild(hiddenInput) 23 | this.dispatchError(error) 24 | } else { 25 | hiddenInput.value = attributes.signed_id 26 | } 27 | 28 | this.dispatch("end") 29 | callback(error) 30 | }) 31 | } 32 | 33 | uploadRequestDidProgress(event) { 34 | const progress = event.loaded / event.total * 100 35 | if (progress) { 36 | this.dispatch("progress", { progress }) 37 | } 38 | } 39 | 40 | get url() { 41 | return this.input.getAttribute("data-resumable-upload-url") 42 | } 43 | 44 | dispatch(name, detail = {}) { 45 | detail.file = this.file 46 | detail.id = this.resumableUpload.id 47 | return dispatchEvent(this.input, `resumable-upload:${name}`, { detail }) 48 | } 49 | 50 | dispatchError(error) { 51 | const event = this.dispatch("error", { error }) 52 | if (!event.defaultPrevented) { 53 | alert(error) 54 | } 55 | } 56 | 57 | // ResumableUpload delegate 58 | 59 | resumableUploadWillCreateBlobWithXHR(xhr) { 60 | this.dispatch("before-blob-request", { xhr }) 61 | } 62 | 63 | resumableUploadWillStoreFileWithGcsBrowserUpload(gcsBrowserUpload) { 64 | this.dispatch("before-storage-request", { gcsBrowserUpload }) 65 | gcsBrowserUpload.opts.onChunkUpload = (event) => { 66 | this.uploadRequestDidProgress({ lengthComputable: true, loaded: event.uploadedBytes, total: event.totalBytes }) 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/resumable_blob_record.js: -------------------------------------------------------------------------------- 1 | import { getMetaValue } from "./helpers" 2 | 3 | export class ResumableBlobRecord { 4 | constructor(file, checksum, url) { 5 | this.file = file 6 | 7 | this.attributes = { 8 | filename: file.name, 9 | content_type: file.type, 10 | byte_size: file.size, 11 | checksum: checksum 12 | } 13 | 14 | this.xhr = new XMLHttpRequest 15 | this.xhr.open("POST", url, true) 16 | this.xhr.responseType = "json" 17 | this.xhr.setRequestHeader("Content-Type", "application/json") 18 | this.xhr.setRequestHeader("Accept", "application/json") 19 | this.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") 20 | 21 | const csrfToken = getMetaValue("csrf-token") 22 | if (csrfToken != undefined) { 23 | this.xhr.setRequestHeader("X-CSRF-Token", csrfToken) 24 | } 25 | 26 | this.xhr.addEventListener("load", event => this.requestDidLoad(event)) 27 | this.xhr.addEventListener("error", event => this.requestDidError(event)) 28 | } 29 | 30 | get status() { 31 | return this.xhr.status 32 | } 33 | 34 | get response() { 35 | const { responseType, response } = this.xhr 36 | if (responseType == "json") { 37 | return response 38 | } else { 39 | // Shim for IE 11: https://connect.microsoft.com/IE/feedback/details/794808 40 | return JSON.parse(response) 41 | } 42 | } 43 | 44 | create(callback) { 45 | this.callback = callback 46 | this.xhr.send(JSON.stringify({ blob: this.attributes })) 47 | } 48 | 49 | requestDidLoad(event) { 50 | if (this.status >= 200 && this.status < 300) { 51 | const { response } = this 52 | const { resumable_upload } = response 53 | delete response.resumable_upload 54 | this.attributes = response 55 | this.resumableUploadData = resumable_upload 56 | this.callback(null, this.toJSON()) 57 | } else { 58 | this.requestDidError(event) 59 | } 60 | } 61 | 62 | requestDidError(event) { 63 | this.callback(`Error creating Blob for "${this.file.name}". Status: ${this.status}`) 64 | } 65 | 66 | toJSON() { 67 | const result = {} 68 | for (const key in this.attributes) { 69 | result[key] = this.attributes[key] 70 | } 71 | return result 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/javascript/activestorage-resumable/ujs-resumable.js: -------------------------------------------------------------------------------- 1 | import { ResumableUploadsController } from "./resumable_uploads_controller" 2 | import { findElement } from "./helpers" 3 | 4 | const processingAttribute = "data-resumable-uploads-processing" 5 | const submitButtonsByForm = new WeakMap 6 | let started = false 7 | 8 | export function start() { 9 | if (!started) { 10 | started = true 11 | document.addEventListener("click", didClick, true) 12 | document.addEventListener("submit", didSubmitForm) 13 | document.addEventListener("ajax:before", didSubmitRemoteElement) 14 | } 15 | } 16 | 17 | function didClick(event) { 18 | const { target } = event 19 | if ((target.tagName == "INPUT" || target.tagName == "BUTTON") && target.type == "submit" && target.form) { 20 | submitButtonsByForm.set(target.form, target) 21 | } 22 | } 23 | 24 | function didSubmitForm(event) { 25 | handleFormSubmissionEvent(event) 26 | } 27 | 28 | function didSubmitRemoteElement(event) { 29 | if (event.target.tagName == "FORM") { 30 | handleFormSubmissionEvent(event) 31 | } 32 | } 33 | 34 | function handleFormSubmissionEvent(event) { 35 | const form = event.target 36 | 37 | if (form.hasAttribute(processingAttribute)) { 38 | event.preventDefault() 39 | return 40 | } 41 | 42 | const controller = new ResumableUploadsController(form) 43 | const { inputs } = controller 44 | 45 | if (inputs.length) { 46 | event.preventDefault() 47 | form.setAttribute(processingAttribute, "") 48 | inputs.forEach(disable) 49 | controller.start(error => { 50 | form.removeAttribute(processingAttribute) 51 | if (error) { 52 | inputs.forEach(enable) 53 | } else { 54 | submitForm(form) 55 | } 56 | }) 57 | } 58 | } 59 | 60 | function submitForm(form) { 61 | let button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit], button[type=submit]") 62 | 63 | if (button) { 64 | const { disabled } = button 65 | button.disabled = false 66 | button.focus() 67 | button.click() 68 | button.disabled = disabled 69 | } else { 70 | button = document.createElement("input") 71 | button.type = "submit" 72 | button.style.display = "none" 73 | form.appendChild(button) 74 | button.click() 75 | form.removeChild(button) 76 | } 77 | submitButtonsByForm.delete(form) 78 | } 79 | 80 | function disable(input) { 81 | input.disabled = true 82 | } 83 | 84 | function enable(input) { 85 | input.disabled = false 86 | } 87 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Active Storage Resumable 2 | Active Storage Resumable allow you to continue an upload even after a browser restart. Currently it only supports 3 | [Google Cloud Storage](https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload). 4 | 5 | This library augments Active Storage 6 | [direct uploads](https://guides.rubyonrails.org/active_storage_overview.html#direct-uploads) to support resumable 7 | uploads with almost identical semantics. If you already uses direct upload, turn it resumable is straightforward. 8 | 9 | ## Installation 10 | First [setup Active Storage](https://guides.rubyonrails.org/active_storage_overview.html#setup) to use GCS. 11 | 12 | Add this line to your application's Gemfile: 13 | 14 | ```ruby 15 | gem 'activestorage-resumable' 16 | ``` 17 | 18 | And then execute: 19 | ```bash 20 | $ bundle 21 | $ rails active_storage_resumable:install:migrations 22 | $ rails db:migrate 23 | ``` 24 | 25 | ## Resumable uploads 26 | Active Storage Resumable, also includes a JavaScript library, that uploads file in chunks, saving the progress in 27 | localStorage, allowing to resume an upload even after a browser restart. 28 | 29 | ### Resumable upload installation 30 | 1. Export an environment variable called UPLOAD_ORIGIN_URL with the upload origin URL, for example 31 | 'http://localhost:3000'. You can also create a `config/initializers/activestorage_resumable.rb` with the following: 32 | 33 | ```ruby 34 | ActiveStorage::Resumable.configure do |config| 35 | config.upload_origin_url = 'https://mydomain.test:3000' 36 | end 37 | ``` 38 | 2. Include `activestorage-resumable.js` in your application's JavaScript bundle. 39 | 40 | Using the asset pipeline: 41 | ```js 42 | //= require activestorage-resumable 43 | ``` 44 | Using the npm package: 45 | ```js 46 | require("@fnix/activestorage-resumable").start() 47 | ``` 48 | 3. Annotate file inputs with the resumable upload URL. 49 | 50 | ```ruby 51 | <%= form.file_field :attachments, multiple: true, resumable_upload: true %> 52 | ``` 53 | 4. That's it! Uploads begin upon form submission. 54 | 55 | ### Resumable upload JavaScript events 56 | 57 | | Event name | Event target | Event data (`event.detail`) | Description | 58 | | --- | --- | --- | --- | 59 | | `resumable-uploads:start` | `
` | None | A form containing files for resumable upload fields was submitted. | 60 | | `resumable-upload:initialize` | `` | `{id, file}` | Dispatched for every file after form submission. | 61 | | `resumable-upload:start` | `` | `{id, file}` | A resumable upload is starting. | 62 | | `resumable-upload:before-blob-request` | `` | `{id, file, xhr}` | Before making a request to your application for resumable upload metadata. | 63 | | `resumable-upload:before-storage-request` | `` | `{id, file, gcsBrowserUpload}` | Before making a request to store a file. | 64 | | `resumable-upload:progress` | `` | `{id, file, progress}` | As requests to store files progress. | 65 | | `resumable-upload:error` | `` | `{id, file, error}` | An error occurred. An `alert` will display unless this event is canceled. | 66 | | `resumable-upload:end` | `` | `{id, file}` | A resumable upload has ended. | 67 | | `resumable-uploads:end` | `` | None | All resumable uploads have ended. | 68 | 69 | The events are almost identical to Active Storage direct upload. The bigger difference is in `before-storage-request`, 70 | instead of a XHR, it uses an Upload object from 71 | [@fnix/gcs-browser-upload](https://www.npmjs.com/package/@fnix/gcs-browser-upload). Resumable uploads are transfered in 72 | chunks, so it's not very useful to return the XHR of the first chunk. Another small change is in the `progress` event 73 | data, it's not a real [ProgressEvent](https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent), it's only a faker 74 | with the same [ProgressEvent properties](https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent#Properties). 75 | 76 | ## Active Storage extensions 77 | We added three scopes for `ActiveStorage::Blob`: 78 | * `ActiveStorage::Blob.resumable`: Returns all resumable blobs not attached to any model; 79 | * `ActiveStorage::Blob.active_resumable`: Returns all unfinished resumable blobs created in the last week ([the duration 80 | of a resumable session URI](https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload#save-session-uri)). 81 | You can use this to show for your users the uploads that can be resumed; 82 | * `ActiveStorage::Blob.expired_resumable`: This is most for internal use, we use it to cleanup unfinished resumable 83 | blobs. 84 | 85 | We also added the instance method `uploaded_bytes` to `ActiveStorage::Blob` so you can show to your users the progress 86 | of unfinished resumable blobs. 87 | 88 | ## License 89 | The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). 90 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": 6 | version "7.5.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" 8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/core@^7.6.0": 13 | version "7.6.0" 14 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" 15 | integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== 16 | dependencies: 17 | "@babel/code-frame" "^7.5.5" 18 | "@babel/generator" "^7.6.0" 19 | "@babel/helpers" "^7.6.0" 20 | "@babel/parser" "^7.6.0" 21 | "@babel/template" "^7.6.0" 22 | "@babel/traverse" "^7.6.0" 23 | "@babel/types" "^7.6.0" 24 | convert-source-map "^1.1.0" 25 | debug "^4.1.0" 26 | json5 "^2.1.0" 27 | lodash "^4.17.13" 28 | resolve "^1.3.2" 29 | semver "^5.4.1" 30 | source-map "^0.5.0" 31 | 32 | "@babel/generator@^7.6.0": 33 | version "7.6.0" 34 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" 35 | integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== 36 | dependencies: 37 | "@babel/types" "^7.6.0" 38 | jsesc "^2.5.1" 39 | lodash "^4.17.13" 40 | source-map "^0.5.0" 41 | trim-right "^1.0.1" 42 | 43 | "@babel/helper-annotate-as-pure@^7.0.0": 44 | version "7.0.0" 45 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" 46 | integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== 47 | dependencies: 48 | "@babel/types" "^7.0.0" 49 | 50 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": 51 | version "7.1.0" 52 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" 53 | integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== 54 | dependencies: 55 | "@babel/helper-explode-assignable-expression" "^7.1.0" 56 | "@babel/types" "^7.0.0" 57 | 58 | "@babel/helper-call-delegate@^7.4.4": 59 | version "7.4.4" 60 | resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" 61 | integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== 62 | dependencies: 63 | "@babel/helper-hoist-variables" "^7.4.4" 64 | "@babel/traverse" "^7.4.4" 65 | "@babel/types" "^7.4.4" 66 | 67 | "@babel/helper-define-map@^7.5.5": 68 | version "7.5.5" 69 | resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" 70 | integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg== 71 | dependencies: 72 | "@babel/helper-function-name" "^7.1.0" 73 | "@babel/types" "^7.5.5" 74 | lodash "^4.17.13" 75 | 76 | "@babel/helper-explode-assignable-expression@^7.1.0": 77 | version "7.1.0" 78 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" 79 | integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== 80 | dependencies: 81 | "@babel/traverse" "^7.1.0" 82 | "@babel/types" "^7.0.0" 83 | 84 | "@babel/helper-function-name@^7.1.0": 85 | version "7.1.0" 86 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" 87 | integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== 88 | dependencies: 89 | "@babel/helper-get-function-arity" "^7.0.0" 90 | "@babel/template" "^7.1.0" 91 | "@babel/types" "^7.0.0" 92 | 93 | "@babel/helper-get-function-arity@^7.0.0": 94 | version "7.0.0" 95 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 96 | integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== 97 | dependencies: 98 | "@babel/types" "^7.0.0" 99 | 100 | "@babel/helper-hoist-variables@^7.4.4": 101 | version "7.4.4" 102 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" 103 | integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== 104 | dependencies: 105 | "@babel/types" "^7.4.4" 106 | 107 | "@babel/helper-member-expression-to-functions@^7.5.5": 108 | version "7.5.5" 109 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" 110 | integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== 111 | dependencies: 112 | "@babel/types" "^7.5.5" 113 | 114 | "@babel/helper-module-imports@^7.0.0": 115 | version "7.0.0" 116 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" 117 | integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== 118 | dependencies: 119 | "@babel/types" "^7.0.0" 120 | 121 | "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": 122 | version "7.5.5" 123 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" 124 | integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== 125 | dependencies: 126 | "@babel/helper-module-imports" "^7.0.0" 127 | "@babel/helper-simple-access" "^7.1.0" 128 | "@babel/helper-split-export-declaration" "^7.4.4" 129 | "@babel/template" "^7.4.4" 130 | "@babel/types" "^7.5.5" 131 | lodash "^4.17.13" 132 | 133 | "@babel/helper-optimise-call-expression@^7.0.0": 134 | version "7.0.0" 135 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" 136 | integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== 137 | dependencies: 138 | "@babel/types" "^7.0.0" 139 | 140 | "@babel/helper-plugin-utils@^7.0.0": 141 | version "7.0.0" 142 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" 143 | integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== 144 | 145 | "@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": 146 | version "7.5.5" 147 | resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" 148 | integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== 149 | dependencies: 150 | lodash "^4.17.13" 151 | 152 | "@babel/helper-remap-async-to-generator@^7.1.0": 153 | version "7.1.0" 154 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" 155 | integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== 156 | dependencies: 157 | "@babel/helper-annotate-as-pure" "^7.0.0" 158 | "@babel/helper-wrap-function" "^7.1.0" 159 | "@babel/template" "^7.1.0" 160 | "@babel/traverse" "^7.1.0" 161 | "@babel/types" "^7.0.0" 162 | 163 | "@babel/helper-replace-supers@^7.5.5": 164 | version "7.5.5" 165 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" 166 | integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== 167 | dependencies: 168 | "@babel/helper-member-expression-to-functions" "^7.5.5" 169 | "@babel/helper-optimise-call-expression" "^7.0.0" 170 | "@babel/traverse" "^7.5.5" 171 | "@babel/types" "^7.5.5" 172 | 173 | "@babel/helper-simple-access@^7.1.0": 174 | version "7.1.0" 175 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" 176 | integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== 177 | dependencies: 178 | "@babel/template" "^7.1.0" 179 | "@babel/types" "^7.0.0" 180 | 181 | "@babel/helper-split-export-declaration@^7.4.4": 182 | version "7.4.4" 183 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" 184 | integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== 185 | dependencies: 186 | "@babel/types" "^7.4.4" 187 | 188 | "@babel/helper-wrap-function@^7.1.0": 189 | version "7.2.0" 190 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" 191 | integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== 192 | dependencies: 193 | "@babel/helper-function-name" "^7.1.0" 194 | "@babel/template" "^7.1.0" 195 | "@babel/traverse" "^7.1.0" 196 | "@babel/types" "^7.2.0" 197 | 198 | "@babel/helpers@^7.6.0": 199 | version "7.6.0" 200 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" 201 | integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== 202 | dependencies: 203 | "@babel/template" "^7.6.0" 204 | "@babel/traverse" "^7.6.0" 205 | "@babel/types" "^7.6.0" 206 | 207 | "@babel/highlight@^7.0.0": 208 | version "7.5.0" 209 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" 210 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== 211 | dependencies: 212 | chalk "^2.0.0" 213 | esutils "^2.0.2" 214 | js-tokens "^4.0.0" 215 | 216 | "@babel/parser@^7.6.0": 217 | version "7.6.0" 218 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" 219 | integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== 220 | 221 | "@babel/plugin-proposal-async-generator-functions@^7.2.0": 222 | version "7.2.0" 223 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" 224 | integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== 225 | dependencies: 226 | "@babel/helper-plugin-utils" "^7.0.0" 227 | "@babel/helper-remap-async-to-generator" "^7.1.0" 228 | "@babel/plugin-syntax-async-generators" "^7.2.0" 229 | 230 | "@babel/plugin-proposal-dynamic-import@^7.5.0": 231 | version "7.5.0" 232 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" 233 | integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== 234 | dependencies: 235 | "@babel/helper-plugin-utils" "^7.0.0" 236 | "@babel/plugin-syntax-dynamic-import" "^7.2.0" 237 | 238 | "@babel/plugin-proposal-json-strings@^7.2.0": 239 | version "7.2.0" 240 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" 241 | integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== 242 | dependencies: 243 | "@babel/helper-plugin-utils" "^7.0.0" 244 | "@babel/plugin-syntax-json-strings" "^7.2.0" 245 | 246 | "@babel/plugin-proposal-object-rest-spread@^7.5.5": 247 | version "7.5.5" 248 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" 249 | integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== 250 | dependencies: 251 | "@babel/helper-plugin-utils" "^7.0.0" 252 | "@babel/plugin-syntax-object-rest-spread" "^7.2.0" 253 | 254 | "@babel/plugin-proposal-optional-catch-binding@^7.2.0": 255 | version "7.2.0" 256 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" 257 | integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== 258 | dependencies: 259 | "@babel/helper-plugin-utils" "^7.0.0" 260 | "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" 261 | 262 | "@babel/plugin-proposal-unicode-property-regex@^7.4.4": 263 | version "7.4.4" 264 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" 265 | integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== 266 | dependencies: 267 | "@babel/helper-plugin-utils" "^7.0.0" 268 | "@babel/helper-regex" "^7.4.4" 269 | regexpu-core "^4.5.4" 270 | 271 | "@babel/plugin-syntax-async-generators@^7.2.0": 272 | version "7.2.0" 273 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" 274 | integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== 275 | dependencies: 276 | "@babel/helper-plugin-utils" "^7.0.0" 277 | 278 | "@babel/plugin-syntax-dynamic-import@^7.2.0": 279 | version "7.2.0" 280 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" 281 | integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== 282 | dependencies: 283 | "@babel/helper-plugin-utils" "^7.0.0" 284 | 285 | "@babel/plugin-syntax-json-strings@^7.2.0": 286 | version "7.2.0" 287 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" 288 | integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== 289 | dependencies: 290 | "@babel/helper-plugin-utils" "^7.0.0" 291 | 292 | "@babel/plugin-syntax-object-rest-spread@^7.2.0": 293 | version "7.2.0" 294 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" 295 | integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== 296 | dependencies: 297 | "@babel/helper-plugin-utils" "^7.0.0" 298 | 299 | "@babel/plugin-syntax-optional-catch-binding@^7.2.0": 300 | version "7.2.0" 301 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" 302 | integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== 303 | dependencies: 304 | "@babel/helper-plugin-utils" "^7.0.0" 305 | 306 | "@babel/plugin-transform-arrow-functions@^7.2.0": 307 | version "7.2.0" 308 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" 309 | integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== 310 | dependencies: 311 | "@babel/helper-plugin-utils" "^7.0.0" 312 | 313 | "@babel/plugin-transform-async-to-generator@^7.5.0": 314 | version "7.5.0" 315 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" 316 | integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== 317 | dependencies: 318 | "@babel/helper-module-imports" "^7.0.0" 319 | "@babel/helper-plugin-utils" "^7.0.0" 320 | "@babel/helper-remap-async-to-generator" "^7.1.0" 321 | 322 | "@babel/plugin-transform-block-scoped-functions@^7.2.0": 323 | version "7.2.0" 324 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" 325 | integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== 326 | dependencies: 327 | "@babel/helper-plugin-utils" "^7.0.0" 328 | 329 | "@babel/plugin-transform-block-scoping@^7.6.0": 330 | version "7.6.0" 331 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" 332 | integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== 333 | dependencies: 334 | "@babel/helper-plugin-utils" "^7.0.0" 335 | lodash "^4.17.13" 336 | 337 | "@babel/plugin-transform-classes@^7.5.5": 338 | version "7.5.5" 339 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" 340 | integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== 341 | dependencies: 342 | "@babel/helper-annotate-as-pure" "^7.0.0" 343 | "@babel/helper-define-map" "^7.5.5" 344 | "@babel/helper-function-name" "^7.1.0" 345 | "@babel/helper-optimise-call-expression" "^7.0.0" 346 | "@babel/helper-plugin-utils" "^7.0.0" 347 | "@babel/helper-replace-supers" "^7.5.5" 348 | "@babel/helper-split-export-declaration" "^7.4.4" 349 | globals "^11.1.0" 350 | 351 | "@babel/plugin-transform-computed-properties@^7.2.0": 352 | version "7.2.0" 353 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" 354 | integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== 355 | dependencies: 356 | "@babel/helper-plugin-utils" "^7.0.0" 357 | 358 | "@babel/plugin-transform-destructuring@^7.6.0": 359 | version "7.6.0" 360 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" 361 | integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== 362 | dependencies: 363 | "@babel/helper-plugin-utils" "^7.0.0" 364 | 365 | "@babel/plugin-transform-dotall-regex@^7.4.4": 366 | version "7.4.4" 367 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" 368 | integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== 369 | dependencies: 370 | "@babel/helper-plugin-utils" "^7.0.0" 371 | "@babel/helper-regex" "^7.4.4" 372 | regexpu-core "^4.5.4" 373 | 374 | "@babel/plugin-transform-duplicate-keys@^7.5.0": 375 | version "7.5.0" 376 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" 377 | integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== 378 | dependencies: 379 | "@babel/helper-plugin-utils" "^7.0.0" 380 | 381 | "@babel/plugin-transform-exponentiation-operator@^7.2.0": 382 | version "7.2.0" 383 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" 384 | integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== 385 | dependencies: 386 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" 387 | "@babel/helper-plugin-utils" "^7.0.0" 388 | 389 | "@babel/plugin-transform-for-of@^7.4.4": 390 | version "7.4.4" 391 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" 392 | integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== 393 | dependencies: 394 | "@babel/helper-plugin-utils" "^7.0.0" 395 | 396 | "@babel/plugin-transform-function-name@^7.4.4": 397 | version "7.4.4" 398 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" 399 | integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== 400 | dependencies: 401 | "@babel/helper-function-name" "^7.1.0" 402 | "@babel/helper-plugin-utils" "^7.0.0" 403 | 404 | "@babel/plugin-transform-literals@^7.2.0": 405 | version "7.2.0" 406 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" 407 | integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== 408 | dependencies: 409 | "@babel/helper-plugin-utils" "^7.0.0" 410 | 411 | "@babel/plugin-transform-member-expression-literals@^7.2.0": 412 | version "7.2.0" 413 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" 414 | integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== 415 | dependencies: 416 | "@babel/helper-plugin-utils" "^7.0.0" 417 | 418 | "@babel/plugin-transform-modules-amd@^7.5.0": 419 | version "7.5.0" 420 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" 421 | integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== 422 | dependencies: 423 | "@babel/helper-module-transforms" "^7.1.0" 424 | "@babel/helper-plugin-utils" "^7.0.0" 425 | babel-plugin-dynamic-import-node "^2.3.0" 426 | 427 | "@babel/plugin-transform-modules-commonjs@^7.6.0": 428 | version "7.6.0" 429 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" 430 | integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== 431 | dependencies: 432 | "@babel/helper-module-transforms" "^7.4.4" 433 | "@babel/helper-plugin-utils" "^7.0.0" 434 | "@babel/helper-simple-access" "^7.1.0" 435 | babel-plugin-dynamic-import-node "^2.3.0" 436 | 437 | "@babel/plugin-transform-modules-systemjs@^7.5.0": 438 | version "7.5.0" 439 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" 440 | integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== 441 | dependencies: 442 | "@babel/helper-hoist-variables" "^7.4.4" 443 | "@babel/helper-plugin-utils" "^7.0.0" 444 | babel-plugin-dynamic-import-node "^2.3.0" 445 | 446 | "@babel/plugin-transform-modules-umd@^7.2.0": 447 | version "7.2.0" 448 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" 449 | integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== 450 | dependencies: 451 | "@babel/helper-module-transforms" "^7.1.0" 452 | "@babel/helper-plugin-utils" "^7.0.0" 453 | 454 | "@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": 455 | version "7.6.0" 456 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" 457 | integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== 458 | dependencies: 459 | regexp-tree "^0.1.13" 460 | 461 | "@babel/plugin-transform-new-target@^7.4.4": 462 | version "7.4.4" 463 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" 464 | integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== 465 | dependencies: 466 | "@babel/helper-plugin-utils" "^7.0.0" 467 | 468 | "@babel/plugin-transform-object-super@^7.5.5": 469 | version "7.5.5" 470 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" 471 | integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== 472 | dependencies: 473 | "@babel/helper-plugin-utils" "^7.0.0" 474 | "@babel/helper-replace-supers" "^7.5.5" 475 | 476 | "@babel/plugin-transform-parameters@^7.4.4": 477 | version "7.4.4" 478 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" 479 | integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== 480 | dependencies: 481 | "@babel/helper-call-delegate" "^7.4.4" 482 | "@babel/helper-get-function-arity" "^7.0.0" 483 | "@babel/helper-plugin-utils" "^7.0.0" 484 | 485 | "@babel/plugin-transform-property-literals@^7.2.0": 486 | version "7.2.0" 487 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" 488 | integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== 489 | dependencies: 490 | "@babel/helper-plugin-utils" "^7.0.0" 491 | 492 | "@babel/plugin-transform-regenerator@^7.4.5": 493 | version "7.4.5" 494 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" 495 | integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== 496 | dependencies: 497 | regenerator-transform "^0.14.0" 498 | 499 | "@babel/plugin-transform-reserved-words@^7.2.0": 500 | version "7.2.0" 501 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" 502 | integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== 503 | dependencies: 504 | "@babel/helper-plugin-utils" "^7.0.0" 505 | 506 | "@babel/plugin-transform-runtime@^7.6.0": 507 | version "7.6.0" 508 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" 509 | integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== 510 | dependencies: 511 | "@babel/helper-module-imports" "^7.0.0" 512 | "@babel/helper-plugin-utils" "^7.0.0" 513 | resolve "^1.8.1" 514 | semver "^5.5.1" 515 | 516 | "@babel/plugin-transform-shorthand-properties@^7.2.0": 517 | version "7.2.0" 518 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" 519 | integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== 520 | dependencies: 521 | "@babel/helper-plugin-utils" "^7.0.0" 522 | 523 | "@babel/plugin-transform-spread@^7.2.0": 524 | version "7.2.2" 525 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" 526 | integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== 527 | dependencies: 528 | "@babel/helper-plugin-utils" "^7.0.0" 529 | 530 | "@babel/plugin-transform-sticky-regex@^7.2.0": 531 | version "7.2.0" 532 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" 533 | integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== 534 | dependencies: 535 | "@babel/helper-plugin-utils" "^7.0.0" 536 | "@babel/helper-regex" "^7.0.0" 537 | 538 | "@babel/plugin-transform-template-literals@^7.4.4": 539 | version "7.4.4" 540 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" 541 | integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== 542 | dependencies: 543 | "@babel/helper-annotate-as-pure" "^7.0.0" 544 | "@babel/helper-plugin-utils" "^7.0.0" 545 | 546 | "@babel/plugin-transform-typeof-symbol@^7.2.0": 547 | version "7.2.0" 548 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" 549 | integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== 550 | dependencies: 551 | "@babel/helper-plugin-utils" "^7.0.0" 552 | 553 | "@babel/plugin-transform-unicode-regex@^7.4.4": 554 | version "7.4.4" 555 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" 556 | integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== 557 | dependencies: 558 | "@babel/helper-plugin-utils" "^7.0.0" 559 | "@babel/helper-regex" "^7.4.4" 560 | regexpu-core "^4.5.4" 561 | 562 | "@babel/preset-env@^7.6.0": 563 | version "7.6.0" 564 | resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" 565 | integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== 566 | dependencies: 567 | "@babel/helper-module-imports" "^7.0.0" 568 | "@babel/helper-plugin-utils" "^7.0.0" 569 | "@babel/plugin-proposal-async-generator-functions" "^7.2.0" 570 | "@babel/plugin-proposal-dynamic-import" "^7.5.0" 571 | "@babel/plugin-proposal-json-strings" "^7.2.0" 572 | "@babel/plugin-proposal-object-rest-spread" "^7.5.5" 573 | "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" 574 | "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" 575 | "@babel/plugin-syntax-async-generators" "^7.2.0" 576 | "@babel/plugin-syntax-dynamic-import" "^7.2.0" 577 | "@babel/plugin-syntax-json-strings" "^7.2.0" 578 | "@babel/plugin-syntax-object-rest-spread" "^7.2.0" 579 | "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" 580 | "@babel/plugin-transform-arrow-functions" "^7.2.0" 581 | "@babel/plugin-transform-async-to-generator" "^7.5.0" 582 | "@babel/plugin-transform-block-scoped-functions" "^7.2.0" 583 | "@babel/plugin-transform-block-scoping" "^7.6.0" 584 | "@babel/plugin-transform-classes" "^7.5.5" 585 | "@babel/plugin-transform-computed-properties" "^7.2.0" 586 | "@babel/plugin-transform-destructuring" "^7.6.0" 587 | "@babel/plugin-transform-dotall-regex" "^7.4.4" 588 | "@babel/plugin-transform-duplicate-keys" "^7.5.0" 589 | "@babel/plugin-transform-exponentiation-operator" "^7.2.0" 590 | "@babel/plugin-transform-for-of" "^7.4.4" 591 | "@babel/plugin-transform-function-name" "^7.4.4" 592 | "@babel/plugin-transform-literals" "^7.2.0" 593 | "@babel/plugin-transform-member-expression-literals" "^7.2.0" 594 | "@babel/plugin-transform-modules-amd" "^7.5.0" 595 | "@babel/plugin-transform-modules-commonjs" "^7.6.0" 596 | "@babel/plugin-transform-modules-systemjs" "^7.5.0" 597 | "@babel/plugin-transform-modules-umd" "^7.2.0" 598 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" 599 | "@babel/plugin-transform-new-target" "^7.4.4" 600 | "@babel/plugin-transform-object-super" "^7.5.5" 601 | "@babel/plugin-transform-parameters" "^7.4.4" 602 | "@babel/plugin-transform-property-literals" "^7.2.0" 603 | "@babel/plugin-transform-regenerator" "^7.4.5" 604 | "@babel/plugin-transform-reserved-words" "^7.2.0" 605 | "@babel/plugin-transform-shorthand-properties" "^7.2.0" 606 | "@babel/plugin-transform-spread" "^7.2.0" 607 | "@babel/plugin-transform-sticky-regex" "^7.2.0" 608 | "@babel/plugin-transform-template-literals" "^7.4.4" 609 | "@babel/plugin-transform-typeof-symbol" "^7.2.0" 610 | "@babel/plugin-transform-unicode-regex" "^7.4.4" 611 | "@babel/types" "^7.6.0" 612 | browserslist "^4.6.0" 613 | core-js-compat "^3.1.1" 614 | invariant "^2.2.2" 615 | js-levenshtein "^1.1.3" 616 | semver "^5.5.0" 617 | 618 | "@babel/template@^7.1.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": 619 | version "7.6.0" 620 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" 621 | integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== 622 | dependencies: 623 | "@babel/code-frame" "^7.0.0" 624 | "@babel/parser" "^7.6.0" 625 | "@babel/types" "^7.6.0" 626 | 627 | "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": 628 | version "7.6.0" 629 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" 630 | integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== 631 | dependencies: 632 | "@babel/code-frame" "^7.5.5" 633 | "@babel/generator" "^7.6.0" 634 | "@babel/helper-function-name" "^7.1.0" 635 | "@babel/helper-split-export-declaration" "^7.4.4" 636 | "@babel/parser" "^7.6.0" 637 | "@babel/types" "^7.6.0" 638 | debug "^4.1.0" 639 | globals "^11.1.0" 640 | lodash "^4.17.13" 641 | 642 | "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0": 643 | version "7.6.1" 644 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" 645 | integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== 646 | dependencies: 647 | esutils "^2.0.2" 648 | lodash "^4.17.13" 649 | to-fast-properties "^2.0.0" 650 | 651 | "@fnix/gcs-browser-upload@^1.0.5": 652 | version "1.0.6" 653 | resolved "https://registry.yarnpkg.com/@fnix/gcs-browser-upload/-/gcs-browser-upload-1.0.6.tgz#00f4de27bc13db5be7f1668a6bea36bff58260fa" 654 | integrity sha512-0Z6TLH0iIGvnjecqXQUAyLASB19qp0CFljsBSW/hZA6mcARvbuEdpy4z+Ks7r/dap3xgjGdnis+iv6ZjcRwMvA== 655 | dependencies: 656 | axios "^0.18.1" 657 | debug "^2.2.0" 658 | es6-error "^2.1.0" 659 | es6-promise "^3.1.2" 660 | p-retry "^4.1.0" 661 | spark-md5 "^2.0.2" 662 | 663 | "@types/estree@0.0.39": 664 | version "0.0.39" 665 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 666 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 667 | 668 | "@types/node@*", "@types/node@^12.7.2": 669 | version "12.7.4" 670 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.4.tgz#64db61e0359eb5a8d99b55e05c729f130a678b04" 671 | integrity sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ== 672 | 673 | "@types/resolve@0.0.8": 674 | version "0.0.8" 675 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 676 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 677 | dependencies: 678 | "@types/node" "*" 679 | 680 | "@types/retry@^0.12.0": 681 | version "0.12.0" 682 | resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" 683 | integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== 684 | 685 | acorn-jsx@^5.0.2: 686 | version "5.0.2" 687 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" 688 | integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== 689 | 690 | acorn@^5.7.3: 691 | version "5.7.4" 692 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" 693 | integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== 694 | 695 | acorn@^7.0.0: 696 | version "7.0.0" 697 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" 698 | integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== 699 | 700 | ajv@^6.10.0, ajv@^6.10.2: 701 | version "6.10.2" 702 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 703 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== 704 | dependencies: 705 | fast-deep-equal "^2.0.1" 706 | fast-json-stable-stringify "^2.0.0" 707 | json-schema-traverse "^0.4.1" 708 | uri-js "^4.2.2" 709 | 710 | ansi-escapes@^3.2.0: 711 | version "3.2.0" 712 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 713 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 714 | 715 | ansi-regex@^3.0.0: 716 | version "3.0.1" 717 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 718 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 719 | 720 | ansi-regex@^4.1.0: 721 | version "4.1.0" 722 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 723 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 724 | 725 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 726 | version "3.2.1" 727 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 728 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 729 | dependencies: 730 | color-convert "^1.9.0" 731 | 732 | argparse@^1.0.7: 733 | version "1.0.10" 734 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 735 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 736 | dependencies: 737 | sprintf-js "~1.0.2" 738 | 739 | array-includes@^3.0.3: 740 | version "3.0.3" 741 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 742 | integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= 743 | dependencies: 744 | define-properties "^1.1.2" 745 | es-abstract "^1.7.0" 746 | 747 | astral-regex@^1.0.0: 748 | version "1.0.0" 749 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 750 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 751 | 752 | async-to-gen@^1.2.0: 753 | version "1.4.0" 754 | resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.4.0.tgz#f8157f9013e0c487e1e940150a4d1a1b78b2dd6b" 755 | integrity sha1-+BV/kBPgxIfh6UAVCk0aG3iy3Ws= 756 | dependencies: 757 | babylon "^6.14.0" 758 | magic-string "^0.22.0" 759 | pirates "^3.0.2" 760 | 761 | axios@^0.18.1: 762 | version "0.18.1" 763 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" 764 | integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== 765 | dependencies: 766 | follow-redirects "1.5.10" 767 | is-buffer "^2.0.2" 768 | 769 | babel-plugin-dynamic-import-node@^2.3.0: 770 | version "2.3.0" 771 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" 772 | integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== 773 | dependencies: 774 | object.assign "^4.1.0" 775 | 776 | babylon@^6.14.0: 777 | version "6.18.0" 778 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 779 | integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== 780 | 781 | balanced-match@^1.0.0: 782 | version "1.0.2" 783 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 784 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 785 | 786 | brace-expansion@^1.1.7: 787 | version "1.1.11" 788 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 789 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 790 | dependencies: 791 | balanced-match "^1.0.0" 792 | concat-map "0.0.1" 793 | 794 | browserslist@^4.6.0, browserslist@^4.6.6: 795 | version "4.7.0" 796 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" 797 | integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== 798 | dependencies: 799 | caniuse-lite "^1.0.30000989" 800 | electron-to-chromium "^1.3.247" 801 | node-releases "^1.1.29" 802 | 803 | buffer-es6@^4.9.3: 804 | version "4.9.3" 805 | resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" 806 | integrity sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ= 807 | 808 | buffer-from@^1.0.0: 809 | version "1.1.2" 810 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 811 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 812 | 813 | builtin-modules@^3.1.0: 814 | version "3.1.0" 815 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 816 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 817 | 818 | callsites@^3.0.0: 819 | version "3.1.0" 820 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 821 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 822 | 823 | caniuse-lite@^1.0.30000989: 824 | version "1.0.30000989" 825 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" 826 | integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== 827 | 828 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 829 | version "2.4.2" 830 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 831 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 832 | dependencies: 833 | ansi-styles "^3.2.1" 834 | escape-string-regexp "^1.0.5" 835 | supports-color "^5.3.0" 836 | 837 | chardet@^0.7.0: 838 | version "0.7.0" 839 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 840 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 841 | 842 | cli-cursor@^2.1.0: 843 | version "2.1.0" 844 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 845 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 846 | dependencies: 847 | restore-cursor "^2.0.0" 848 | 849 | cli-width@^2.0.0: 850 | version "2.2.0" 851 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 852 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 853 | 854 | color-convert@^1.9.0: 855 | version "1.9.3" 856 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 857 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 858 | dependencies: 859 | color-name "1.1.3" 860 | 861 | color-name@1.1.3: 862 | version "1.1.3" 863 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 864 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 865 | 866 | commander@^2.20.0: 867 | version "2.20.3" 868 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 869 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 870 | 871 | concat-map@0.0.1: 872 | version "0.0.1" 873 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 874 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 875 | 876 | contains-path@^0.1.0: 877 | version "0.1.0" 878 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 879 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 880 | 881 | convert-source-map@^1.1.0: 882 | version "1.6.0" 883 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 884 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== 885 | dependencies: 886 | safe-buffer "~5.1.1" 887 | 888 | core-js-compat@^3.1.1: 889 | version "3.2.1" 890 | resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" 891 | integrity sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A== 892 | dependencies: 893 | browserslist "^4.6.6" 894 | semver "^6.3.0" 895 | 896 | core-js@^3.2.1: 897 | version "3.2.1" 898 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" 899 | integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== 900 | 901 | cross-spawn@^6.0.5: 902 | version "6.0.5" 903 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 904 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 905 | dependencies: 906 | nice-try "^1.0.4" 907 | path-key "^2.0.1" 908 | semver "^5.5.0" 909 | shebang-command "^1.2.0" 910 | which "^1.2.9" 911 | 912 | debug@=3.1.0: 913 | version "3.1.0" 914 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 915 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 916 | dependencies: 917 | ms "2.0.0" 918 | 919 | debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: 920 | version "2.6.9" 921 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 922 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 923 | dependencies: 924 | ms "2.0.0" 925 | 926 | debug@^4.0.1, debug@^4.1.0: 927 | version "4.1.1" 928 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 929 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 930 | dependencies: 931 | ms "^2.1.1" 932 | 933 | deep-is@~0.1.3: 934 | version "0.1.3" 935 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 936 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 937 | 938 | define-properties@^1.1.2, define-properties@^1.1.3: 939 | version "1.1.3" 940 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 941 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 942 | dependencies: 943 | object-keys "^1.0.12" 944 | 945 | doctrine@1.5.0: 946 | version "1.5.0" 947 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 948 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 949 | dependencies: 950 | esutils "^2.0.2" 951 | isarray "^1.0.0" 952 | 953 | doctrine@^3.0.0: 954 | version "3.0.0" 955 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 956 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 957 | dependencies: 958 | esutils "^2.0.2" 959 | 960 | electron-to-chromium@^1.3.247: 961 | version "1.3.252" 962 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.252.tgz#5b6261965b564a0f4df0f1c86246487897017f52" 963 | integrity sha512-NWJ5TztDnjExFISZHFwpoJjMbLUifsNBnx7u2JI0gCw6SbKyQYYWWtBHasO/jPtHym69F4EZuTpRNGN11MT/jg== 964 | 965 | emoji-regex@^7.0.1: 966 | version "7.0.3" 967 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 968 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 969 | 970 | error-ex@^1.2.0: 971 | version "1.3.2" 972 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 973 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 974 | dependencies: 975 | is-arrayish "^0.2.1" 976 | 977 | es-abstract@^1.12.0, es-abstract@^1.7.0: 978 | version "1.14.1" 979 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.1.tgz#6e8d84b445ec9c610781e74a6d52cc31aac5b4ca" 980 | integrity sha512-cp/Tb1oA/rh2X7vqeSOvM+TSo3UkJLX70eNihgVEvnzwAgikjkTFr/QVgRCaxjm0knCNQzNoxxxcw2zO2LJdZA== 981 | dependencies: 982 | es-to-primitive "^1.2.0" 983 | function-bind "^1.1.1" 984 | has "^1.0.3" 985 | has-symbols "^1.0.0" 986 | is-callable "^1.1.4" 987 | is-regex "^1.0.4" 988 | object-inspect "^1.6.0" 989 | object-keys "^1.1.1" 990 | string.prototype.trimleft "^2.0.0" 991 | string.prototype.trimright "^2.0.0" 992 | 993 | es-to-primitive@^1.2.0: 994 | version "1.2.0" 995 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 996 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 997 | dependencies: 998 | is-callable "^1.1.4" 999 | is-date-object "^1.0.1" 1000 | is-symbol "^1.0.2" 1001 | 1002 | es6-error@^2.1.0: 1003 | version "2.1.1" 1004 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-2.1.1.tgz#91384301ec5ed1c9a7247d1128247216f03547cd" 1005 | integrity sha1-kThDAexe0cmnJH0RKCRyFvA1R80= 1006 | 1007 | es6-promise@^3.1.2: 1008 | version "3.3.1" 1009 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 1010 | integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= 1011 | 1012 | escape-string-regexp@^1.0.5: 1013 | version "1.0.5" 1014 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1015 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1016 | 1017 | eslint-import-resolver-node@^0.3.2: 1018 | version "0.3.2" 1019 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 1020 | integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== 1021 | dependencies: 1022 | debug "^2.6.9" 1023 | resolve "^1.5.0" 1024 | 1025 | eslint-module-utils@^2.4.0: 1026 | version "2.4.1" 1027 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" 1028 | integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== 1029 | dependencies: 1030 | debug "^2.6.8" 1031 | pkg-dir "^2.0.0" 1032 | 1033 | eslint-plugin-import@^2.18.2: 1034 | version "2.18.2" 1035 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" 1036 | integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== 1037 | dependencies: 1038 | array-includes "^3.0.3" 1039 | contains-path "^0.1.0" 1040 | debug "^2.6.9" 1041 | doctrine "1.5.0" 1042 | eslint-import-resolver-node "^0.3.2" 1043 | eslint-module-utils "^2.4.0" 1044 | has "^1.0.3" 1045 | minimatch "^3.0.4" 1046 | object.values "^1.1.0" 1047 | read-pkg-up "^2.0.0" 1048 | resolve "^1.11.0" 1049 | 1050 | eslint-scope@^5.0.0: 1051 | version "5.0.0" 1052 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 1053 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 1054 | dependencies: 1055 | esrecurse "^4.1.0" 1056 | estraverse "^4.1.1" 1057 | 1058 | eslint-utils@^1.4.2: 1059 | version "1.4.2" 1060 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" 1061 | integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== 1062 | dependencies: 1063 | eslint-visitor-keys "^1.0.0" 1064 | 1065 | eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: 1066 | version "1.1.0" 1067 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 1068 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 1069 | 1070 | eslint@^6.3.0: 1071 | version "6.3.0" 1072 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.3.0.tgz#1f1a902f67bfd4c354e7288b81e40654d927eb6a" 1073 | integrity sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow== 1074 | dependencies: 1075 | "@babel/code-frame" "^7.0.0" 1076 | ajv "^6.10.0" 1077 | chalk "^2.1.0" 1078 | cross-spawn "^6.0.5" 1079 | debug "^4.0.1" 1080 | doctrine "^3.0.0" 1081 | eslint-scope "^5.0.0" 1082 | eslint-utils "^1.4.2" 1083 | eslint-visitor-keys "^1.1.0" 1084 | espree "^6.1.1" 1085 | esquery "^1.0.1" 1086 | esutils "^2.0.2" 1087 | file-entry-cache "^5.0.1" 1088 | functional-red-black-tree "^1.0.1" 1089 | glob-parent "^5.0.0" 1090 | globals "^11.7.0" 1091 | ignore "^4.0.6" 1092 | import-fresh "^3.0.0" 1093 | imurmurhash "^0.1.4" 1094 | inquirer "^6.4.1" 1095 | is-glob "^4.0.0" 1096 | js-yaml "^3.13.1" 1097 | json-stable-stringify-without-jsonify "^1.0.1" 1098 | levn "^0.3.0" 1099 | lodash "^4.17.14" 1100 | minimatch "^3.0.4" 1101 | mkdirp "^0.5.1" 1102 | natural-compare "^1.4.0" 1103 | optionator "^0.8.2" 1104 | progress "^2.0.0" 1105 | regexpp "^2.0.1" 1106 | semver "^6.1.2" 1107 | strip-ansi "^5.2.0" 1108 | strip-json-comments "^3.0.1" 1109 | table "^5.2.3" 1110 | text-table "^0.2.0" 1111 | v8-compile-cache "^2.0.3" 1112 | 1113 | espree@^6.1.1: 1114 | version "6.1.1" 1115 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" 1116 | integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== 1117 | dependencies: 1118 | acorn "^7.0.0" 1119 | acorn-jsx "^5.0.2" 1120 | eslint-visitor-keys "^1.1.0" 1121 | 1122 | esprima@^4.0.0: 1123 | version "4.0.1" 1124 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1125 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1126 | 1127 | esquery@^1.0.1: 1128 | version "1.0.1" 1129 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 1130 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 1131 | dependencies: 1132 | estraverse "^4.0.0" 1133 | 1134 | esrecurse@^4.1.0: 1135 | version "4.2.1" 1136 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 1137 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 1138 | dependencies: 1139 | estraverse "^4.1.0" 1140 | 1141 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 1142 | version "4.3.0" 1143 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1144 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1145 | 1146 | estree-walker@^0.2.1: 1147 | version "0.2.1" 1148 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" 1149 | integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= 1150 | 1151 | estree-walker@^0.5.2: 1152 | version "0.5.2" 1153 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" 1154 | integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== 1155 | 1156 | estree-walker@^0.6.1: 1157 | version "0.6.1" 1158 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 1159 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 1160 | 1161 | esutils@^2.0.2: 1162 | version "2.0.3" 1163 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1164 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1165 | 1166 | external-editor@^3.0.3: 1167 | version "3.1.0" 1168 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 1169 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 1170 | dependencies: 1171 | chardet "^0.7.0" 1172 | iconv-lite "^0.4.24" 1173 | tmp "^0.0.33" 1174 | 1175 | fast-deep-equal@^2.0.1: 1176 | version "2.0.1" 1177 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 1178 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 1179 | 1180 | fast-json-stable-stringify@^2.0.0: 1181 | version "2.0.0" 1182 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1183 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 1184 | 1185 | fast-levenshtein@~2.0.4: 1186 | version "2.0.6" 1187 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1188 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1189 | 1190 | figures@^2.0.0: 1191 | version "2.0.0" 1192 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 1193 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 1194 | dependencies: 1195 | escape-string-regexp "^1.0.5" 1196 | 1197 | file-entry-cache@^5.0.1: 1198 | version "5.0.1" 1199 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 1200 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 1201 | dependencies: 1202 | flat-cache "^2.0.1" 1203 | 1204 | find-up@^2.0.0, find-up@^2.1.0: 1205 | version "2.1.0" 1206 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1207 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 1208 | dependencies: 1209 | locate-path "^2.0.0" 1210 | 1211 | flat-cache@^2.0.1: 1212 | version "2.0.1" 1213 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 1214 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 1215 | dependencies: 1216 | flatted "^2.0.0" 1217 | rimraf "2.6.3" 1218 | write "1.0.3" 1219 | 1220 | flatted@^2.0.0: 1221 | version "2.0.1" 1222 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" 1223 | integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== 1224 | 1225 | follow-redirects@1.5.10: 1226 | version "1.5.10" 1227 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" 1228 | integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== 1229 | dependencies: 1230 | debug "=3.1.0" 1231 | 1232 | fs.realpath@^1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1235 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1236 | 1237 | function-bind@^1.0.2, function-bind@^1.1.1: 1238 | version "1.1.1" 1239 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1240 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1241 | 1242 | functional-red-black-tree@^1.0.1: 1243 | version "1.0.1" 1244 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1245 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1246 | 1247 | glob-parent@^5.0.0: 1248 | version "5.0.0" 1249 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" 1250 | integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== 1251 | dependencies: 1252 | is-glob "^4.0.1" 1253 | 1254 | glob@^7.1.3: 1255 | version "7.1.4" 1256 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 1257 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 1258 | dependencies: 1259 | fs.realpath "^1.0.0" 1260 | inflight "^1.0.4" 1261 | inherits "2" 1262 | minimatch "^3.0.4" 1263 | once "^1.3.0" 1264 | path-is-absolute "^1.0.0" 1265 | 1266 | globals@^11.1.0, globals@^11.7.0: 1267 | version "11.12.0" 1268 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1269 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1270 | 1271 | graceful-fs@^4.1.2: 1272 | version "4.2.2" 1273 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" 1274 | integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== 1275 | 1276 | has-flag@^3.0.0: 1277 | version "3.0.0" 1278 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1279 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1280 | 1281 | has-symbols@^1.0.0: 1282 | version "1.0.0" 1283 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 1284 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 1285 | 1286 | has@^1.0.1, has@^1.0.3: 1287 | version "1.0.3" 1288 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1289 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1290 | dependencies: 1291 | function-bind "^1.1.1" 1292 | 1293 | hosted-git-info@^2.1.4: 1294 | version "2.8.4" 1295 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" 1296 | integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== 1297 | 1298 | iconv-lite@^0.4.24: 1299 | version "0.4.24" 1300 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1301 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1302 | dependencies: 1303 | safer-buffer ">= 2.1.2 < 3" 1304 | 1305 | ignore@^4.0.6: 1306 | version "4.0.6" 1307 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1308 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1309 | 1310 | import-fresh@^3.0.0: 1311 | version "3.1.0" 1312 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" 1313 | integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== 1314 | dependencies: 1315 | parent-module "^1.0.0" 1316 | resolve-from "^4.0.0" 1317 | 1318 | imurmurhash@^0.1.4: 1319 | version "0.1.4" 1320 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1321 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1322 | 1323 | inflight@^1.0.4: 1324 | version "1.0.6" 1325 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1326 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1327 | dependencies: 1328 | once "^1.3.0" 1329 | wrappy "1" 1330 | 1331 | inherits@2: 1332 | version "2.0.4" 1333 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1334 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1335 | 1336 | inquirer@^6.4.1: 1337 | version "6.5.2" 1338 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" 1339 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 1340 | dependencies: 1341 | ansi-escapes "^3.2.0" 1342 | chalk "^2.4.2" 1343 | cli-cursor "^2.1.0" 1344 | cli-width "^2.0.0" 1345 | external-editor "^3.0.3" 1346 | figures "^2.0.0" 1347 | lodash "^4.17.12" 1348 | mute-stream "0.0.7" 1349 | run-async "^2.2.0" 1350 | rxjs "^6.4.0" 1351 | string-width "^2.1.0" 1352 | strip-ansi "^5.1.0" 1353 | through "^2.3.6" 1354 | 1355 | invariant@^2.2.2: 1356 | version "2.2.4" 1357 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1358 | integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== 1359 | dependencies: 1360 | loose-envify "^1.0.0" 1361 | 1362 | is-arrayish@^0.2.1: 1363 | version "0.2.1" 1364 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1365 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1366 | 1367 | is-buffer@^2.0.2: 1368 | version "2.0.4" 1369 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 1370 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 1371 | 1372 | is-callable@^1.1.4: 1373 | version "1.1.4" 1374 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1375 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 1376 | 1377 | is-date-object@^1.0.1: 1378 | version "1.0.1" 1379 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1380 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1381 | 1382 | is-extglob@^2.1.1: 1383 | version "2.1.1" 1384 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1385 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1386 | 1387 | is-fullwidth-code-point@^2.0.0: 1388 | version "2.0.0" 1389 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1390 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1391 | 1392 | is-glob@^4.0.0, is-glob@^4.0.1: 1393 | version "4.0.1" 1394 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1395 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1396 | dependencies: 1397 | is-extglob "^2.1.1" 1398 | 1399 | is-module@^1.0.0: 1400 | version "1.0.0" 1401 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 1402 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 1403 | 1404 | is-promise@^2.1.0: 1405 | version "2.1.0" 1406 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1407 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1408 | 1409 | is-reference@^1.1.2: 1410 | version "1.1.3" 1411 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.3.tgz#e99059204b66fdbe09305cfca715a29caa5c8a51" 1412 | integrity sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw== 1413 | dependencies: 1414 | "@types/estree" "0.0.39" 1415 | 1416 | is-regex@^1.0.4: 1417 | version "1.0.4" 1418 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1419 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 1420 | dependencies: 1421 | has "^1.0.1" 1422 | 1423 | is-symbol@^1.0.2: 1424 | version "1.0.2" 1425 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 1426 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 1427 | dependencies: 1428 | has-symbols "^1.0.0" 1429 | 1430 | isarray@^1.0.0: 1431 | version "1.0.0" 1432 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1433 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1434 | 1435 | isexe@^2.0.0: 1436 | version "2.0.0" 1437 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1438 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1439 | 1440 | jest-worker@^24.6.0: 1441 | version "24.9.0" 1442 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" 1443 | integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== 1444 | dependencies: 1445 | merge-stream "^2.0.0" 1446 | supports-color "^6.1.0" 1447 | 1448 | js-levenshtein@^1.1.3: 1449 | version "1.1.6" 1450 | resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" 1451 | integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== 1452 | 1453 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1454 | version "4.0.0" 1455 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1456 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1457 | 1458 | js-yaml@^3.13.1: 1459 | version "3.13.1" 1460 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1461 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1462 | dependencies: 1463 | argparse "^1.0.7" 1464 | esprima "^4.0.0" 1465 | 1466 | jsesc@^2.5.1: 1467 | version "2.5.2" 1468 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1469 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1470 | 1471 | jsesc@~0.5.0: 1472 | version "0.5.0" 1473 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1474 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1475 | 1476 | json-schema-traverse@^0.4.1: 1477 | version "0.4.1" 1478 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1479 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1480 | 1481 | json-stable-stringify-without-jsonify@^1.0.1: 1482 | version "1.0.1" 1483 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1484 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1485 | 1486 | json5@^2.1.0: 1487 | version "2.2.3" 1488 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1489 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1490 | 1491 | levn@^0.3.0, levn@~0.3.0: 1492 | version "0.3.0" 1493 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1494 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1495 | dependencies: 1496 | prelude-ls "~1.1.2" 1497 | type-check "~0.3.2" 1498 | 1499 | load-json-file@^2.0.0: 1500 | version "2.0.0" 1501 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1502 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1503 | dependencies: 1504 | graceful-fs "^4.1.2" 1505 | parse-json "^2.2.0" 1506 | pify "^2.0.0" 1507 | strip-bom "^3.0.0" 1508 | 1509 | locate-path@^2.0.0: 1510 | version "2.0.0" 1511 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1512 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1513 | dependencies: 1514 | p-locate "^2.0.0" 1515 | path-exists "^3.0.0" 1516 | 1517 | lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14: 1518 | version "4.17.19" 1519 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" 1520 | integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== 1521 | 1522 | loose-envify@^1.0.0: 1523 | version "1.4.0" 1524 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1525 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1526 | dependencies: 1527 | js-tokens "^3.0.0 || ^4.0.0" 1528 | 1529 | magic-string@^0.22.0, magic-string@^0.22.5: 1530 | version "0.22.5" 1531 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" 1532 | integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== 1533 | dependencies: 1534 | vlq "^0.2.2" 1535 | 1536 | magic-string@^0.25.2: 1537 | version "0.25.3" 1538 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" 1539 | integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== 1540 | dependencies: 1541 | sourcemap-codec "^1.4.4" 1542 | 1543 | merge-stream@^2.0.0: 1544 | version "2.0.0" 1545 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1546 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1547 | 1548 | mimic-fn@^1.0.0: 1549 | version "1.2.0" 1550 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 1551 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 1552 | 1553 | minimatch@^3.0.2, minimatch@^3.0.4: 1554 | version "3.1.2" 1555 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1556 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1557 | dependencies: 1558 | brace-expansion "^1.1.7" 1559 | 1560 | minimist@0.0.8: 1561 | version "0.0.8" 1562 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1563 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1564 | 1565 | mkdirp@^0.5.1: 1566 | version "0.5.1" 1567 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1568 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1569 | dependencies: 1570 | minimist "0.0.8" 1571 | 1572 | ms@2.0.0: 1573 | version "2.0.0" 1574 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1575 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1576 | 1577 | ms@^2.1.1: 1578 | version "2.1.2" 1579 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1580 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1581 | 1582 | mute-stream@0.0.7: 1583 | version "0.0.7" 1584 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1585 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 1586 | 1587 | natural-compare@^1.4.0: 1588 | version "1.4.0" 1589 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1590 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1591 | 1592 | nice-try@^1.0.4: 1593 | version "1.0.5" 1594 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1595 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1596 | 1597 | node-modules-regexp@^1.0.0: 1598 | version "1.0.0" 1599 | resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 1600 | integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 1601 | 1602 | node-releases@^1.1.29: 1603 | version "1.1.29" 1604 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.29.tgz#86a57c6587a30ecd6726449e5d293466b0a0bb86" 1605 | integrity sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ== 1606 | dependencies: 1607 | semver "^5.3.0" 1608 | 1609 | normalize-package-data@^2.3.2: 1610 | version "2.5.0" 1611 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1612 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1613 | dependencies: 1614 | hosted-git-info "^2.1.4" 1615 | resolve "^1.10.0" 1616 | semver "2 || 3 || 4 || 5" 1617 | validate-npm-package-license "^3.0.1" 1618 | 1619 | object-inspect@^1.6.0: 1620 | version "1.6.0" 1621 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" 1622 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== 1623 | 1624 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1625 | version "1.1.1" 1626 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1627 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1628 | 1629 | object.assign@^4.1.0: 1630 | version "4.1.0" 1631 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1632 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1633 | dependencies: 1634 | define-properties "^1.1.2" 1635 | function-bind "^1.1.1" 1636 | has-symbols "^1.0.0" 1637 | object-keys "^1.0.11" 1638 | 1639 | object.values@^1.1.0: 1640 | version "1.1.0" 1641 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" 1642 | integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== 1643 | dependencies: 1644 | define-properties "^1.1.3" 1645 | es-abstract "^1.12.0" 1646 | function-bind "^1.1.1" 1647 | has "^1.0.3" 1648 | 1649 | once@^1.3.0: 1650 | version "1.4.0" 1651 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1652 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1653 | dependencies: 1654 | wrappy "1" 1655 | 1656 | onetime@^2.0.0: 1657 | version "2.0.1" 1658 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1659 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 1660 | dependencies: 1661 | mimic-fn "^1.0.0" 1662 | 1663 | optionator@^0.8.2: 1664 | version "0.8.2" 1665 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1666 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 1667 | dependencies: 1668 | deep-is "~0.1.3" 1669 | fast-levenshtein "~2.0.4" 1670 | levn "~0.3.0" 1671 | prelude-ls "~1.1.2" 1672 | type-check "~0.3.2" 1673 | wordwrap "~1.0.0" 1674 | 1675 | os-tmpdir@~1.0.2: 1676 | version "1.0.2" 1677 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1678 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1679 | 1680 | p-limit@^1.1.0: 1681 | version "1.3.0" 1682 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1683 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1684 | dependencies: 1685 | p-try "^1.0.0" 1686 | 1687 | p-locate@^2.0.0: 1688 | version "2.0.0" 1689 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1690 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1691 | dependencies: 1692 | p-limit "^1.1.0" 1693 | 1694 | p-retry@^4.1.0: 1695 | version "4.1.0" 1696 | resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.1.0.tgz#9ce7cef2069e84bf590df3b8ec18d740109338d6" 1697 | integrity sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA== 1698 | dependencies: 1699 | "@types/retry" "^0.12.0" 1700 | retry "^0.12.0" 1701 | 1702 | p-try@^1.0.0: 1703 | version "1.0.0" 1704 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1705 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1706 | 1707 | parent-module@^1.0.0: 1708 | version "1.0.1" 1709 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1710 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1711 | dependencies: 1712 | callsites "^3.0.0" 1713 | 1714 | parse-json@^2.2.0: 1715 | version "2.2.0" 1716 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1717 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1718 | dependencies: 1719 | error-ex "^1.2.0" 1720 | 1721 | path-exists@^3.0.0: 1722 | version "3.0.0" 1723 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1724 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1725 | 1726 | path-is-absolute@^1.0.0: 1727 | version "1.0.1" 1728 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1729 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1730 | 1731 | path-key@^2.0.1: 1732 | version "2.0.1" 1733 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1734 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1735 | 1736 | path-parse@^1.0.6: 1737 | version "1.0.6" 1738 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1739 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1740 | 1741 | path-type@^2.0.0: 1742 | version "2.0.0" 1743 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1744 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1745 | dependencies: 1746 | pify "^2.0.0" 1747 | 1748 | pify@^2.0.0: 1749 | version "2.3.0" 1750 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1751 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1752 | 1753 | pirates@^3.0.2: 1754 | version "3.0.2" 1755 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-3.0.2.tgz#7e6f85413fd9161ab4e12b539b06010d85954bb9" 1756 | integrity sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q== 1757 | dependencies: 1758 | node-modules-regexp "^1.0.0" 1759 | 1760 | pkg-dir@^2.0.0: 1761 | version "2.0.0" 1762 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1763 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1764 | dependencies: 1765 | find-up "^2.1.0" 1766 | 1767 | prelude-ls@~1.1.2: 1768 | version "1.1.2" 1769 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1770 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1771 | 1772 | private@^0.1.6: 1773 | version "0.1.8" 1774 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1775 | integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== 1776 | 1777 | process-es6@^0.11.6: 1778 | version "0.11.6" 1779 | resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" 1780 | integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= 1781 | 1782 | progress@^2.0.0: 1783 | version "2.0.3" 1784 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1785 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1786 | 1787 | punycode@^2.1.0: 1788 | version "2.1.1" 1789 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1790 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1791 | 1792 | read-pkg-up@^2.0.0: 1793 | version "2.0.0" 1794 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1795 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1796 | dependencies: 1797 | find-up "^2.0.0" 1798 | read-pkg "^2.0.0" 1799 | 1800 | read-pkg@^2.0.0: 1801 | version "2.0.0" 1802 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1803 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 1804 | dependencies: 1805 | load-json-file "^2.0.0" 1806 | normalize-package-data "^2.3.2" 1807 | path-type "^2.0.0" 1808 | 1809 | regenerate-unicode-properties@^8.1.0: 1810 | version "8.1.0" 1811 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" 1812 | integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== 1813 | dependencies: 1814 | regenerate "^1.4.0" 1815 | 1816 | regenerate@^1.4.0: 1817 | version "1.4.0" 1818 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 1819 | integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 1820 | 1821 | regenerator-runtime@^0.13.3: 1822 | version "0.13.3" 1823 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" 1824 | integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== 1825 | 1826 | regenerator-transform@^0.14.0: 1827 | version "0.14.1" 1828 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" 1829 | integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== 1830 | dependencies: 1831 | private "^0.1.6" 1832 | 1833 | regexp-tree@^0.1.13: 1834 | version "0.1.13" 1835 | resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" 1836 | integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== 1837 | 1838 | regexpp@^2.0.1: 1839 | version "2.0.1" 1840 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1841 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1842 | 1843 | regexpu-core@^4.5.4: 1844 | version "4.5.5" 1845 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.5.tgz#aaffe61c2af58269b3e516b61a73790376326411" 1846 | integrity sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ== 1847 | dependencies: 1848 | regenerate "^1.4.0" 1849 | regenerate-unicode-properties "^8.1.0" 1850 | regjsgen "^0.5.0" 1851 | regjsparser "^0.6.0" 1852 | unicode-match-property-ecmascript "^1.0.4" 1853 | unicode-match-property-value-ecmascript "^1.1.0" 1854 | 1855 | regjsgen@^0.5.0: 1856 | version "0.5.0" 1857 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" 1858 | integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== 1859 | 1860 | regjsparser@^0.6.0: 1861 | version "0.6.0" 1862 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" 1863 | integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== 1864 | dependencies: 1865 | jsesc "~0.5.0" 1866 | 1867 | resolve-from@^4.0.0: 1868 | version "4.0.0" 1869 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1870 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1871 | 1872 | resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: 1873 | version "1.12.0" 1874 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" 1875 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== 1876 | dependencies: 1877 | path-parse "^1.0.6" 1878 | 1879 | restore-cursor@^2.0.0: 1880 | version "2.0.0" 1881 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1882 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 1883 | dependencies: 1884 | onetime "^2.0.0" 1885 | signal-exit "^3.0.2" 1886 | 1887 | retry@^0.12.0: 1888 | version "0.12.0" 1889 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" 1890 | integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= 1891 | 1892 | rimraf@2.6.3: 1893 | version "2.6.3" 1894 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1895 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1896 | dependencies: 1897 | glob "^7.1.3" 1898 | 1899 | rollup-plugin-async@^1.2.0: 1900 | version "1.2.0" 1901 | resolved "https://registry.yarnpkg.com/rollup-plugin-async/-/rollup-plugin-async-1.2.0.tgz#f95fdd29f8b6f2332b5a89a9d64ee8087b12b249" 1902 | integrity sha1-+V/dKfi28jMrWomp1k7oCHsSskk= 1903 | dependencies: 1904 | async-to-gen "^1.2.0" 1905 | rollup-pluginutils "^1.5.1" 1906 | 1907 | rollup-plugin-babel@^4.3.3: 1908 | version "4.3.3" 1909 | resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz#7eb5ac16d9b5831c3fd5d97e8df77ba25c72a2aa" 1910 | integrity sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw== 1911 | dependencies: 1912 | "@babel/helper-module-imports" "^7.0.0" 1913 | rollup-pluginutils "^2.8.1" 1914 | 1915 | rollup-plugin-commonjs@^10.1.0: 1916 | version "10.1.0" 1917 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" 1918 | integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== 1919 | dependencies: 1920 | estree-walker "^0.6.1" 1921 | is-reference "^1.1.2" 1922 | magic-string "^0.25.2" 1923 | resolve "^1.11.0" 1924 | rollup-pluginutils "^2.8.1" 1925 | 1926 | rollup-plugin-json@^4.0.0: 1927 | version "4.0.0" 1928 | resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" 1929 | integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== 1930 | dependencies: 1931 | rollup-pluginutils "^2.5.0" 1932 | 1933 | rollup-plugin-node-globals@^1.4.0: 1934 | version "1.4.0" 1935 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz#5e1f24a9bb97c0ef51249f625e16c7e61b7c020b" 1936 | integrity sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== 1937 | dependencies: 1938 | acorn "^5.7.3" 1939 | buffer-es6 "^4.9.3" 1940 | estree-walker "^0.5.2" 1941 | magic-string "^0.22.5" 1942 | process-es6 "^0.11.6" 1943 | rollup-pluginutils "^2.3.1" 1944 | 1945 | rollup-plugin-node-resolve@^5.2.0: 1946 | version "5.2.0" 1947 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" 1948 | integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== 1949 | dependencies: 1950 | "@types/resolve" "0.0.8" 1951 | builtin-modules "^3.1.0" 1952 | is-module "^1.0.0" 1953 | resolve "^1.11.1" 1954 | rollup-pluginutils "^2.8.1" 1955 | 1956 | rollup-plugin-terser@^5.1.1: 1957 | version "5.1.1" 1958 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.1.tgz#e9d2545ec8d467f96ba99b9216d2285aad8d5b66" 1959 | integrity sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== 1960 | dependencies: 1961 | "@babel/code-frame" "^7.0.0" 1962 | jest-worker "^24.6.0" 1963 | rollup-pluginutils "^2.8.1" 1964 | serialize-javascript "^1.7.0" 1965 | terser "^4.1.0" 1966 | 1967 | rollup-pluginutils@^1.5.1: 1968 | version "1.5.2" 1969 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" 1970 | integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= 1971 | dependencies: 1972 | estree-walker "^0.2.1" 1973 | minimatch "^3.0.2" 1974 | 1975 | rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1: 1976 | version "2.8.1" 1977 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" 1978 | integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== 1979 | dependencies: 1980 | estree-walker "^0.6.1" 1981 | 1982 | rollup@^1.20.3: 1983 | version "1.20.3" 1984 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.20.3.tgz#6243f6c118ca05f56b2d9433112400cd834a1eb8" 1985 | integrity sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg== 1986 | dependencies: 1987 | "@types/estree" "0.0.39" 1988 | "@types/node" "^12.7.2" 1989 | acorn "^7.0.0" 1990 | 1991 | run-async@^2.2.0: 1992 | version "2.3.0" 1993 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1994 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 1995 | dependencies: 1996 | is-promise "^2.1.0" 1997 | 1998 | rxjs@^6.4.0: 1999 | version "6.5.3" 2000 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" 2001 | integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== 2002 | dependencies: 2003 | tslib "^1.9.0" 2004 | 2005 | safe-buffer@~5.1.1: 2006 | version "5.1.2" 2007 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2008 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2009 | 2010 | "safer-buffer@>= 2.1.2 < 3": 2011 | version "2.1.2" 2012 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2013 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2014 | 2015 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: 2016 | version "5.7.1" 2017 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2018 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2019 | 2020 | semver@^6.1.2, semver@^6.3.0: 2021 | version "6.3.0" 2022 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2023 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2024 | 2025 | serialize-javascript@^1.7.0: 2026 | version "1.9.1" 2027 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" 2028 | integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== 2029 | 2030 | shebang-command@^1.2.0: 2031 | version "1.2.0" 2032 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2033 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2034 | dependencies: 2035 | shebang-regex "^1.0.0" 2036 | 2037 | shebang-regex@^1.0.0: 2038 | version "1.0.0" 2039 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2040 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2041 | 2042 | signal-exit@^3.0.2: 2043 | version "3.0.2" 2044 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2045 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2046 | 2047 | slice-ansi@^2.1.0: 2048 | version "2.1.0" 2049 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 2050 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 2051 | dependencies: 2052 | ansi-styles "^3.2.0" 2053 | astral-regex "^1.0.0" 2054 | is-fullwidth-code-point "^2.0.0" 2055 | 2056 | source-map-support@~0.5.12: 2057 | version "0.5.21" 2058 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2059 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2060 | dependencies: 2061 | buffer-from "^1.0.0" 2062 | source-map "^0.6.0" 2063 | 2064 | source-map@^0.5.0: 2065 | version "0.5.7" 2066 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2067 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2068 | 2069 | source-map@^0.6.0, source-map@~0.6.1: 2070 | version "0.6.1" 2071 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2072 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2073 | 2074 | sourcemap-codec@^1.4.4: 2075 | version "1.4.6" 2076 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" 2077 | integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== 2078 | 2079 | spark-md5@^2.0.2: 2080 | version "2.0.2" 2081 | resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-2.0.2.tgz#37b763847763ae7e7acef2ca5233d01e649a78b7" 2082 | integrity sha1-N7djhHdjrn56zvLKUjPQHmSaeLc= 2083 | 2084 | spark-md5@^3.0.0: 2085 | version "3.0.0" 2086 | resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.0.tgz#3722227c54e2faf24b1dc6d933cc144e6f71bfef" 2087 | integrity sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8= 2088 | 2089 | spdx-correct@^3.0.0: 2090 | version "3.1.0" 2091 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 2092 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 2093 | dependencies: 2094 | spdx-expression-parse "^3.0.0" 2095 | spdx-license-ids "^3.0.0" 2096 | 2097 | spdx-exceptions@^2.1.0: 2098 | version "2.2.0" 2099 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 2100 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 2101 | 2102 | spdx-expression-parse@^3.0.0: 2103 | version "3.0.0" 2104 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2105 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 2106 | dependencies: 2107 | spdx-exceptions "^2.1.0" 2108 | spdx-license-ids "^3.0.0" 2109 | 2110 | spdx-license-ids@^3.0.0: 2111 | version "3.0.5" 2112 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 2113 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 2114 | 2115 | sprintf-js@~1.0.2: 2116 | version "1.0.3" 2117 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2118 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2119 | 2120 | string-width@^2.1.0: 2121 | version "2.1.1" 2122 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2123 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2124 | dependencies: 2125 | is-fullwidth-code-point "^2.0.0" 2126 | strip-ansi "^4.0.0" 2127 | 2128 | string-width@^3.0.0: 2129 | version "3.1.0" 2130 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2131 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2132 | dependencies: 2133 | emoji-regex "^7.0.1" 2134 | is-fullwidth-code-point "^2.0.0" 2135 | strip-ansi "^5.1.0" 2136 | 2137 | string.prototype.trimleft@^2.0.0: 2138 | version "2.0.0" 2139 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.0.0.tgz#68b6aa8e162c6a80e76e3a8a0c2e747186e271ff" 2140 | integrity sha1-aLaqjhYsaoDnbjqKDC50cYbicf8= 2141 | dependencies: 2142 | define-properties "^1.1.2" 2143 | function-bind "^1.0.2" 2144 | 2145 | string.prototype.trimright@^2.0.0: 2146 | version "2.0.0" 2147 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz#ab4a56d802a01fbe7293e11e84f24dc8164661dd" 2148 | integrity sha1-q0pW2AKgH75yk+EehPJNyBZGYd0= 2149 | dependencies: 2150 | define-properties "^1.1.2" 2151 | function-bind "^1.0.2" 2152 | 2153 | strip-ansi@^4.0.0: 2154 | version "4.0.0" 2155 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2156 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2157 | dependencies: 2158 | ansi-regex "^3.0.0" 2159 | 2160 | strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2161 | version "5.2.0" 2162 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2163 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2164 | dependencies: 2165 | ansi-regex "^4.1.0" 2166 | 2167 | strip-bom@^3.0.0: 2168 | version "3.0.0" 2169 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2170 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2171 | 2172 | strip-json-comments@^3.0.1: 2173 | version "3.0.1" 2174 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 2175 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 2176 | 2177 | supports-color@^5.3.0: 2178 | version "5.5.0" 2179 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2180 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2181 | dependencies: 2182 | has-flag "^3.0.0" 2183 | 2184 | supports-color@^6.1.0: 2185 | version "6.1.0" 2186 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 2187 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 2188 | dependencies: 2189 | has-flag "^3.0.0" 2190 | 2191 | table@^5.2.3: 2192 | version "5.4.6" 2193 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 2194 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 2195 | dependencies: 2196 | ajv "^6.10.2" 2197 | lodash "^4.17.14" 2198 | slice-ansi "^2.1.0" 2199 | string-width "^3.0.0" 2200 | 2201 | terser@^4.1.0: 2202 | version "4.8.1" 2203 | resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" 2204 | integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== 2205 | dependencies: 2206 | commander "^2.20.0" 2207 | source-map "~0.6.1" 2208 | source-map-support "~0.5.12" 2209 | 2210 | text-table@^0.2.0: 2211 | version "0.2.0" 2212 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2213 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2214 | 2215 | through@^2.3.6: 2216 | version "2.3.8" 2217 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2218 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2219 | 2220 | tmp@^0.0.33: 2221 | version "0.0.33" 2222 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2223 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2224 | dependencies: 2225 | os-tmpdir "~1.0.2" 2226 | 2227 | to-fast-properties@^2.0.0: 2228 | version "2.0.0" 2229 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2230 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2231 | 2232 | trim-right@^1.0.1: 2233 | version "1.0.1" 2234 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2235 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 2236 | 2237 | tslib@^1.9.0: 2238 | version "1.10.0" 2239 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 2240 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 2241 | 2242 | type-check@~0.3.2: 2243 | version "0.3.2" 2244 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2245 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2246 | dependencies: 2247 | prelude-ls "~1.1.2" 2248 | 2249 | unicode-canonical-property-names-ecmascript@^1.0.4: 2250 | version "1.0.4" 2251 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 2252 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 2253 | 2254 | unicode-match-property-ecmascript@^1.0.4: 2255 | version "1.0.4" 2256 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 2257 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 2258 | dependencies: 2259 | unicode-canonical-property-names-ecmascript "^1.0.4" 2260 | unicode-property-aliases-ecmascript "^1.0.4" 2261 | 2262 | unicode-match-property-value-ecmascript@^1.1.0: 2263 | version "1.1.0" 2264 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" 2265 | integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== 2266 | 2267 | unicode-property-aliases-ecmascript@^1.0.4: 2268 | version "1.0.5" 2269 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" 2270 | integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== 2271 | 2272 | uri-js@^4.2.2: 2273 | version "4.2.2" 2274 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2275 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2276 | dependencies: 2277 | punycode "^2.1.0" 2278 | 2279 | v8-compile-cache@^2.0.3: 2280 | version "2.1.0" 2281 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2282 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 2283 | 2284 | validate-npm-package-license@^3.0.1: 2285 | version "3.0.4" 2286 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2287 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2288 | dependencies: 2289 | spdx-correct "^3.0.0" 2290 | spdx-expression-parse "^3.0.0" 2291 | 2292 | vlq@^0.2.2: 2293 | version "0.2.3" 2294 | resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" 2295 | integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== 2296 | 2297 | which@^1.2.9: 2298 | version "1.3.1" 2299 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2300 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2301 | dependencies: 2302 | isexe "^2.0.0" 2303 | 2304 | wordwrap@~1.0.0: 2305 | version "1.0.0" 2306 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2307 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 2308 | 2309 | wrappy@1: 2310 | version "1.0.2" 2311 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2312 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2313 | 2314 | write@1.0.3: 2315 | version "1.0.3" 2316 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 2317 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 2318 | dependencies: 2319 | mkdirp "^0.5.1" 2320 | --------------------------------------------------------------------------------