From 27f8941a4068acde1cd45fd1c7b93f60cae9e754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lax=20de=20Carvalho=20Alves?= Date: Thu, 15 Aug 2019 16:59:45 -0300 Subject: [PATCH] Upgrading to Rails 5.2.3 (#891) * Configurations update for rails 4.0 * ActiveSupport::Testing::Performance extracted to a gem * ruby prof required as a dependency * disable rubocop on bin folder * http patch * Comment out to allow testing * no longer supports plugin loading * lock to sprockets 2.12 * Active record patches * remove deprecated test syntax * fix failing tests * change new super class * replace right_aws with right_aws_api right_aws is no longer maintained, was throwing an error * lock to rails 4.2.11.1 * change rails version in install script * remove deprecation warnings * Change test lib to minitest, add minitest reporters * make app work * active record find patches * root_in_json include defaulted to false * confirm option removed in link helper * cookies serializer changed to hybrid * Change render :text to :plain render :text will be deprecated and poses a security risk * console for dev web * Check and fix interface functionality * fix export functionality * add protected attributes for the warpable model * fix image upload * Fix comments and images failing tests * include mass assignment security in annotations * render html for update images * clear mail array before every test * Fix codeclimate issues * skip failing test The test is failing because of different names in model(warpable) and controller(images) skipping this for now until we decide if we want to standardize the names * replace unprotected redirects * Fix codeclimate issues * Autofixing rubocop offenses and Problematic test for #578 (#667) * Autofixing rubocop offenses * Adding Rubocop to Travis pipelines and development branch * Fixing maps controller test * Fixing remaining offenses * change post test to create since action new is a get action * remove unprotected redirects * Fix codeclimate issues * Add yarn * Remove error log * Fix oauth icons * Modify package.json * Add yarn install to start.sh * Add leaflet google * Remove leaflet-google from package json * remove passenger error logs * Fix install script * Remove flag * Fix gemfile.lock * Fix gemfile.lock * Fix login * Upgrade Gemfile to Rails 5.0 * require rake' * Change config files * Add application record * Bump mysql * Local builds for Travis runners (#672) * Using local mysql for travis * Fix codeclimate issues * Refactoring yamls * Autofixing rubocop offenses and Problematic test for #578 (#667) * Autofixing rubocop offenses * Adding Rubocop to Travis pipelines and development branch * Fixing maps controller test * Fixing remaining offenses * Fixing unit tests * Adding docker build to travis pipelines * Adding docker build to travis pipelines * Staging builds in travis * fix travis.yml * Upgrading sintax of assets and using required gems * Using updated version of GDAL and installing required dependencies * Enabling cache in between builds * Test yarn for travis * Conditionalize rake db:setup for travis * Add semicolon * Remove comment * modify database.yml * Migrate seperately * Run create only for production * Locking newer Rails v * Running update task * Adding missing bootsnap gem * Fixing missing database * Adding missing listen gem * Fixing schema example version * Fixing migration versions * Updating dependencies for Rails 5 * Adding ApplicationMailer abstraction * Adding required initializers * Prefer require_relative instead of full path * Making associations not required by default * Regenerating schema file * Hotfixing MassAssigment * Upgrade web-console, remove mysql adapter override * Remove attr_accessible * Add rails-controller-testing gem * Follow new syntax for tests * Remove extra web-console from gemfile * Regenerating lock file * Fixing rubocop offenses and bundler version * Using correct Paperclip class as in https://github.com/rails/rails/issues/26404#issuecomment-502129936 * Fix images functional tests * images controller test typecast to string * Fix rails logger * Fix map tests * Bumping rubocop version * Autofixing rubocop offenses * Including performance cop to rubocop * Refactoring deprecated routing and secret_token * Fixing routes for feed controller * Using correct routes for RSS builder * Fixing missing routes * Fixing travis bundler and yarn cache * Fixing bundle path * Splitting bundle and yarn verifications * Autofixing rubocop offenses * Fixing prod host for travis, private class usage and rubocop offenses * Upgrade to Rails 5.2 (#685) * Upgrade Gemfile to Rails 5.0 * require rake' * Change config files * Add application record * Bump mysql * Locking newer Rails v * Running update task * Adding missing bootsnap gem * Fixing missing database * Adding missing listen gem * Fixing schema example version * Fixing migration versions * Updating dependencies for Rails 5 * Adding ApplicationMailer abstraction * Adding required initializers * Prefer require_relative instead of full path * Making associations not required by default * Regenerating schema file * Hotfixing MassAssigment * Upgrade web-console, remove mysql adapter override * Remove attr_accessible * Add rails-controller-testing gem * Follow new syntax for tests * Remove extra web-console from gemfile * Regenerating lock file * Fixing rubocop offenses and bundler version * Using correct Paperclip class as in https://github.com/rails/rails/issues/26404#issuecomment-502129936 * Fix images functional tests * images controller test typecast to string * Fix rails logger * Fix map tests * Bumping rubocop version * Autofixing rubocop offenses * Including performance cop to rubocop * Refactoring deprecated routing and secret_token * Fixing routes for feed controller * Using correct routes for RSS builder * Fixing missing routes * Fixing travis bundler and yarn cache * Fixing bundle path * Splitting bundle and yarn verifications * Fixing prod host for travis, private class usage and rubocop offenses * Enforcing params usage on get method * Using correct folder names to Rails >5 conventions * Enforcing params wrapping and adding missing front_ui route * Precompiling assets before serving * Improving Jenkins startup script * Using supported docker yaml version by Jenkins * Adding task to check database existance * Improving start script * Improving Makefile's recipes and target * Adding task to check database existance * Improving start script * Improving Makefile's recipes and target * Improving Makefile's recipes and target * Patching https://github.com/publiclab/mapknitter/pull/803 * Improving Jenkins setup * Fix map loading * h * Fixing Leaflet-Environmental-Layers map loading * h * leaflet * fix * change * updates * stop precompiling assets * precompile * Using correct Yarn, NPM and Node version, avoiding mismatch * Removing unwanted tags.js invocation * Improving Makefile recipe * Using node_modules/ as dependencies folder, since https://github.com/sass/node-sass/issues/2050#issuecomment-317233552 * Upgrading Yarn dependencies * Removing duplicate rubocop directive * Removing test/ from codeclimate checks * Removing fixed FIXME comments * Removing fixed FIXME comments * Updating docs in README * Bumping recaptcha and include methods * Fixing migration version * Using strong params in requests * Using strong params in requests * Use Rack::Test::UploadedFile instead of ActionDispatch::Http::UploadedFile * Remove rubocop linter * Fix codeclimate issues * Fix minor asset issue * Remove manual asset references and add them to application js * Fix asset ordering in application.js * Configure System tests (#936) * Add new system tests and fix minor asset loading * modify test * Add chromedriver to travis * Add sudo * Add dependencies to dockerfile * Properly installing chrome and chromedriver * Fixing Map loading since merges --- .bowerrc | 3 - .codeclimate.yml | 3 +- .gitignore | 8 +- .rubocop.yml | 3 + .simplecov | 1 + .travis.yml | 47 +- .yarnrc | 1 - Dockerfile | 19 +- Gemfile | 67 +- Gemfile.lock | 276 +- Makefile | 20 +- README.md | 10 +- Rakefile | 4 +- .../javascripts/annotations-embed-legacy.js | 4 - app/assets/javascripts/annotations.js | 5 - app/assets/javascripts/application.js | 47 +- app/assets/javascripts/knitter.js | 764 ++-- .../javascripts/mapknitter/Annotations.js | 4 +- app/assets/javascripts/mapknitter/Map.js | 6 +- app/assets/javascripts/maps.js | 1 + app/assets/stylesheets/application.scss | 1 + app/controllers/annotations_controller.rb | 10 +- app/controllers/application_controller.rb | 2 +- app/controllers/export_controller.rb | 2 +- app/controllers/feeds_controller.rb | 2 +- app/controllers/front_ui_controller.rb | 10 +- app/controllers/images_controller.rb | 4 +- app/controllers/maps_controller.rb | 4 +- app/controllers/tags_controller.rb | 2 +- app/controllers/users_controller.rb | 2 +- app/helpers/application_helper.rb | 4 +- app/mailers/application_mailer.rb | 4 + app/mailers/comment_mailer.rb | 2 +- app/models/annotation.rb | 9 +- app/models/application_record.rb | 3 + app/models/comment.rb | 6 +- app/models/export.rb | 10 +- app/models/map.rb | 22 +- app/models/node.rb | 4 +- app/models/tag.rb | 6 +- app/models/user.rb | 5 +- app/models/warpable.rb | 21 +- app/models/way.rb | 2 +- app/views/feeds/all.builder | 2 +- app/views/feeds/author.builder | 2 +- app/views/feeds/clean.builder | 2 +- app/views/feeds/license.builder | 2 +- app/views/feeds/tag.builder | 2 +- app/views/front_ui/index.html.erb | 20 +- app/views/layouts/_login.html.erb | 6 +- app/views/layouts/knitter2.html.erb | 5 - app/views/layouts/mailer.html.erb | 8 + app/views/layouts/mailer.text.erb | 1 + app/views/map/_leaflet.html.erb | 1 - app/views/map/leaflet.html.erb | 5 +- app/views/maps/index.html.erb | 237 +- app/views/maps/show.html.erb | 2 +- app/views/tags/index.html.erb | 15 +- bin/bundle | 2 +- bin/rails | 2 +- bin/setup | 33 +- bin/update | 31 + bin/yarn | 11 + config.ru | 2 +- config/application.rb | 10 +- config/boot.rb | 5 +- config/cable.yml | 10 + config/database.yml.example | 6 +- config/environment.rb | 4 +- config/environments/development.rb | 63 +- config/environments/production.rb | 62 +- config/environments/test.rb | 19 +- ...e_record_belongs_to_required_by_default.rb | 1 + .../application_controller_renderer.rb | 8 + config/initializers/assets.rb | 35 +- config/initializers/column_definition.rb | 14 +- .../initializers/content_security_policy.rb | 25 + config/initializers/cookies_serializer.rb | 2 + config/initializers/duration.rb | 48 - .../new_framework_defaults_5_2.rb | 38 + config/initializers/recaptcha.rb.example | 3 +- config/initializers/secret_token.rb | 2 +- config/initializers/wrap_parameters.rb | 6 +- config/locales/en.yml | 10 + config/routes.rb | 141 +- config/spring.rb | 6 + config/storage.yml | 34 + db/migrate/20090309034933_create_tweets.rb | 2 +- db/migrate/20090309220337_create_messages.rb | 2 +- db/migrate/20090323162902_add_message_id.rb | 2 +- db/migrate/20090605191716_create_nodes.rb | 2 +- db/migrate/20090605201606_create_ways.rb | 2 +- db/migrate/20090611170805_create_sms.rb | 2 +- ...20090611204112_add_name_desc_nodes_ways.rb | 2 +- .../20090611205227_change_lat_lon_types.rb | 2 +- db/migrate/20090612011846_add_way_complete.rb | 2 +- db/migrate/20091016214109_create_maps.rb | 2 +- db/migrate/20100301013330_create_warpables.rb | 2 +- db/migrate/20100306184916_add_map_id.rb | 2 +- ...100308193343_add_map_description_author.rb | 2 +- db/migrate/20100310191643_add_warper_data.rb | 2 +- db/migrate/20100316142953_zoom_to_float.rb | 2 +- db/migrate/20100330233734_add_location.rb | 2 +- .../20100404061203_add_warpable_lock.rb | 2 +- .../20100505153420_add_warpable_deleted.rb | 2 +- db/migrate/20100531175725_create_warps.rb | 2 +- db/migrate/20100614190507_add_warp_map_id.rb | 2 +- .../20100709061039_add_static_data_maps.rb | 2 +- ...00731141421_add_warps_additional_fields.rb | 2 +- .../20101014151404_add_vectors_tiles.rb | 2 +- .../20110701105813_change_map_tile_default.rb | 2 +- ...0110813004143_change_map_vector_default.rb | 2 +- ..._knitter_add_map_archive_and_user_email.rb | 2 +- ...1005211631_add_zip_warpable_res_history.rb | 2 +- db/migrate/20111006153011_add_map_tile_url.rb | 2 +- .../20120104164144_add_export_type_bands.rb | 2 +- db/migrate/20120229164021_add_license.rb | 2 +- db/migrate/20120525201148_create_users.rb | 2 +- .../20120525215158_add_user_role_default.rb | 2 +- ...0120601185008_remove_identity_url_limit.rb | 2 +- db/migrate/20120701165519_create_tags.rb | 2 +- db/migrate/20130113164917_add_node_map_id.rb | 2 +- db/migrate/20130124160539_add_way_order.rb | 2 +- .../20130128184718_add_node_and_way_body.rb | 2 +- ...5202555_add_map_anonymously_annotatable.rb | 2 +- db/migrate/20140811184901_add_tag_index.rb | 2 +- db/migrate/20140811185342_create_comments.rb | 2 +- .../20140902182631_create_annotations.rb | 2 +- .../20140902201706_rename_annotation_type.rb | 2 +- .../20141103164503_change_warpable_columns.rb | 2 +- ...41104184417_change_openid_identity_urls.rb | 2 +- .../20150117041411_add_slug_field_to_maps.rb | 2 +- ...urrent_values_in_map_name_to_slug_field.rb | 2 +- db/migrate/20150715162314_change_map_null.rb | 2 +- ...0190420025012_add_remote_url_to_exports.rb | 2 +- db/migrate/20190715092943_create_versions.rb | 2 +- db/schema.rb | 161 + db/schema.rb.example | 223 +- docker-compose.yml | 2 +- lib/exporter-deps.sh | 26 + lib/tasks/db.rake | 19 + lib/tasks/test_unit.rake | 112 - mapknitter.env | 1 + package.json | 8 +- start.sh | 17 +- test/application_system_test_case.rb | 7 + test/{functional => controllers}/.gitkeep | 0 .../annotations_controller_test.rb | 8 +- .../comments_controller_test.rb | 48 +- .../export_controller_test.rb | 24 +- .../feeds_controller_test.rb | 14 +- .../front_ui_controller_test.rb | 0 .../images_controller_test.rb | 30 +- .../maps_controller_test.rb | 68 +- .../sessions_controller_test.rb | 4 +- .../tags_controller_test.rb | 10 +- .../users_controller_test.rb | 2 +- .../utility_controller_test.rb | 11 +- test/{unit => models}/.gitkeep | 0 test/{unit => models}/annotation_test.rb | 0 test/{unit => models}/comment_test.rb | 0 test/{unit => models}/export_test.rb | 0 test/{unit => models}/exporter_test.rb | 0 .../helpers/front_ui_helper_test.rb | 0 test/{unit => models}/map_test.rb | 0 test/{unit => models}/node_test.rb | 0 test/{unit => models}/tag_test.rb | 0 test/{unit => models}/user_test.rb | 7 +- test/{unit => models}/warpable_test.rb | 0 test/system/searches_test.rb | 11 + test/test_helper.rb | 6 +- vendor/assets/javascripts/leaflet-fullHash.js | 200 + yarn.lock | 3622 ++++++++++++++++- 173 files changed, 5539 insertions(+), 1573 deletions(-) delete mode 100644 .bowerrc delete mode 100644 .yarnrc delete mode 100644 app/assets/javascripts/annotations-embed-legacy.js delete mode 100644 app/assets/javascripts/annotations.js create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/application_record.rb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb create mode 100755 bin/update create mode 100755 bin/yarn create mode 100644 config/cable.yml create mode 100644 config/initializers/active_record_belongs_to_required_by_default.rb create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/content_security_policy.rb delete mode 100644 config/initializers/duration.rb create mode 100644 config/initializers/new_framework_defaults_5_2.rb create mode 100644 config/spring.rb create mode 100644 config/storage.yml create mode 100644 db/schema.rb create mode 100644 lib/tasks/db.rake delete mode 100644 lib/tasks/test_unit.rake create mode 100644 test/application_system_test_case.rb rename test/{functional => controllers}/.gitkeep (100%) rename test/{functional => controllers}/annotations_controller_test.rb (95%) rename test/{functional => controllers}/comments_controller_test.rb (87%) rename test/{functional => controllers}/export_controller_test.rb (84%) rename test/{functional => controllers}/feeds_controller_test.rb (78%) rename test/{functional => controllers}/front_ui_controller_test.rb (100%) rename test/{functional => controllers}/images_controller_test.rb (76%) rename test/{functional => controllers}/maps_controller_test.rb (84%) rename test/{functional => controllers}/sessions_controller_test.rb (97%) rename test/{functional => controllers}/tags_controller_test.rb (75%) rename test/{functional => controllers}/users_controller_test.rb (92%) rename test/{functional => controllers}/utility_controller_test.rb (71%) rename test/{unit => models}/.gitkeep (100%) rename test/{unit => models}/annotation_test.rb (100%) rename test/{unit => models}/comment_test.rb (100%) rename test/{unit => models}/export_test.rb (100%) rename test/{unit => models}/exporter_test.rb (100%) rename test/{unit => models}/helpers/front_ui_helper_test.rb (100%) rename test/{unit => models}/map_test.rb (100%) rename test/{unit => models}/node_test.rb (100%) rename test/{unit => models}/tag_test.rb (100%) rename test/{unit => models}/user_test.rb (95%) rename test/{unit => models}/warpable_test.rb (100%) create mode 100644 test/system/searches_test.rb create mode 100644 vendor/assets/javascripts/leaflet-fullHash.js diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 5ad6204a4..000000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "./public/lib" -} diff --git a/.codeclimate.yml b/.codeclimate.yml index 7922fef22..e5b31b3e7 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -17,8 +17,6 @@ plugins: enabled: true fixme: enabled: true - rubocop: - enabled: true exclude_patterns: - config/ @@ -26,5 +24,6 @@ exclude_patterns: - vendor/ - log/ - bin/ +- test/ diff --git a/.gitignore b/.gitignore index e8a036c5b..5c03ac56c 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ public/warpables/* public/system/* public/warps/* public/tms/* +public/lib/* db/schema.rb *.db config/database.yml @@ -36,8 +37,7 @@ vendor/bundle app/assets/bower_components app/assets/node_modules public/assets -public/lib -node_modules +node_modules/ todo.txt .sass-cache .byebug_history @@ -45,4 +45,6 @@ coverage_report/ test/reports/ yarn-error.log yarn.lock -.idea/ \ No newline at end of file +.idea/ +passenger.3000.pid +passenger.3000.pid.lock diff --git a/.rubocop.yml b/.rubocop.yml index 709769f4d..7312570cd 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,3 +1,5 @@ +require: rubocop-performance + # Start with Spotifys style guide as a base then customize from there inherit_from: - .rubocop_shopify_styleguide.yml @@ -11,6 +13,7 @@ AllCops: - '/config.ru' Exclude: - 'vendor/*' + - 'node_modules/**/*' - 'spec/**/*' - 'bin/*' - 'doc/*' diff --git a/.simplecov b/.simplecov index 78a8a5dbd..8e319c72c 100644 --- a/.simplecov +++ b/.simplecov @@ -10,4 +10,5 @@ SimpleCov.start 'rails' do add_filter '/vendor/' add_filter '/log/' add_filter '/tmp/' + add_filter '/node_modules/' end diff --git a/.travis.yml b/.travis.yml index 489ce2eee..cee7cba88 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,42 @@ language: ruby + rvm: - 2.4.6 +node_js: + - "12.6.0" + services: - mysql - docker cache: directories: - - $PWD/public/lib/ + - $PWD/node_modules/ - $PWD/vendor/.bundle/ +before_install: + - npm i -g npm@6.9.0 + - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.17.3 + - export PATH="$HOME/.yarn/bin:$PATH" + install: - cp config/database.yml.example config/database.yml - cp config/config.yml.example config/config.yml - cp db/schema.rb.example db/schema.rb - ./lib/exporter-deps.sh > /dev/null 2>&1 - bundle check --path vendor/.bundle/ || bundle install --path vendor/.bundle/ - - yarn check || yarn install - - bundle exec rake db:setup || bundle exec rake db:migrate + - if [ $RAILS_ENV != 'production' ]; then + yarn check || yarn install; + fi + - if [ $RAILS_ENV == 'production' ]; then + mysql -e "CREATE DATABASE mapknitter;"; + mysql -e "CREATE USER 'mapknitter'@'%' IDENTIFIED BY 'mapknitter';"; + mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'mapknitter'@'%';"; + bundle exec rails db:schema:load; + else + bundle exec rails db:setup || bundle exec rails db:migrate; + fi env: global: @@ -28,25 +46,26 @@ env: jobs: include: - - name: "Unit Tests" - script: bundle exec rake test:unit + - name: "Models Tests" + script: bundle exec rails test:models - name: "Integration Tests" - script: bundle exec rake test:integration - - name: "Functional Tests" - script: bundle exec rake test:functional + script: bundle exec rails test:integration + - name: "Controllers Tests" + script: bundle exec rails test:controllers + - name: "System Tests" + script: bundle exec rails test:system - name: "Rubocop Linter" script: bundle exec rubocop - name: "Docker Builds" script: docker build -t mapknitter . - # Configure this option after full yarn setup - # - name: "Asset Precompilation" - # env: - # - RAILS_ENV=production - # script: bundle exec rake assets:precompile + - name: "Asset Precompilation" + env: + - RAILS_ENV=production + script: + - bundle exec rails assets:precompile branches: only: - main - unstable - development - diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 8a5f0bbba..000000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ - --install.modules-folder "./public/lib" diff --git a/Dockerfile b/Dockerfile index c7a01100a..cbd055b5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,16 +14,33 @@ RUN echo "deb http://packages.laboratoriopublico.org/publiclab/ stretch main" > COPY sysadmin.publiclab.key /app/sysadmin.publiclab.key RUN apt-key add /app/sysadmin.publiclab.key -# Install dependencies +# Install dependencies for Mapknitter RUN apt-get update -qq && apt-get install -y \ nodejs gdal-bin curl procps git imagemagick python-gdal zip +# Install dependencies for system tests +RUN apt-get -y install fonts-liberation libappindicator3-1 libasound2 \ + libatk-bridge2.0-0 libatspi2.0-0 libgtk-3-0 libnspr4 \ + libnss3 libx11-xcb1 libxss1 libxtst6 lsb-release xdg-utils && \ + wget https://github.com/webnicer/chrome-downloads/raw/master/x64.deb/google-chrome-stable_75.0.3770.142-1_amd64.deb \ + -O google-chrome.deb && \ + dpkg -i google-chrome.deb && \ + apt-get -fy install && \ + wget https://chromedriver.storage.googleapis.com/74.0.3729.6/chromedriver_linux64.zip && \ + unzip chromedriver_linux64.zip && \ + mv chromedriver /usr/local/bin/chromedriver && \ + chmod +x /usr/local/bin/chromedriver + # Configure ImageMagick COPY ./nolimit.xml /etc/ImageMagick-6/policy.xml RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt-get install -y npm RUN npm install -g yarn +# See https://github.com/instructure/canvas-lms/issues/1404#issuecomment-461023483 and +# https://github.com/publiclab/mapknitter/pull/803 +RUN git config --global url."https://".insteadOf git:// + # Install bundle of gems # Add the Rails app COPY . /app/ diff --git a/Gemfile b/Gemfile index d3426d697..4b886186a 100644 --- a/Gemfile +++ b/Gemfile @@ -1,55 +1,60 @@ -source "https://rubygems.org" +source 'https://rubygems.org' ruby '2.4.6' -gem 'rails', '4.2.11.1' -gem 'rake', '~> 12.3.3' +gem 'rails', '~> 5.2.3' +gem 'rake', '~> 12.3.2' gem 'tzinfo-data' gem 'skylight' -gem "will_paginate", "3.1.7" -gem 'will_paginate-bootstrap4' -gem "friendly_id" +gem 'will_paginate', '3.1.7' +gem 'will_paginate-bootstrap4', '~> 0.2.2' +gem 'friendly_id' gem 'popper_js', '~> 1.11', '>= 1.11.1' -gem 'protected_attributes' gem 'paper_trail' # dependencies group :dependencies do gem 'mysql2', '< 0.6' - gem "geokit-rails", "1.1.4" + gem 'geokit-rails', '1.1.4' gem 'image_science', '1.3.0' - gem "recaptcha", :require => "recaptcha/rails" - gem "oa-openid", "0.3.2" - gem "ruby-openid", "~>2.5" - gem "open_id_authentication" - gem "RubyInline" - gem "paperclip", "~>4.3.7" + gem 'recaptcha', '~> 5.0.0', require: 'recaptcha/rails' + gem 'oa-openid', '0.3.2' + gem 'ruby-openid', '~>2.5' + gem 'open_id_authentication' + gem 'RubyInline', '~> 3.12.4' + gem 'paperclip', '~> 6.1.0' + gem 'bootsnap', '~> 1.4.4' + gem 'turbolinks', '~> 5' + gem 'mini_magick', '~> 4.8' # if you use amazon s3 for warpable image storage gem 'aws-sdk', '~> 1.5.7' # for rake image migration tasks # gem 'right_aws' - gem 'right_aws_api' + gem 'right_aws_api', '~> 0.3.5' # compiling markdown to html - gem "rdiscount", "2.2.0.1" + gem 'rdiscount', '2.2.0.1' # asset pipelining gem 'bootstrap-sass' gem 'sassc-rails' gem 'jquery-rails' - gem "sprockets" + gem 'sprockets', '3.7.2' gem "sprockets-rails" - gem "sass", :require => 'sass' - gem "autoprefixer-rails" - gem "uglifier" + gem 'sass', require: 'sass' + gem 'autoprefixer-rails', '~> 9.5.1.1' + gem 'uglifier', '~> 4.1.20' + end group :test do - gem 'rubocop', '~> 0.52.0' + gem 'rubocop', '~> 0.70.0' + gem 'rubocop-performance' gem 'ruby-prof' gem 'rails-perftest' + gem 'rails-controller-testing' gem 'simplecov', require: false gem 'codecov', require: false gem 'minitest' @@ -57,25 +62,31 @@ group :test do end group :development, :test do - gem "byebug" - gem 'faker' - gem 'pry-rails' + gem 'capybara' + gem 'puma' + gem 'selenium-webdriver' + gem 'byebug', '~> 11.0.1', platforms: [:mri, :mingw, :x64_mingw] + gem 'faker', '~> 1.9.3' + gem 'pry-rails', '~> 0.3.9' end group :development do - gem "jshintrb" - gem "therubyracer" + gem 'jshintrb', '~> 0.3.0' + gem 'mini_racer', platforms: :ruby + gem 'listen', '~> 3.1.5' gem 'web-console', '~> 3.3' + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' end group :sqlite do # if you decide to use sqlite3 as the database - gem "sqlite3" + gem 'sqlite3' end group :passenger do # passenger server - gem "passenger" + gem 'passenger' end gem 'httparty' diff --git a/Gemfile.lock b/Gemfile.lock index d37e1c858..f00fe5dda 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,58 +4,78 @@ GEM RubyInline (3.12.4) ZenTest (~> 4.3) ZenTest (4.11.2) - actionmailer (4.2.11.1) - actionpack (= 4.2.11.1) - actionview (= 4.2.11.1) - activejob (= 4.2.11.1) + actioncable (5.2.3) + actionpack (= 5.2.3) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.3) + actionpack (= 5.2.3) + actionview (= 5.2.3) + activejob (= 5.2.3) mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.11.1) - actionview (= 4.2.11.1) - activesupport (= 4.2.11.1) - rack (~> 1.6) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.5) + rails-dom-testing (~> 2.0) + actionpack (5.2.3) + actionview (= 5.2.3) + activesupport (= 5.2.3) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.11.1) - activesupport (= 4.2.11.1) + actionview (5.2.3) + activesupport (= 5.2.3) builder (~> 3.1) - erubis (~> 2.7.0) - rails-dom-testing (~> 1.0, >= 1.0.5) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (4.2.11.1) - activesupport (= 4.2.11.1) - globalid (>= 0.3.0) - activemodel (4.2.11.1) - activesupport (= 4.2.11.1) - builder (~> 3.1) - activerecord (4.2.11.1) - activemodel (= 4.2.11.1) - activesupport (= 4.2.11.1) - arel (~> 6.0) - activesupport (4.2.11.1) - i18n (~> 0.7) + activejob (5.2.3) + activesupport (= 5.2.3) + globalid (>= 0.3.6) + activemodel (5.2.3) + activesupport (= 5.2.3) + activerecord (5.2.3) + activemodel (= 5.2.3) + activesupport (= 5.2.3) + arel (>= 9.0) + activestorage (5.2.3) + actionpack (= 5.2.3) + activerecord (= 5.2.3) + marcel (~> 0.3.1) + activesupport (5.2.3) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + addressable (2.6.0) + public_suffix (>= 2.0.2, < 4.0) ansi (1.5.0) - arel (6.0.4) + arel (9.0.0) ast (2.4.0) - autoprefixer-rails (9.6.1) + autoprefixer-rails (9.5.1.1) execjs aws-sdk (1.5.8) httparty (~> 0.7) json (~> 1.4) nokogiri (>= 1.4.4) uuidtools (~> 2.1) + bindex (0.8.1) + bootsnap (1.4.4) + msgpack (~> 1.0) bootstrap-sass (3.4.1) autoprefixer-rails (>= 5.2.1) sassc (>= 2.0.0) builder (3.2.3) byebug (11.0.1) + capybara (3.28.0) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (~> 1.5) + xpath (~> 3.2) + childprocess (1.0.1) + rake (< 13.0) climate_control (0.2.0) - cocaine (0.5.8) - climate_control (>= 0.0.3, < 1.0) codecov (0.1.14) json simplecov @@ -63,9 +83,8 @@ GEM coderay (1.1.2) concurrent-ruby (1.1.5) crass (1.0.4) - debug_inspector (0.0.3) docile (1.3.2) - erubis (2.7.0) + erubi (1.8.0) execjs (2.7.0) faker (1.9.6) i18n (>= 0.7) @@ -80,10 +99,11 @@ GEM httparty (0.17.0) mime-types (~> 3.0) multi_xml (>= 0.5.2) - i18n (0.9.5) + i18n (1.6.0) concurrent-ruby (~> 1.0) image_science (1.3.0) RubyInline (~> 3.9) + jaro_winkler (1.5.3) jquery-rails (4.3.5) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) @@ -93,30 +113,41 @@ GEM multi_json (>= 1.3) rake json (1.8.6) - libv8 (3.16.14.19) + libv8 (7.3.492.27.1) libxml-ruby (3.1.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) loofah (2.2.3) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) + marcel (0.3.3) + mimemagic (~> 0.3.2) method_source (0.9.2) mime-types (3.2.2) mime-types-data (~> 3.2015) mime-types-data (3.2019.0331) - mimemagic (0.3.0) - mini_mime (1.0.1) + mimemagic (0.3.3) + mini_magick (4.9.5) + mini_mime (1.0.2) mini_portile2 (2.4.0) + mini_racer (0.2.6) + libv8 (>= 6.9.411) minitest (5.11.3) minitest-reporters (1.3.6) ansi builder minitest (>= 5.0) ruby-progressbar + msgpack (1.3.1) multi_json (1.13.1) multi_xml (0.6.0) mysql2 (0.5.2) net-http-persistent (2.9.4) + nio4r (2.4.0) nokogiri (1.10.3) mini_portile2 (~> 2.4.0) oa-core (0.3.2) @@ -126,15 +157,15 @@ GEM ruby-openid-apps-discovery (~> 1.2.0) open_id_authentication (1.3.0) rack-openid (~> 1.3) - paper_trail (10.3.0) - activerecord (>= 4.2, < 6.1) + paper_trail (10.3.1) + activerecord (>= 4.2) request_store (~> 1.1) - paperclip (4.3.7) - activemodel (>= 3.2.0) - activesupport (>= 3.2.0) - cocaine (~> 0.5.5) + paperclip (6.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) mime-types - mimemagic (= 0.3.0) + mimemagic (~> 0.3.0) + terrapin (~> 0.6.0) parallel (1.17.0) parser (2.6.3.0) ast (~> 2.4.0) @@ -142,55 +173,59 @@ GEM rack rake (>= 0.8.1) popper_js (1.14.5) - powerpack (0.1.2) - protected_attributes (1.1.4) - activemodel (>= 4.0.1, < 5.0) pry (0.12.2) coderay (~> 1.1.0) method_source (~> 0.9.0) pry-rails (0.3.9) pry (>= 0.10.4) - rack (1.6.11) + public_suffix (3.1.1) + puma (4.1.0) + nio4r (~> 2.0) + rack (2.0.7) rack-openid (1.3.1) rack (>= 1.1.0) ruby-openid (>= 2.1.8) - rack-test (0.6.3) - rack (>= 1.0) - rails (4.2.11.1) - actionmailer (= 4.2.11.1) - actionpack (= 4.2.11.1) - actionview (= 4.2.11.1) - activejob (= 4.2.11.1) - activemodel (= 4.2.11.1) - activerecord (= 4.2.11.1) - activesupport (= 4.2.11.1) - bundler (>= 1.3.0, < 2.0) - railties (= 4.2.11.1) - sprockets-rails - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.9) - activesupport (>= 4.2.0, < 5.0) - nokogiri (~> 1.6) - rails-deprecated_sanitizer (>= 1.0.1) - rails-html-sanitizer (1.0.4) + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (5.2.3) + actioncable (= 5.2.3) + actionmailer (= 5.2.3) + actionpack (= 5.2.3) + actionview (= 5.2.3) + activejob (= 5.2.3) + activemodel (= 5.2.3) + activerecord (= 5.2.3) + activestorage (= 5.2.3) + activesupport (= 5.2.3) + bundler (>= 1.3.0) + railties (= 5.2.3) + sprockets-rails (>= 2.0.0) + rails-controller-testing (1.0.4) + actionpack (>= 5.0.1.x) + actionview (>= 5.0.1.x) + activesupport (>= 5.0.1.x) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.1.0) loofah (~> 2.2, >= 2.2.2) rails-perftest (0.0.7) - railties (4.2.11.1) - actionpack (= 4.2.11.1) - activesupport (= 4.2.11.1) + railties (5.2.3) + actionpack (= 5.2.3) + activesupport (= 5.2.3) + method_source rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) + thor (>= 0.19.0, < 2.0) rainbow (3.0.0) rake (12.3.3) rb-fsevent (0.10.3) rb-inotify (0.10.0) ffi (~> 1.0) rdiscount (2.2.0.1) - recaptcha (4.14.0) + recaptcha (5.0.0) json - redcarpet (3.4.0) - ref (2.0.0) + redcarpet (3.5.0) + regexp_parser (1.6.0) request_store (1.4.1) rack (>= 1.4) right_aws_api (0.3.5) @@ -201,19 +236,23 @@ GEM net-http-persistent (~> 2.9) redcarpet (>= 3.0.0) ruby-hmac (>= 0.4.0) - rubocop (0.52.1) + rubocop (0.70.0) + jaro_winkler (~> 1.5.1) parallel (~> 1.10) - parser (>= 2.4.0.2, < 3.0) - powerpack (~> 0.1) + parser (>= 2.6) rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) + unicode-display_width (>= 1.4.0, < 1.7) + rubocop-performance (1.3.0) + rubocop (>= 0.68.0) ruby-hmac (0.4.0) ruby-openid (2.7.0) ruby-openid-apps-discovery (1.2.0) ruby-openid (>= 2.1.7) - ruby-prof (0.18.0) + ruby-prof (1.0.0) ruby-progressbar (1.10.1) + ruby_dep (1.5.0) + rubyzip (1.2.3) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -228,7 +267,10 @@ GEM sprockets (> 3.0) sprockets-rails tilt - simplecov (0.16.1) + selenium-webdriver (3.142.3) + childprocess (>= 0.5, < 2.0) + rubyzip (~> 1.2, >= 1.2.2) + simplecov (0.17.0) docile (~> 1.1) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) @@ -237,6 +279,10 @@ GEM skylight-core (= 4.1.2) skylight-core (4.1.2) activesupport (>= 4.2.0) + spring (2.1.0) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -245,12 +291,14 @@ GEM activesupport (>= 4.0) sprockets (>= 3.0.0) sqlite3 (1.4.1) - therubyracer (0.12.3) - libv8 (~> 3.16.14.15) - ref + terrapin (0.6.0) + climate_control (>= 0.0.3, < 1.0) thor (0.20.3) thread_safe (0.3.6) tilt (2.0.9) + turbolinks (5.2.0) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) tzinfo (1.2.5) thread_safe (~> 0.1) tzinfo-data (1.2019.2) @@ -260,64 +308,80 @@ GEM unicode-display_width (1.6.0) url (0.3.2) uuidtools (2.1.5) - web-console (3.3.0) - activemodel (>= 4.2) - debug_inspector - railties (>= 4.2) + web-console (3.7.0) + actionview (>= 5.0) + activemodel (>= 5.0) + bindex (>= 0.4.0) + railties (>= 5.0) + websocket-driver (0.7.1) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.4) will_paginate (3.1.7) will_paginate-bootstrap4 (0.2.2) will_paginate (~> 3.0, >= 3.0.0) + xpath (3.2.0) + nokogiri (~> 1.8) PLATFORMS ruby DEPENDENCIES - RubyInline - autoprefixer-rails + RubyInline (~> 3.12.4) + autoprefixer-rails (~> 9.5.1.1) aws-sdk (~> 1.5.7) + bootsnap (~> 1.4.4) bootstrap-sass - byebug + byebug (~> 11.0.1) + capybara codecov - faker + faker (~> 1.9.3) friendly_id geokit-rails (= 1.1.4) httparty image_science (= 1.3.0) jquery-rails - jshintrb + jshintrb (~> 0.3.0) + listen (~> 3.1.5) + mini_magick (~> 4.8) + mini_racer minitest minitest-reporters mysql2 (< 0.6) oa-openid (= 0.3.2) open_id_authentication paper_trail - paperclip (~> 4.3.7) + paperclip (~> 6.1.0) passenger popper_js (~> 1.11, >= 1.11.1) - protected_attributes - pry-rails - rails (= 4.2.11.1) + pry-rails (~> 0.3.9) + puma + rails (~> 5.2.3) + rails-controller-testing rails-perftest - rake (~> 12.3.3) + rake (~> 12.3.2) rdiscount (= 2.2.0.1) - recaptcha - right_aws_api - rubocop (~> 0.52.0) + recaptcha (~> 5.0.0) + right_aws_api (~> 0.3.5) + rubocop (~> 0.70.0) + rubocop-performance ruby-openid (~> 2.5) ruby-prof sass sassc-rails + selenium-webdriver simplecov skylight - sprockets + spring + spring-watcher-listen (~> 2.0.0) + sprockets (= 3.7.2) sprockets-rails sqlite3 - therubyracer + turbolinks (~> 5) tzinfo-data - uglifier + uglifier (~> 4.1.20) web-console (~> 3.3) will_paginate (= 3.1.7) - will_paginate-bootstrap4 + will_paginate-bootstrap4 (~> 0.2.2) RUBY VERSION ruby 2.4.6p354 diff --git a/Makefile b/Makefile index a071d4400..cb85f9c30 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,29 @@ export COMPOSE_HTTP_TIMEOUT=360 +define wait_for_container + @while ! docker logs mapknitter | grep "web server started"; do\ + echo "Serving Mapknitter";\ + sleep 10;\ + done; +endef + build: cp config/database.yml.example config/database.yml cp config/amazon_s3.yml.example config/amazon_s3.yml + cp config/config.yml.example config/config.yml cp db/schema.rb.example db/schema.rb - docker-compose down --remove-orphans docker-compose build deploy-container: - docker-compose run --rm web bash -l -c "sleep 10 && bower install --allow-root && rake db:setup && rake db:migrate && rake assets:precompile" docker-compose up -d - docker-compose exec -T web bash -l -c "sleep 10 && rake db:setup && rake db:migrate && rake assets:precompile" + $(call wait_for_container) redeploy-container: + docker-compose down --remove-orphans docker-compose up --force-recreate -d - docker-compose exec -T web bash -l -c "sleep 10 && rake db:migrate && rake assets:precompile" + $(call wait_for_container) + docker exec -e DISABLE_DATABASE_ENVIRONMENT_CHECK=1 mapknitter bash -lc \ + "bundle exec rails db:drop && \ + bundle exec rails db:create && \ + bundle exec rails db:schema:load && \ + bundle exec rails db:migrate" diff --git a/README.md b/README.md index db57430a1..cf00654bb 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ You'll need Ruby v2.4.6 (use your local ruby version management system - RVM / r 2. Install gems with `bundle install` from the rails root folder. You may need to run `bundle update` if you have older gems in your environment. 3. Copy and configure config/database.yml from config/database.yml.example, using a new empty database you've created 4. Copy and configure config/config.yml from config/config.yml.example (for now, this is only for the [Google Maps API Key, which is optional](http://stackoverflow.com/questions/2769148/whats-the-api-key-for-in-google-maps-api-v3), and a path for [logging in when running locally, also optional](#Logging-in-when-running-locally)) -5. Initialize database with `bundle exec rake db:setup` +5. Initialize database with `bundle exec rails db:setup` 6. Enter ReCaptcha public and private keys in config/initializers/recaptcha.rb, copied from recaptcha.rb.example. To get keys, visit https://www.google.com/recaptcha/admin/create 7. Install static assets (like external javascript libraries, fonts) with `yarn install` 8. Start rails with `bundle exec passenger start` from the Rails root and open http://localhost:3000 in a web browser. (For some, just `passenger start` will work; adding `bundle exec` ensures you're using the version of passenger you just installed with Bundler.) @@ -217,15 +217,11 @@ u_admin.role = 'admin' When you try to run tests in MapKnitter, you can run the default Rake tasks, such as: -`rake test:units` `rake test:functionals` `rake test:integration` +`rails test:unit` `rails test:controllers` `rails test:integration` or simply: -`rake test` - -By running like this you'll see a lot of warnings and deprecation notices - FOR NOW -, but we're working on them. If you'd like a cleaner visual of your tests, you can just use our custom defined task: - -`rake test:all` +`rails test` #### Running tests of a specific file: diff --git a/Rakefile b/Rakefile index ffd116932..b3fe3d210 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,7 @@ #!/usr/bin/env rake # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. -require File.expand_path('../config/application', __FILE__) +require_relative 'config/application' # Load all the rake tasks from the "tasks" folder. task_dir = File.expand_path("../tasks", __FILE__) @@ -9,4 +9,4 @@ Dir["#{task_dir}/**/*.rake"].each do |task_file| load task_file end -Mapknitter::Application.load_tasks \ No newline at end of file +Rails.application.load_tasks \ No newline at end of file diff --git a/app/assets/javascripts/annotations-embed-legacy.js b/app/assets/javascripts/annotations-embed-legacy.js deleted file mode 100644 index cfd49c121..000000000 --- a/app/assets/javascripts/annotations-embed-legacy.js +++ /dev/null @@ -1,4 +0,0 @@ -//= require jquery/dist/jquery.js -//= require bootstrap/dist/js/bootstrap.js -//= require leaflet/dist/leaflet -//= require leaflet-providers/leaflet-providers.js diff --git a/app/assets/javascripts/annotations.js b/app/assets/javascripts/annotations.js deleted file mode 100644 index c313fa5c3..000000000 --- a/app/assets/javascripts/annotations.js +++ /dev/null @@ -1,5 +0,0 @@ -//= require leaflet-draw/dist/leaflet.draw-src.js -//= require leaflet-illustrate/dist/Leaflet.Illustrate.js -//= require mapknitter/Annotations -//= require mapknitter/Annotations.style -//= require mapknitter/Annotations.Toolbar diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 93ded20cc..4848af018 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -11,13 +11,14 @@ // GO AFTER THE REQUIRES BELOW. // -//= require leaflet/dist/leaflet-src.js -//= require jquery -//= require jquery-ujs -//= require jquery/dist/jquery.js -//= require jquery-ujs/src/rails.js -//= require jquery-ui/jquery-ui.min.js +// = require leaflet/dist/leaflet-src.js + +// = require jquery +// = require jquery-ujs +// = require jquery/dist/jquery.js +// = require jquery-ujs/src/rails.js +// = require jquery-ui/jquery-ui.min.js //= require blueimp-tmpl/js/tmpl.js //= require blueimp-file-upload/js/vendor/jquery.ui.widget @@ -25,20 +26,22 @@ //= require blueimp-file-upload/js/jquery.fileupload-process //= require blueimp-file-upload/js/jquery.fileupload-ui -//= require popper -//= require bootstrap/dist/js/bootstrap.js +// = require bootstrap/dist/js/bootstrap.js + +// = require leaflet-fullHash.js +// = require leaflet-providers/leaflet-providers.js +// = require leaflet-toolbar/dist/leaflet.toolbar.js +//= require leaflet-draw/dist/leaflet.draw-src.js +//= require leaflet-illustrate/dist/Leaflet.Illustrate.js +// = require leaflet-distortableimage/dist/leaflet.distortableimage.js +// = require leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js +// = require leaflet-environmental-layers/src/windRoseLayer.js +// = require leaflet-easybutton/src/easy-button.js +// = require sparklines/source/sparkline.js +// = require glfx-js/dist/glfx.js +// = require ion-rangeslider/js/ion.rangeSlider.js +// = require exif-js/exif.js +// = require webgl-distort/dist/webgl-distort.js +// = require mapknitter/core/Class.js -//= require leaflet-providers/leaflet-providers.js -//= require leaflet-easybutton/src/easy-button.js -//= require leaflet-toolbar/dist/leaflet.toolbar.js -//= require leaflet-draw/dist/leaflet.draw-src.js -//= require leaflet-illustrate/dist/Leaflet.Illustrate.js -//= require leaflet-distortableimage/dist/leaflet.distortableimage.js -//= require leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js -//= require leaflet-environmental-layers/src/windRoseLayer.js -//= require Google.js -//= require sparklines/source/sparkline.js -//= require glfx-js/dist/glfx.js -//= require ion-rangeslider/js/ion.rangeSlider.js -//= require exif-js/exif.js -//= require webgl-distort/dist/webgl-distort.js +// = require_tree . \ No newline at end of file diff --git a/app/assets/javascripts/knitter.js b/app/assets/javascripts/knitter.js index 7e0d6d156..56d4ca122 100644 --- a/app/assets/javascripts/knitter.js +++ b/app/assets/javascripts/knitter.js @@ -1,418 +1,420 @@ // Legacy! -var Knitter = { - // start storing a layer_type and layer_url in Map model, use it to switch this: - openlayers_on: false, - save: { - state: true, - saved: function(response) { - Knitter.save.state = true - $('save_saved').show() - $('save_saving').hide() - $('save_failed').hide() - //console.log(response) - }, - submitted: function(response) { - Knitter.save.state = "saving" - $('save_saved').hide() - $('save_saving').show() - $('save_failed').hide() - }, - failed: function(response) { - Knitter.save.state = false - $('save_saved').hide() - $('save_saving').hide() - $('save_failed').show() - //console.log(response) +jQuery(document).ready(function($) { + var Knitter = { + // start storing a layer_type and layer_url in Map model, use it to switch this: + openlayers_on: false, + save: { + state: true, + saved: function(response) { + Knitter.save.state = true + $('save_saved').show() + $('save_saving').hide() + $('save_failed').hide() + //console.log(response) + }, + submitted: function(response) { + Knitter.save.state = "saving" + $('save_saved').hide() + $('save_saving').show() + $('save_failed').hide() + }, + failed: function(response) { + Knitter.save.state = false + $('save_saved').hide() + $('save_saving').hide() + $('save_failed').show() + //console.log(response) + }, }, - }, - setup: function() { - Glop.observe('glop:predraw', function() { $C.clear();}) - // disable default "delete" key (in Chrome it goes "back") - window.addEventListener ('keydown', function (e) { - // If the key pressed was a backspace key, handle it specially - if (e.keyIdentifier == 'U+0008' || e.keyIdentifier == 'Backspace') { - // If the target of the backspace was the body element, handle it specially - if (e.target == document.body) { - // Prevent the default Backspace action from happening - e.preventDefault (); + setup: function() { + Glop.observe('glop:predraw', function() { $C.clear();}) + // disable default "delete" key (in Chrome it goes "back") + window.addEventListener ('keydown', function (e) { + // If the key pressed was a backspace key, handle it specially + if (e.keyIdentifier == 'U+0008' || e.keyIdentifier == 'Backspace') { + // If the target of the backspace was the body element, handle it specially + if (e.target == document.body) { + // Prevent the default Backspace action from happening + e.preventDefault (); + } } - } - }, true); + }, true); - var first_new_image = true - warpables.each(function(warpable,index) { - if (warpable.nodes != 'none') { - // nodes as [[lon,lat],[lon,lat]] - Warper.load_image(warpable.img,warpable.nodes,warpable.id,warpable.locked); - } else { - if (first_new_image) Warper.new_image(warpable.img,warpable.id,true); - else Warper.new_image(warpable.img,warpable.id,true) - first_new_image = false + var first_new_image = true + warpables.each(function(warpable,index) { + if (warpable.nodes != 'none') { + // nodes as [[lon,lat],[lon,lat]] + Warper.load_image(warpable.img,warpable.nodes,warpable.id,warpable.locked); + } else { + if (first_new_image) Warper.new_image(warpable.img,warpable.id,true); + else Warper.new_image(warpable.img,warpable.id,true) + first_new_image = false + } + }) + Warper.sort_images() + Knitter.center_on_warpables() + if (Config.fullscreen) { + $('header').hide() + Config.padding_top = 0 } - }) - Warper.sort_images() - Knitter.center_on_warpables() - if (Config.fullscreen) { - $('header').hide() - Config.padding_top = 0 - } - if (Config.locked == 'true') { - Warper.locked = true - } - }, - init_openlayers: function(format) { - if (format == 'WMS') { - map = new OpenLayers.Map('map', { controls: [], - projection: spher_merc, - displayProjection: spher_merc, - maxExtent: new OpenLayers.Bounds(-180,-90,180,90), - }); - } else { - map = new OpenLayers.Map('map', { controls: [], - tileOrigin: new OpenLayers.LonLat(0,0).transform(latlon,spher_merc), - units: "m", - projection: latlon, - //numZoomLevels: 22, + if (Config.locked == 'true') { + Warper.locked = true + } + }, + init_openlayers: function(format) { + if (format == 'WMS') { + map = new OpenLayers.Map('map', { controls: [], + projection: spher_merc, displayProjection: spher_merc, - maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), - //maxResolution: 156543.0339 - }); - } - Knitter.openlayers_on = true; - }, + maxExtent: new OpenLayers.Bounds(-180,-90,180,90), + }); + } else { + map = new OpenLayers.Map('map', { controls: [], + tileOrigin: new OpenLayers.LonLat(0,0).transform(latlon,spher_merc), + units: "m", + projection: latlon, + //numZoomLevels: 22, + displayProjection: spher_merc, + maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), + //maxResolution: 156543.0339 + }); + } + Knitter.openlayers_on = true; + }, - start_openlayers: function(layer,tile_url,tile_layer) { - if (layer == "none") $('map').hide() - else $('map').show() - if (!Knitter.openlayers_on) Knitter.init_openlayers(layer) - // http://isse.cr.usgs.gov/ArcGIS/services/Combined/TNM_Large_Scale_Imagery/MapServer/WMSServer?request=GetCapabilities&service=WMS - // http://raster.nationalmap.gov/ArcGIS/rest/services/Combined/TNM_Large_Scale_Imagery/MapServer - // http://viewer.nationalmap.gov/example/services.html - Config.tiles = true - Config.tile_type = layer - Zoom.interval = 6 - if (layer == 'google') { - var gsat = new OpenLayers.Layer.Google("Google Satellite", { - type: google.maps.MapTypeId.SATELLITE, - sphericalMercator: true, - numZoomLevels: 23, - maxZoomLevel: 23 - } ); - map.addLayer(gsat) - map.layers[0].mapObject.setTilt(0); + start_openlayers: function(layer,tile_url,tile_layer) { + if (layer == "none") $('map').hide() + else $('map').show() + if (!Knitter.openlayers_on) Knitter.init_openlayers(layer) + // http://isse.cr.usgs.gov/ArcGIS/services/Combined/TNM_Large_Scale_Imagery/MapServer/WMSServer?request=GetCapabilities&service=WMS + // http://raster.nationalmap.gov/ArcGIS/rest/services/Combined/TNM_Large_Scale_Imagery/MapServer + // http://viewer.nationalmap.gov/example/services.html + Config.tiles = true + Config.tile_type = layer + Zoom.interval = 6 + if (layer == 'google') { + var gsat = new OpenLayers.Layer.Google("Google Satellite", { + type: google.maps.MapTypeId.SATELLITE, + sphericalMercator: true, + numZoomLevels: 23, + maxZoomLevel: 23 + } ); + map.addLayer(gsat) + map.layers[0].mapObject.setTilt(0); - // not sure why nothing else works, but this allows more zooming in! - map.layers[0].numZoomLevels = 24 - map.layers[0].maxZoomLevel = 24 - map.layers[0].resolutions.push(0.29858214168548586/2,0.29858214168548586/4,0.29858214168548586/8,0.29858214168548586/16) - map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform( - new OpenLayers.Projection("EPSG:4326"), - map.getProjectionObject() - ), 5); + // not sure why nothing else works, but this allows more zooming in! + map.layers[0].numZoomLevels = 24 + map.layers[0].maxZoomLevel = 24 + map.layers[0].resolutions.push(0.29858214168548586/2,0.29858214168548586/4,0.29858214168548586/8,0.29858214168548586/16) + map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform( + new OpenLayers.Projection("EPSG:4326"), + map.getProjectionObject() + ), 5); - } else if (layer == 'mapbox') { - var mapbox = new OpenLayers.Layer.TMS( "MapBox OpenStreetMap", - [ "http://a.tile.mapbox.com/","http://b.tile.mapbox.com/", - "http://c.tile.mapbox.com/","http://d.tile.mapbox.com/" ], - { 'layername': 'mapbox.mapbox-streets', 'type':'jpg', - 'buffer': 0, 'transitionEffect':'resize', - attribution: 'rendered by MapBox, from OpenStreetMap data'} ); - map.addLayer(mapbox) - } else if (layer == 'osm') { - var osm = new OpenLayers.Layer.TMS( "OpenStreetMap", - "http://tile.openstreetmap.org/", - { type: 'png', - numZoomLevels: 23, - maxZoomLevel: 23, - getURL: osm_getTileURL, - displayOutsideMaxExtent: true, - attribution: 'OpenStreetMap' - } - ); - map.addLayer(osm) - } else if (layer == 'bing') { - var apiKey = "AhYrUtF-jMIlTiblfgB_spQXBgc3u1_4h1mrgm_vEmyrnHLbA8v8452MolECULTX" - //Only in later versions of OpenLayers: //var bingsat = new OpenLayers.Layer.Bing("Aerial", {type: "Aerial", apiKey:apiKey, sphericalMercator:true}); - var bingsat = new OpenLayers.Layer.VirtualEarth("Virtual Earth Aerial", { - 'type': VEMapStyle.Aerial, - numZoomLevels: 23, - maxZoomLevel: 23, - 'sphericalMercator': true - }); - map.addLayer(bingsat) - } else if (layer == 'yahoo') { - var yahoosat = new OpenLayers.Layer.Yahoo("Yahoo Satellite", {type: YAHOO_MAP_SAT, sphericalMercator: true, numZoomLevels: 23}); - map.addLayer(yahoosat) -/*you can try - http://hypercube.telascience.org/tilecache/tilecache.py/1.0.0/NAIP_ALL/ + } else if (layer == 'mapbox') { + var mapbox = new OpenLayers.Layer.TMS( "MapBox OpenStreetMap", + [ "http://a.tile.mapbox.com/","http://b.tile.mapbox.com/", + "http://c.tile.mapbox.com/","http://d.tile.mapbox.com/" ], + { 'layername': 'mapbox.mapbox-streets', 'type':'jpg', + 'buffer': 0, 'transitionEffect':'resize', + attribution: 'rendered by MapBox, from OpenStreetMap data'} ); + map.addLayer(mapbox) + } else if (layer == 'osm') { + var osm = new OpenLayers.Layer.TMS( "OpenStreetMap", + "http://tile.openstreetmap.org/", + { type: 'png', + numZoomLevels: 23, + maxZoomLevel: 23, + getURL: osm_getTileURL, + displayOutsideMaxExtent: true, + attribution: 'OpenStreetMap' + } + ); + map.addLayer(osm) + } else if (layer == 'bing') { + var apiKey = "AhYrUtF-jMIlTiblfgB_spQXBgc3u1_4h1mrgm_vEmyrnHLbA8v8452MolECULTX" + //Only in later versions of OpenLayers: //var bingsat = new OpenLayers.Layer.Bing("Aerial", {type: "Aerial", apiKey:apiKey, sphericalMercator:true}); + var bingsat = new OpenLayers.Layer.VirtualEarth("Virtual Earth Aerial", { + 'type': VEMapStyle.Aerial, + numZoomLevels: 23, + maxZoomLevel: 23, + 'sphericalMercator': true + }); + map.addLayer(bingsat) + } else if (layer == 'yahoo') { + var yahoosat = new OpenLayers.Layer.Yahoo("Yahoo Satellite", {type: YAHOO_MAP_SAT, sphericalMercator: true, numZoomLevels: 23}); + map.addLayer(yahoosat) + /*you can try + http://hypercube.telascience.org/tilecache/tilecache.py/1.0.0/NAIP_ALL/ - but you might get better performance from newworld which switches - between bmng/landsat/naip based on zoom level + but you might get better performance from newworld which switches + between bmng/landsat/naip based on zoom level - http://hypercube.telascience.org/tilecache/tilecache.py/1.0.0/NewWorld_google */ - } else if (layer == 'TMS') { - Config.tile_url = tile_url || Config.tile_url - var tms = new OpenLayers.Layer.TMS( "OpenLayers TMS", Config.tile_url, - { //projection: latlon, - //displayProjection: spher_merc, - //getURL: Knitter.overlay_getTileURL, - //maxResolution:156543.0339, - //units: "m", - //maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), - //tileOrigin: new OpenLayers.LonLat(0,0).transform(latlon,spher_merc), - numZoomLevels: 23, - serviceVersion: '.', - layername: '.', - type: 'png', - alpha: true, - isBaseLayer: true}); - map.addLayer(tms); - } else if (layer == 'WMS') { - projection: latlon, - //wms_url = prompt('Enter a WMS URI','http://msrmaps.com/ogcmap.ashx') - Config.tile_url = tile_url || Config.tile_url - Config.tile_layer = tile_layer || Config.tile_layer - map.addLayer(new OpenLayers.Layer.WMS('WMS',Config.tile_url,{ - layers: Config.tile_layer - //layers:'DOQ' - //layers:'osm' - })) - } + http://hypercube.telascience.org/tilecache/tilecache.py/1.0.0/NewWorld_google */ + } else if (layer == 'TMS') { + Config.tile_url = tile_url || Config.tile_url + var tms = new OpenLayers.Layer.TMS( "OpenLayers TMS", Config.tile_url, + { //projection: latlon, + //displayProjection: spher_merc, + //getURL: Knitter.overlay_getTileURL, + //maxResolution:156543.0339, + //units: "m", + //maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34), + //tileOrigin: new OpenLayers.LonLat(0,0).transform(latlon,spher_merc), + numZoomLevels: 23, + serviceVersion: '.', + layername: '.', + type: 'png', + alpha: true, + isBaseLayer: true}); + map.addLayer(tms); + } else if (layer == 'WMS') { + projection: latlon, + //wms_url = prompt('Enter a WMS URI','http://msrmaps.com/ogcmap.ashx') + Config.tile_url = tile_url || Config.tile_url + Config.tile_layer = tile_layer || Config.tile_layer + map.addLayer(new OpenLayers.Layer.WMS('WMS',Config.tile_url,{ + layers: Config.tile_layer + //layers:'DOQ' + //layers:'osm' + })) + } - Glop.observe('glop:draw',function(){$('map').setStyle({height:Glop.height+'px'})}) - if (Config.tile_type == 'WMS') Glop.observe('mouseup',function() {map.layers.first().refresh()}) + Glop.observe('glop:draw',function(){$('map').setStyle({height:Glop.height+'px'})}) + if (Config.tile_type == 'WMS') Glop.observe('mouseup',function() {map.layers.first().refresh()}) - // the following is complete nonsense and resolves to a point, not a bbox: - var lat1 = Projection.y_to_lat(Map.y-Glop.height/2) - var lon1 = Projection.x_to_lon(Map.x-Glop.width/2) - var lat2 = Projection.y_to_lat(Map.y+Glop.height/2) - var lon2 = Projection.x_to_lon(Map.x+Glop.width/2) + // the following is complete nonsense and resolves to a point, not a bbox: + var lat1 = Projection.y_to_lat(Map.y-Glop.height/2) + var lon1 = Projection.x_to_lon(Map.x-Glop.width/2) + var lat2 = Projection.y_to_lat(Map.y+Glop.height/2) + var lon2 = Projection.x_to_lon(Map.x+Glop.width/2) - var bounds = new OpenLayers.Bounds(); - bounds.extend(new OpenLayers.LonLat(lon1,lat1))//.transform(spher_merc,latlon)) - bounds.extend(new OpenLayers.LonLat(lon2,lat2))//.transform(spher_merc,latlon)) - //if (warpables.length = 0) - map.zoomToExtent( bounds ) - //console.log(lat1,lon1,lat2,lon2) - //console.log(bounds) - //console.log('initial extent based on viewport sync with Cartagen') + var bounds = new OpenLayers.Bounds(); + bounds.extend(new OpenLayers.LonLat(lon1,lat1))//.transform(spher_merc,latlon)) + bounds.extend(new OpenLayers.LonLat(lon2,lat2))//.transform(spher_merc,latlon)) + //if (warpables.length = 0) + map.zoomToExtent( bounds ) + //console.log(lat1,lon1,lat2,lon2) + //console.log(bounds) + //console.log('initial extent based on viewport sync with Cartagen') - //scalebar = new OpenLayers.Control.ScaleBar(); - //map.addControl(scalebar); + //scalebar = new OpenLayers.Control.ScaleBar(); + //map.addControl(scalebar); - if (Config.tile_switcher) { - var switcherControl = new OpenLayers.Control.LayerSwitcher() - map.addControl(switcherControl); - switcherControl.maximizeControl(); - } - Knitter.openLayersDraw() - Glop.observe('glop:draw', Knitter.openLayersDraw) - //Knitter.update_map(Map.lat,Map.lon,Map.zoom,layer) - setTimeout(Knitter.update_map_to_center,1000) + if (Config.tile_switcher) { + var switcherControl = new OpenLayers.Control.LayerSwitcher() + map.addControl(switcherControl); + switcherControl.maximizeControl(); + } + Knitter.openLayersDraw() + Glop.observe('glop:draw', Knitter.openLayersDraw) + //Knitter.update_map(Map.lat,Map.lon,Map.zoom,layer) + setTimeout(Knitter.update_map_to_center,1000) - }, + }, - update_map_to_center: function() { - loc = Knitter.find_map_center() - if (loc) Knitter.update_map(loc.lat,loc.lon,loc.zoom,false) - }, + update_map_to_center: function() { + loc = Knitter.find_map_center() + if (loc) Knitter.update_map(loc.lat,loc.lon,loc.zoom,false) + }, - update_map: function(lat,lon,zoom,layer) { - Knitter.save.submitted() - layer = layer || false - new Ajax.Request('/map/update/'+Knitter.map_id,{ - method: 'get', - parameters: { - map: { - lat: lat, - lon: lon + update_map: function(lat,lon,zoom,layer) { + Knitter.save.submitted() + layer = layer || false + new Ajax.Request('/map/update/'+Knitter.map_id,{ + method: 'get', + parameters: { + map: { + lat: lat, + lon: lon + }, + zoom: zoom, + tiles: layer, + tile_url: Config.tile_url, + tile_layer: Config.tile_layer }, - zoom: zoom, - tiles: layer, - tile_url: Config.tile_url, - tile_layer: Config.tile_layer - }, - onSuccess: Knitter.save.saved, - on0: Knitter.save.failed, - onFailure: Knitter.save.failed, - }) - }, - - openLayersDraw: function() { - if (Config.tile_type == 'WMS') map.moveTo(new OpenLayers.LonLat(Map.lon,Map.lat)) - else map.moveTo(new OpenLayers.LonLat(Map.lon,Map.lat).transform(spher_merc,latlon)) + onSuccess: Knitter.save.saved, + on0: Knitter.save.failed, + onFailure: Knitter.save.failed, + }) + }, - var left = new OpenLayers.LonLat(map.getExtent().left,map.getExtent().top); - var right = new OpenLayers.LonLat(map.getExtent().right,map.getExtent().bottom); + openLayersDraw: function() { + if (Config.tile_type == 'WMS') map.moveTo(new OpenLayers.LonLat(Map.lon,Map.lat)) + else map.moveTo(new OpenLayers.LonLat(Map.lon,Map.lat).transform(spher_merc,latlon)) - if (Config.tile_type == 'WMS') var convert = Glop.width/124023.4375 - else { - left = left.transform(spher_merc,latlon); - right = right.transform(spher_merc,latlon); + var left = new OpenLayers.LonLat(map.getExtent().left,map.getExtent().top); + var right = new OpenLayers.LonLat(map.getExtent().right,map.getExtent().bottom); - var convert = 124023.4375*Glop.width - } - Map.zoom = convert/(right.lon-left.lon) + if (Config.tile_type == 'WMS') var convert = Glop.width/124023.4375 + else { + left = left.transform(spher_merc,latlon); + right = right.transform(spher_merc,latlon); - }, + var convert = 124023.4375*Glop.width + } + Map.zoom = convert/(right.lon-left.lon) - overlay_getTileURL: function(bounds) { - var res = this.map.getResolution(); - var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); - var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); - var z = this.map.getZoom(); - //console.log('getting tile '+z+','+x+','+y) - if (this.map.baseLayer.name == 'Virtual Earth Roads' || this.map.baseLayer.name == 'Virtual Earth Aerial' || this.map.baseLayer.name == 'Virtual Earth Hybrid') { - z = z + 1; - } - if (mapBounds.intersectsBounds( bounds ) && z >= mapMinZoom && z <= mapMaxZoom ) { - //console.log( this.url + z + "/" + x + "/" + y + "." + this.type); - return this.url + z + "/" + x + "/" + y + "." + this.type; - } else { - return "http://www.maptiler.org/img/none.png"; - } - }, + }, - save_new_location: function(lat,lon,zoom) { - Knitter.save.submitted() - new Ajax.Request('/map/update/'+Knitter.map_id,{ - method: 'get', - parameters: { - lat: lat, - lon: lon, - zoom: zoom - }, - onSuccess: Knitter.save.saved, - on0: Knitter.save.failed, - onFailure: Knitter.save.failed, - }) - }, + overlay_getTileURL: function(bounds) { + var res = this.map.getResolution(); + var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); + var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); + var z = this.map.getZoom(); + //console.log('getting tile '+z+','+x+','+y) + if (this.map.baseLayer.name == 'Virtual Earth Roads' || this.map.baseLayer.name == 'Virtual Earth Aerial' || this.map.baseLayer.name == 'Virtual Earth Hybrid') { + z = z + 1; + } + if (mapBounds.intersectsBounds( bounds ) && z >= mapMinZoom && z <= mapMaxZoom ) { + //console.log( this.url + z + "/" + x + "/" + y + "." + this.type); + return this.url + z + "/" + x + "/" + y + "." + this.type; + } else { + return "http://www.maptiler.org/img/none.png"; + } + }, - save_current_location: function(callback) { - Knitter.save_new_location(Map.lat,Map.lon,Map.zoom) - if (!Object.isUndefined(callback)) callback() - }, + save_new_location: function(lat,lon,zoom) { + Knitter.save.submitted() + new Ajax.Request('/map/update/'+Knitter.map_id,{ + method: 'get', + parameters: { + lat: lat, + lon: lon, + zoom: zoom + }, + onSuccess: Knitter.save.saved, + on0: Knitter.save.failed, + onFailure: Knitter.save.failed, + }) + }, - toggle_vectors: function() { - Config.vectors = !Config.vectors - $('tagreport').toggle() - if (Config.vectors) $('tool_vectors').addClassName('down') - else $('tool_vectors').removeClassName('down') - if ($('loading_message')) $('loading_message').hide() - Knitter.save.submitted() - new Ajax.Request('/map/update/'+Knitter.map_id,{ - method: 'get', - parameters: { - lat: Map.lat, - lon: Map.lon, - zoom: Map.zoom, - vectors: Config.vectors - }, - onSuccess: Knitter.save.saved, - on0: Knitter.save.failed, - onFailure: Knitter.save.failed, - }) - }, + save_current_location: function(callback) { + Knitter.save_new_location(Map.lat,Map.lon,Map.zoom) + if (!Object.isUndefined(callback)) callback() + }, - background_transparent: true, - toggle_background: function() { - if (Knitter.background_transparent) { - $('map').removeClassName('transparent'); - } else { - $('map').addClassName('transparent'); - } - Knitter.background_transparent = !Knitter.background_transparent - }, + toggle_vectors: function() { + Config.vectors = !Config.vectors + $('tagreport').toggle() + if (Config.vectors) $('tool_vectors').addClassName('down') + else $('tool_vectors').removeClassName('down') + if ($('loading_message')) $('loading_message').hide() + Knitter.save.submitted() + new Ajax.Request('/map/update/'+Knitter.map_id,{ + method: 'get', + parameters: { + lat: Map.lat, + lon: Map.lon, + zoom: Map.zoom, + vectors: Config.vectors + }, + onSuccess: Knitter.save.saved, + on0: Knitter.save.failed, + onFailure: Knitter.save.failed, + }) + }, - find_map_center: function() { - if (warpables.length > 0) { - var latsum = 0, lonsum = 0, latcount = 0, loncount = 0 - var maxlat = 0,maxlon = 0,minlat = 0,minlon = 0 - warpables.each(function(warpable){ - if (warpable.nodes != "none") { - warpable.nodes.each(function(node) { - var lon = Projection.x_to_lon(-node[0]) - var lat = Projection.y_to_lat(node[1]) - if (maxlon == 0) maxlon = lon - if (maxlat == 0) maxlat = lat - if (minlon == 0) minlon = lon - if (minlat == 0) minlat = lat - if (lon > maxlon) maxlon = lon - if (lat > maxlat) maxlat = lat - if (lon < minlon) minlon = lon - if (lat < minlat) minlat = lat - lonsum += lon - latsum += lat - loncount += 1 - latcount += 1 - }) - } - },this) - zoom = parseInt(-Math.log((maxlon-minlon)/360)/Math.log(2))+2 - if (loncount) { - return { lat:(maxlat+minlat)/2, - lon:(maxlon+minlon)/2, - zoom:zoom, - width:maxlon-minlon - } + background_transparent: true, + toggle_background: function() { + if (Knitter.background_transparent) { + $('map').removeClassName('transparent'); } else { - return false + $('map').addClassName('transparent'); } - } else { return false } - }, + Knitter.background_transparent = !Knitter.background_transparent + }, + + find_map_center: function() { + if (warpables.length > 0) { + var latsum = 0, lonsum = 0, latcount = 0, loncount = 0 + var maxlat = 0,maxlon = 0,minlat = 0,minlon = 0 + warpables.each(function(warpable){ + if (warpable.nodes != "none") { + warpable.nodes.each(function(node) { + var lon = Projection.x_to_lon(-node[0]) + var lat = Projection.y_to_lat(node[1]) + if (maxlon == 0) maxlon = lon + if (maxlat == 0) maxlat = lat + if (minlon == 0) minlon = lon + if (minlat == 0) minlat = lat + if (lon > maxlon) maxlon = lon + if (lat > maxlat) maxlat = lat + if (lon < minlon) minlon = lon + if (lat < minlat) minlat = lat + lonsum += lon + latsum += lat + loncount += 1 + latcount += 1 + }) + } + },this) + zoom = parseInt(-Math.log((maxlon-minlon)/360)/Math.log(2))+2 + if (loncount) { + return { lat:(maxlat+minlat)/2, + lon:(maxlon+minlon)/2, + zoom:zoom, + width:maxlon-minlon + } + } else { + return false + } + } else { return false } + }, - center_on_warpables: function() { - loc = Knitter.find_map_center() - if (loc) Cartagen.go_to(loc.lat,loc.lon,loc.zoom) - // the "+2" is a hack... this equation would work without it if the map were only one tile wide. - map.zoomTo(parseInt(-Math.log((loc.width)/360)/Math.log(2))+2) - }, + center_on_warpables: function() { + loc = Knitter.find_map_center() + if (loc) Cartagen.go_to(loc.lat,loc.lon,loc.zoom) + // the "+2" is a hack... this equation would work without it if the map were only one tile wide. + map.zoomTo(parseInt(-Math.log((loc.width)/360)/Math.log(2))+2) + }, - export_tabs: ['export_intro','export_options'], - export_hide_tabs: function() { - Knitter.export_tabs.each(function(tab) { - $(tab).hide(); - $(tab+'_tab').removeClassName('active'); - }) - }, - export_intro: function() { - Knitter.export_hide_tabs(); - $('export_normal').show(); - $('export_intro').show(); - $('export_intro_tab').addClassName('active'); - }, - export_options: function() { - Knitter.export_hide_tabs(); - $('export_normal').show(); - $('export_options').show(); - $('export_options_tab').addClassName('active'); - }, - export_multispectral: function() { - Knitter.export_hide_tabs(); - $('export_normal').hide(); - $('export_multispectral').show(); - $('export_multispectral_tab').addClassName('active'); - }, - // for now, just used to store the "export progress" checkers, which run every 5 secs and fill up the logs. - updaters: [], - cancel_updaters: function() { - Knitter.updaters.each(function(u){ - u.stop() - }) - }, -} + export_tabs: ['export_intro','export_options'], + export_hide_tabs: function() { + Knitter.export_tabs.each(function(tab) { + $(tab).hide(); + $(tab+'_tab').removeClassName('active'); + }) + }, + export_intro: function() { + Knitter.export_hide_tabs(); + $('export_normal').show(); + $('export_intro').show(); + $('export_intro_tab').addClassName('active'); + }, + export_options: function() { + Knitter.export_hide_tabs(); + $('export_normal').show(); + $('export_options').show(); + $('export_options_tab').addClassName('active'); + }, + export_multispectral: function() { + Knitter.export_hide_tabs(); + $('export_normal').hide(); + $('export_multispectral').show(); + $('export_multispectral_tab').addClassName('active'); + }, + // for now, just used to store the "export progress" checkers, which run every 5 secs and fill up the logs. + updaters: [], + cancel_updaters: function() { + Knitter.updaters.each(function(u){ + u.stop() + }) + }, + } -function osm_getTileURL(bounds) { - var res = this.map.getResolution(); - var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); - var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); - var z = this.map.getZoom(); - var limit = Math.pow(2, z); + function osm_getTileURL(bounds) { + var res = this.map.getResolution(); + var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); + var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); + var z = this.map.getZoom(); + var limit = Math.pow(2, z); - if (y < 0 || y >= limit) { - return "http://www.maptiler.org/img/none.png"; - } else { - x = ((x % limit) + limit) % limit; - return this.url + z + "/" + x + "/" + y + "." + this.type; + if (y < 0 || y >= limit) { + return "http://www.maptiler.org/img/none.png"; + } else { + x = ((x % limit) + limit) % limit; + return this.url + z + "/" + x + "/" + y + "." + this.type; + } } -} +}); \ No newline at end of file diff --git a/app/assets/javascripts/mapknitter/Annotations.js b/app/assets/javascripts/mapknitter/Annotations.js index a697d3559..14f9506f5 100644 --- a/app/assets/javascripts/mapknitter/Annotations.js +++ b/app/assets/javascripts/mapknitter/Annotations.js @@ -3,8 +3,8 @@ MapKnitter.Annotations.include({ initialize: function(options) { MapKnitter.Resources.prototype.initialize.call(this, options); - var map = options.map - drawOptions = {}; + var map = options.map, + drawOptions = {}; this._map = map; this._drawnItems = new L.FeatureGroup().addTo(map); diff --git a/app/assets/javascripts/mapknitter/Map.js b/app/assets/javascripts/mapknitter/Map.js index f6668d7fa..0a43a103f 100644 --- a/app/assets/javascripts/mapknitter/Map.js +++ b/app/assets/javascripts/mapknitter/Map.js @@ -1,5 +1,3 @@ -//= require leaflet-toolbar/dist/leaflet.toolbar.js -//= require leaflet-distortableimage/dist/leaflet.distortableimage.js MapKnitter.Map = MapKnitter.Class.extend({ @@ -412,8 +410,8 @@ MapKnitter.Map = MapKnitter.Class.extend({ // reset change state string: img._corner_state = JSON.stringify(img._corners); // send save request - $.ajax('/images/update', { - type: 'POST', + $.ajax('/images', { + type: 'PATCH', data: { warpable_id: img.warpable_id, locked: (img.editing._mode == 'lock'), diff --git a/app/assets/javascripts/maps.js b/app/assets/javascripts/maps.js index df9512cf9..9af0ad7ff 100644 --- a/app/assets/javascripts/maps.js +++ b/app/assets/javascripts/maps.js @@ -5,6 +5,7 @@ //= require ion-rangeslider/js/ion.rangeSlider.js /* Move navbar links into dropdown if nav is inside the sidebar. */ +// = require jquery/dist/jquery.js jQuery(document).ready(function($) { window.toggle_sidebar = function() { var icon = $('.sidebar-toggle-icon'); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 9d7bfb5a7..25bb6f016 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -11,6 +11,7 @@ $icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/"; @import "leaflet-illustrate/dist/Leaflet.Illustrate.css"; @import "leaflet-toolbar/dist/leaflet.toolbar.css"; @import "leaflet-distortableimage/dist/leaflet.distortableimage.css"; +@import "leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css"; @import "@fortawesome/fontawesome-free/css/all.css"; // /* // * This is a manifest file that'll be compiled into application.css, which will include all the files diff --git a/app/controllers/annotations_controller.rb b/app/controllers/annotations_controller.rb index 88019d3f7..0a0f780ff 100644 --- a/app/controllers/annotations_controller.rb +++ b/app/controllers/annotations_controller.rb @@ -1,8 +1,8 @@ require 'json' class AnnotationsController < ApplicationController - # before_filter :require_user, :except => [ :index, :show ] - before_filter :find_map + # before_action :require_user, :except => [ :index, :show ] + before_action :find_map def index render file: 'annotations/index.json.erb', content_type: 'application/json' @@ -36,9 +36,9 @@ def update return if @annotation.user_id.nil? || current_user.can_edit?(@annotation) Annotation.update(@annotation.id, - coordinates: geojson[:geometry][:coordinates], - text: geojson[:properties][:textContent], - style: geojson[:properties][:style]) + coordinates: geojson[:geometry][:coordinates], + text: geojson[:properties][:textContent], + style: geojson[:properties][:style]) render file: 'annotations/update.json.erb', content_type: 'application/json' end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 83b424083..6760cf9a4 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,7 +6,7 @@ class ApplicationController < ActionController::Base helper :all # include all helpers, all the time - before_filter :current_user + before_action :current_user helper_method :logged_in?, :current_location before_action :set_paper_trail_whodunnit diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb index da7c51711..f11e6b07e 100644 --- a/app/controllers/export_controller.rb +++ b/app/controllers/export_controller.rb @@ -17,7 +17,7 @@ def logger if params[:action] == 'progress' nil else - RAILS_DEFAULT_LOGGER + Rails.logger end end diff --git a/app/controllers/feeds_controller.rb b/app/controllers/feeds_controller.rb index 392051d23..12740d81e 100644 --- a/app/controllers/feeds_controller.rb +++ b/app/controllers/feeds_controller.rb @@ -1,5 +1,5 @@ class FeedsController < ApplicationController - before_filter :query, only: %i(clean license) + before_action :query, only: %i(clean license) def all # (Warpable.all + Map.all).sort_by(&:created_at) diff --git a/app/controllers/front_ui_controller.rb b/app/controllers/front_ui_controller.rb index fe4a94676..4c68f927b 100644 --- a/app/controllers/front_ui_controller.rb +++ b/app/controllers/front_ui_controller.rb @@ -8,9 +8,12 @@ def index @maps = Map.new_maps.first(4) @unpaginated = true # TODO: these could use optimization but are better than prev: - tag = Tag.where(name: 'featured').first # note that this is not a join table but the .maps method still works - @mappers = User.where(login: tag.maps.collect(&:author)) if tag - @mappers ||= [] + tag = Tag.where(name: 'featured').first + @mappers = if tag + User.where(login: tag.maps.collect(&:author)) + else + [] + end end def all_maps @@ -19,6 +22,7 @@ def all_maps def nearby_mappers return unless current_location.present? + lat = session[:lat] lon = session[:lon] @nearby_maps = Map.maps_nearby(lat: lat, lon: lon, dist: 10) diff --git a/app/controllers/images_controller.rb b/app/controllers/images_controller.rb index d96348659..6ef5d486b 100644 --- a/app/controllers/images_controller.rb +++ b/app/controllers/images_controller.rb @@ -1,8 +1,8 @@ require 'open-uri' class ImagesController < ApplicationController rescue_from Errno::ENOENT, Errno::ETIMEDOUT, - OpenURI::HTTPError, Timeout::Error, - with: :url_upload_not_found + OpenURI::HTTPError, Timeout::Error, + with: :url_upload_not_found protect_from_forgery except: %i(update delete) # Convert model to json without including root name. Eg. 'warpable' ActiveRecord::Base.include_root_in_json = false diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index 58962a38b..e8373d418 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -3,8 +3,8 @@ class MapsController < ApplicationController protect_from_forgery except: :export - before_filter :require_login, only: %i(edit update destroy) - before_filter :find_map, only: %i(show annotate embed edit update images destroy archive) + before_action :require_login, only: %i(edit update destroy) + before_action :find_map, only: %i(show annotate embed edit update images destroy archive) layout 'knitter2' diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 7032f0395..f9607b9d4 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -1,5 +1,5 @@ class TagsController < ApplicationController - before_filter :require_login, only: %i(edit update destroy) + before_action :require_login, only: %i(edit update destroy) def create @map = Map.find_by(slug: params[:map_id]) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 40601a191..5dc4f187f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -30,6 +30,6 @@ def sort_direction def user_params params.require(:user).permit(:login, :email, :name, - :password, :password_confirmation) + :password, :password_confirmation) end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3bad0e562..5d8039ef9 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -41,8 +41,8 @@ def errors_for(object, message = nil) # see https://github.com/rails/jquery-ujs/wiki/Manual-installing-and-Rails-2 def csrf_meta_tags if protect_against_forgery? - out = %(\n) # rubocop:disable Style/FormatStringToken - out << %() # rubocop:disable Style/FormatStringToken + out = %(\n) + out << %() format(out, Rack::Utils.escape_html(request_forgery_protection_token), Rack::Utils.escape_html(form_authenticity_token)) end end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 000000000..00655e720 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' + end diff --git a/app/mailers/comment_mailer.rb b/app/mailers/comment_mailer.rb index cb369928a..7a4e0902b 100644 --- a/app/mailers/comment_mailer.rb +++ b/app/mailers/comment_mailer.rb @@ -1,4 +1,4 @@ -class CommentMailer < ActionMailer::Base +class CommentMailer < ApplicationMailer default from: "do-not-reply@mapknitter.org" # CommentMailer.notify_of_comment(user,self).deliver diff --git a/app/models/annotation.rb b/app/models/annotation.rb index e681cb9bc..0ee80760f 100644 --- a/app/models/annotation.rb +++ b/app/models/annotation.rb @@ -1,9 +1,8 @@ -class Annotation < ActiveRecord::Base - include ActiveModel::MassAssignmentSecurity - belongs_to :map - belongs_to :user +class Annotation < ApplicationRecord + belongs_to :map, optional: true + belongs_to :user, optional: true - attr_accessible :annotation_type, :coordinates, :text, :style + attr_accessor :annotation_type, :coordinates, :text, :style serialize :coordinates, Array serialize :style, Hash diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 000000000..10a4cba84 --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/app/models/comment.rb b/app/models/comment.rb index 05d55677e..a7a327bc3 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -1,6 +1,6 @@ -class Comment < ActiveRecord::Base - belongs_to :map - belongs_to :user +class Comment < ApplicationRecord + belongs_to :map, optional: true + belongs_to :user, optional: true validates_presence_of :body, :user_id, :map_id diff --git a/app/models/export.rb b/app/models/export.rb index 94fbce007..07365476e 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -1,6 +1,6 @@ -class Export < ActiveRecord::Base - belongs_to :map - belongs_to :user +class Export < ApplicationRecord + belongs_to :map, optional: true + belongs_to :user, optional: true # currently exporting? def running? @@ -52,12 +52,12 @@ def self.histogram_cm_per_pixel_in_tens def self.export_count Export.where('status != "failed" AND status != "complete" AND status != "none" AND updated_at > ?', - (DateTime.now - 24.hours).to_s(:db)).count + (DateTime.now - 24.hours).to_s(:db)).count end # all exports currently running def self.exporting Export.where('status != "failed" AND status != "complete" AND status != "none" AND updated_at > ?', - (DateTime.now - 24.hours).to_s(:db)) + (DateTime.now - 24.hours).to_s(:db)) end end diff --git a/app/models/map.rb b/app/models/map.rb index 7dcd5c06a..7d65e3ecb 100755 --- a/app/models/map.rb +++ b/app/models/map.rb @@ -1,4 +1,4 @@ -class Map < ActiveRecord::Base +class Map < ApplicationRecord include ActiveModel::Validations extend FriendlyId friendly_id :name, use: %i(slugged static) @@ -20,7 +20,7 @@ class Map < ActiveRecord::Base has_many :tags, dependent: :destroy has_many :comments, dependent: :destroy has_many :annotations, dependent: :destroy - belongs_to :user + belongs_to :user, optional: true has_many :warpables scope :active, -> { where(archived: false) } @@ -150,7 +150,7 @@ def nearby_maps(dist) return [] if lat.to_f == 0.0 || lon.to_f == 0.0 Map.where('id != ? AND lat > ? AND lat < ? AND lon > ? AND lon < ?', - id, lat - dist, lat + dist, lon - dist, lon + dist) + id, lat - dist, lat + dist, lon - dist, lon + dist) .limit(10) end @@ -240,14 +240,14 @@ def run_export(user, resolution) new_export = Export.new(map_id: id) unless export Exporter.run_export(user, - resolution, - export || new_export, - id, - slug, - Rails.root.to_s, - average_scale, - placed_warpables, - key) + resolution, + export || new_export, + id, + slug, + Rails.root.to_s, + average_scale, + placed_warpables, + key) end def after_create diff --git a/app/models/node.rb b/app/models/node.rb index a6e3018b7..85f7777db 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -1,3 +1,3 @@ -class Node < ActiveRecord::Base - belongs_to :way +class Node < ApplicationRecord + belongs_to :way, optional: true end diff --git a/app/models/tag.rb b/app/models/tag.rb index 390df29ac..2a298824e 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -1,6 +1,6 @@ -class Tag < ActiveRecord::Base - belongs_to :map - belongs_to :user +class Tag < ApplicationRecord + belongs_to :map, optional: true + belongs_to :user, optional: true validates_presence_of :name, on: :create, message: "can't be blank" validates_presence_of :user_id, on: :create, message: "can't be blank" diff --git a/app/models/user.rb b/app/models/user.rb index 0274d6bdd..6dd1352b6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,6 @@ require 'digest/sha1' -class User < ActiveRecord::Base +class User < ApplicationRecord has_many :maps has_many :tags has_many :comments @@ -16,8 +16,7 @@ class User < ActiveRecord::Base validates_length_of :email, within: 6..100 # r@a.wk validates_uniqueness_of :email - # HACK: HACK HACK -- how to do attr_accessible from here? - # prevents a user from submitting a crafted form that bypasses activation + # Prevents a user from submitting a crafted form that bypasses activation # anything else you want your user to change should be added here. # Authenticates a user by their login name and unencrypted password. Returns the user or nil. diff --git a/app/models/warpable.rb b/app/models/warpable.rb index 331be96a7..0961c52d3 100755 --- a/app/models/warpable.rb +++ b/app/models/warpable.rb @@ -1,22 +1,21 @@ -class Warpable < ActiveRecord::Base - include ActiveModel::MassAssignmentSecurity - attr_accessible :image +class Warpable < ApplicationRecord + attr_accessor :image attr_accessor :src, :srcmedium # for json generation # Paperclip; config and production/development specific configs # in /config/initializers/paperclip.rb has_attached_file :image, - s3_protocol: 'https', - styles: { - medium: "500x375", - small: "240x180", - thumb: "100x100>" - } + s3_protocol: 'https', + styles: { + medium: "500x375", + small: "240x180", + thumb: "100x100>" + } validates_attachment_content_type :image, content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] - belongs_to :map - belongs_to :user + belongs_to :map, optional: true + belongs_to :user, optional: true has_paper_trail on: %i(create update), only: %i(nodes) diff --git a/app/models/way.rb b/app/models/way.rb index 7fb80d1ed..d29acbdf9 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -1,4 +1,4 @@ -class Way < ActiveRecord::Base +class Way < ApplicationRecord has_many :nodes, dependent: :destroy def bbox=(bbox) diff --git a/app/views/feeds/all.builder b/app/views/feeds/all.builder index 760a02c18..d4d36d0d3 100644 --- a/app/views/feeds/all.builder +++ b/app/views/feeds/all.builder @@ -4,7 +4,7 @@ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title "Recent maps at MapKnitter.org" - xml.link url_for :only_path => false, :controller => 'spectrums' + xml.link url_for only_path: false, controller: 'feeds', action: 'all' xml.description "Recently posted maps at MapKnitter.org, a Public Lab open source research initiative" @maps.each do |map| diff --git a/app/views/feeds/author.builder b/app/views/feeds/author.builder index 7fca6154f..67057ff9f 100644 --- a/app/views/feeds/author.builder +++ b/app/views/feeds/author.builder @@ -4,7 +4,7 @@ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title "Maps by "+params[:id]+" at MapKnitter.org" - xml.link url_for :only_path => false, :controller => 'spectrums' + xml.link url_for only_path: false, controller: 'feeds', action: 'author' xml.description "Recently posted maps at MapKnitter.org, a Public Laboratory open source research initiative" @maps.each do |map| diff --git a/app/views/feeds/clean.builder b/app/views/feeds/clean.builder index 36a2d114d..e05be36f6 100644 --- a/app/views/feeds/clean.builder +++ b/app/views/feeds/clean.builder @@ -4,7 +4,7 @@ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title "Recent maps at MapKnitter.org" - xml.link url_for :only_path => false, :controller => 'spectrums' + xml.link url_for only_path: false, controller: 'feeds', action: 'clean' xml.description "Recently posted maps at MapKnitter.org, a Public Lab open source research initiative" @maps.each do |map| diff --git a/app/views/feeds/license.builder b/app/views/feeds/license.builder index 829abbafe..244f54ae8 100644 --- a/app/views/feeds/license.builder +++ b/app/views/feeds/license.builder @@ -4,7 +4,7 @@ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title "Recent maps at MapKnitter.org" - xml.link url_for :only_path => false, :controller => 'spectrums' + xml.link url_for only_path: false, controller: 'feeds', action: 'license' xml.description "Recently posted maps at MapKnitter.org, a Public Laboratory open source research initiative" @maps.each do |map| diff --git a/app/views/feeds/tag.builder b/app/views/feeds/tag.builder index 829abbafe..bf50efe89 100644 --- a/app/views/feeds/tag.builder +++ b/app/views/feeds/tag.builder @@ -4,7 +4,7 @@ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title "Recent maps at MapKnitter.org" - xml.link url_for :only_path => false, :controller => 'spectrums' + xml.link url_for only_path: false, controller: 'feeds', action: 'tag' xml.description "Recently posted maps at MapKnitter.org, a Public Laboratory open source research initiative" @maps.each do |map| diff --git a/app/views/front_ui/index.html.erb b/app/views/front_ui/index.html.erb index e024b504f..34ed5f9aa 100644 --- a/app/views/front_ui/index.html.erb +++ b/app/views/front_ui/index.html.erb @@ -1,12 +1,8 @@ -<%= stylesheet_link_tag "/lib/leaflet/dist/leaflet.css" %> -<%= stylesheet_link_tag "/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css" %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js') %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/src/windRoseLayer.js') %> -<%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> -<%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> -<%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> -<%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> -<%= javascript_include_tag('/lib/leaflet-fullhash/leaflet-fullHash.js') %> +<%# <%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> +<%# # <%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> +<%= javascript_include_tag('/assets/leaflet-spin/example/spin/dist/spin.min.js') %> +<%= javascript_include_tag('/assets/leaflet-spin/example/leaflet.spin.min.js') %> +<%= javascript_include_tag('leaflet-fullHash.js') %> + + <%= yield %> + \ No newline at end of file diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 000000000..cd9bb66dd --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> \ No newline at end of file diff --git a/app/views/map/_leaflet.html.erb b/app/views/map/_leaflet.html.erb index da1268dd2..3ae800ef8 100644 --- a/app/views/map/_leaflet.html.erb +++ b/app/views/map/_leaflet.html.erb @@ -30,7 +30,6 @@ - diff --git a/app/views/map/leaflet.html.erb b/app/views/map/leaflet.html.erb index 25611958c..fd99a4818 100644 --- a/app/views/map/leaflet.html.erb +++ b/app/views/map/leaflet.html.erb @@ -6,7 +6,6 @@ - @@ -83,8 +82,8 @@ }); img.mk_id = <%= warpable.id %> img.onDeselect = function() { - $.ajax('/images/update',{ - type: 'POST', + $.ajax('/images',{ + type: 'PATCH', data: { warpable_id: this.mk_id, locked: this.locked, diff --git a/app/views/maps/index.html.erb b/app/views/maps/index.html.erb index 6834ff68c..65783c7c2 100644 --- a/app/views/maps/index.html.erb +++ b/app/views/maps/index.html.erb @@ -1,9 +1,5 @@ -<%= javascript_include_tag('/lib/leaflet-fullhash/leaflet-fullHash.js') %> -<%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> -<%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> - -<%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> -<%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> +<%= javascript_include_tag('/assets/leaflet-spin/example/spin/dist/spin.min.js') %> +<%= javascript_include_tag('/assets/leaflet-spin/example/leaflet.spin.min.js') %>
@@ -120,122 +116,123 @@
+ \ No newline at end of file diff --git a/app/views/maps/show.html.erb b/app/views/maps/show.html.erb index 86c35dcff..1a2fe5c2f 100644 --- a/app/views/maps/show.html.erb +++ b/app/views/maps/show.html.erb @@ -64,4 +64,4 @@ <% content_for :images do %> <%= render :partial => "/images/index" %> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/tags/index.html.erb b/app/views/tags/index.html.erb index 88ca2b3d0..b9c2f4320 100644 --- a/app/views/tags/index.html.erb +++ b/app/views/tags/index.html.erb @@ -1,13 +1,12 @@ -<%= stylesheet_link_tag "/lib/leaflet/dist/leaflet.css" %> -<%= stylesheet_link_tag "/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css" %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js') %> -<%= javascript_include_tag('/lib/leaflet-environmental-layers/dist/windRoseLayer.js') %> -<%= javascript_include_tag('/lib/leaflet-fullhash/leaflet-fullHash.js') %> +<%= stylesheet_link_tag "/assets/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.css" %> +<%= javascript_include_tag('/assets/leaflet-environmental-layers/dist/LeafletEnvironmentalLayers.js') %> +<%= javascript_include_tag('/assets/leaflet-environmental-layers/dist/windRoseLayer.js') %> +<%= javascript_include_tag('/assets/leaflet-fullhash/leaflet-fullHash.js') %> <%= javascript_include_tag('https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js') %> <%= stylesheet_link_tag "https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css" %> -<%= javascript_include_tag('/lib/leaflet-spin/example/spin/dist/spin.min.js') %> -<%= javascript_include_tag('/lib/leaflet-spin/example/leaflet.spin.min.js') %> +<%= javascript_include_tag('/assets/leaflet-spin/example/spin/dist/spin.min.js') %> +<%= javascript_include_tag('/assets/leaflet-spin/example/leaflet.spin.min.js') %>
@@ -108,4 +107,4 @@ "MapKnitter": MapKnitter }; L.control.layers(baseMaps,overlayMaps).addTo(Mapknitterunique); - \ No newline at end of file + diff --git a/bin/bundle b/bin/bundle index 66e9889e8..f19acf5b5 100755 --- a/bin/bundle +++ b/bin/bundle @@ -1,3 +1,3 @@ #!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails index 5191e6927..073966023 100755 --- a/bin/rails +++ b/bin/rails @@ -1,4 +1,4 @@ #!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) +APP_PATH = File.expand_path('../config/application', __dir__) require_relative '../config/boot' require 'rails/commands' diff --git a/bin/setup b/bin/setup index acdb2c138..94fd4d797 100755 --- a/bin/setup +++ b/bin/setup @@ -1,29 +1,36 @@ #!/usr/bin/env ruby -require 'pathname' +require 'fileutils' +include FileUtils # path to your application root. -APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) +APP_ROOT = File.expand_path('..', __dir__) -Dir.chdir APP_ROOT do +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do # This script is a starting point to setup your application. - # Add necessary setup steps to this file: + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') - puts "== Installing dependencies ==" - system "gem install bundler --conservative" - system "bundle check || bundle install" + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') # puts "\n== Copying sample files ==" - # unless File.exist?("config/database.yml") - # system "cp config/database.yml.sample config/database.yml" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' # end puts "\n== Preparing database ==" - system "bin/rake db:setup" + system! 'bin/rails db:setup' puts "\n== Removing old logs and tempfiles ==" - system "rm -f log/*" - system "rm -rf tmp/cache" + system! 'bin/rails log:clear tmp:clear' puts "\n== Restarting application server ==" - system "touch tmp/restart.txt" + system! 'bin/rails restart' end diff --git a/bin/update b/bin/update new file mode 100755 index 000000000..58bfaed51 --- /dev/null +++ b/bin/update @@ -0,0 +1,31 @@ +#!/usr/bin/env ruby +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') + + puts "\n== Updating database ==" + system! 'bin/rails db:migrate' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/yarn b/bin/yarn new file mode 100755 index 000000000..460dd565b --- /dev/null +++ b/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +APP_ROOT = File.expand_path('..', __dir__) +Dir.chdir(APP_ROOT) do + begin + exec "yarnpkg", *ARGV + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/config.ru b/config.ru index 2b2ae190a..afac488a9 100644 --- a/config.ru +++ b/config.ru @@ -1,4 +1,4 @@ # This file is used by Rack-based servers to start the application. -require ::File.expand_path('../config/environment', __FILE__) +require_relative 'config/environment' run Mapknitter::Application diff --git a/config/application.rb b/config/application.rb index 6ef9bc715..30eb5662d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -1,5 +1,4 @@ -require File.expand_path('../boot', __FILE__) - +require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems @@ -27,6 +26,9 @@ class Application < Rails::Application # Configure the default encoding used in templates for Ruby 1.9. config.encoding = "utf-8" + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 5.2 + # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] @@ -39,16 +41,12 @@ class Application < Rails::Application # parameters by using an attr_accessible or attr_protected declaration. # config.active_record.whitelist_attributes = true - # Do not swallow errors in after_commit/after_rollback callbacks. - config.active_record.raise_in_transactional_callbacks = true - # Enable the asset pipeline config.assets.enabled = true config.action_dispatch.default_headers['X-Frame-Options'] = "ALLOW-FROM https://publiclab.org" # Version of your assets, change this if you want to expire all your assets - config.assets.version = '1.3' config.assets.paths << Rails.root.join("public","lib") end end diff --git a/config/boot.rb b/config/boot.rb index 44358b8e4..b9e460cef 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,3 +1,4 @@ -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) # Set up gems listed in the Gemfile. +require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 000000000..8648dafa2 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: mapknitter_production diff --git a/config/database.yml.example b/config/database.yml.example index 0607fcd1d..6f196c70d 100644 --- a/config/database.yml.example +++ b/config/database.yml.example @@ -6,15 +6,15 @@ default: &default development: <<: *default - username: - password: + username: + password: database: mapknitter_dev production: adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> - host: db + host: <%= ENV.fetch("MYSQL_HOST") { '127.0.0.1' } %> username: mapknitter password: mapknitter database: mapknitter diff --git a/config/environment.rb b/config/environment.rb index 99fb29737..426333bb4 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,5 +1,5 @@ # Load the Rails application. -require File.expand_path('../application', __FILE__) +require_relative 'application' # Initialize the Rails application. -Mapknitter::Application.initialize! +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb index 1ab5e7b64..d4ca60dce 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -1,4 +1,4 @@ -Mapknitter::Application.configure do +Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # In the development environment your application's code is reloaded on @@ -9,23 +9,31 @@ # Do not eager load code on boot. config.eager_load = false - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = false + # Show full error reports. + config.consider_all_requests_local = true - # Don't care if the mailer can't send. - config.action_mailer.raise_delivery_errors = false + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join('tmp', 'caching-dev.txt').exist? + config.action_controller.perform_caching = true - # Print deprecation notices to the Rails logger. - config.active_support.deprecation = :log + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false - # Raise an error on page load if there are pending migrations. - config.active_record.migration_error = :page_load + config.cache_store = :null_store + end - # Debug mode disables concatenation and preprocessing of assets. - # This option may cause significant delays in view rendering with a large - # number of complex assets. - config.assets.debug = true + # Store uploaded files on the local file system (see config/storage.yml for options) + config.active_storage.service = :local + + config.action_mailer.perform_caching = false + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. @@ -36,15 +44,34 @@ # Raises helpful error messages. config.assets.raise_runtime_errors = true - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true # Do not compress assets config.assets.compress = false - # Expands the lines which load the assets + config.assets.logger = false config.assets.debug = true#false + config.serve_static_files = true - config.assets.logger = false + # Suppress logger output for asset requests. + config.assets.quiet = true + +# Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker end diff --git a/config/environments/production.rb b/config/environments/production.rb index 31cabbfbf..91ef1928a 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -1,5 +1,6 @@ -Mapknitter::Application.configure do +require 'uglifier' +Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # Code is not reloaded between requests. @@ -15,15 +16,13 @@ config.consider_all_requests_local = false config.action_controller.perform_caching = true - # Enable Rack::Cache to put a simple HTTP cache in front of your application - # Add `rack-cache` to your Gemfile before enabling this. - # For large-scale production use, consider using a caching reverse proxy like - # NGINX, varnish or squid. - # config.action_dispatch.rack_cache = true + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true # Disable serving static files from the `/public` folder by default since # Apache or NGINX already handles this. - config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? # Compress JavaScripts and CSS. require 'uglifier' @@ -37,18 +36,23 @@ # yet still be able to expire them through the digest params. config.assets.digest = true - config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/ - config.assets.precompile += ['tags.js', - 'uploads.js', - 'knitter.js', - 'annotations.js', - 'maps.js'] # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + # Specifies the header that your server uses for sending files. # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + # Store uploaded files on the local file system (see config/storage.yml for options) + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true @@ -57,25 +61,20 @@ config.log_level = :debug # Prepend all log lines with the following tags. - # config.log_tags = [ :subdomain, :uuid ] - - # Use a different logger for distributed setups. - # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + config.log_tags = [ :request_id ] # Use a different cache store in production. # config.cache_store = :mem_cache_store - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = 'http://assets.example.com' + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "mapknitter_#{Rails.env}" + + config.action_mailer.perform_caching = false # Ignore bad email addresses and do not raise email delivery errors. # Set this to true and configure the email server for immediate delivery to raise delivery errors. # config.action_mailer.raise_delivery_errors = false - config.action_mailer.delivery_method = :sendmail - config.action_mailer.sendmail_settings = { - location: '/usr/sbin/sendmail', - arguments: '-i' - } # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation cannot be found). @@ -87,6 +86,21 @@ # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new + config.action_mailer.delivery_method = :sendmail + config.action_mailer.sendmail_settings = { + location: '/usr/sbin/sendmail', + arguments: '-i' + } + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false end diff --git a/config/environments/test.rb b/config/environments/test.rb index 380993fbd..22c9802da 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -1,5 +1,4 @@ -Mapknitter::Application.configure do - +Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # The test environment is used exclusively to run your application's @@ -13,9 +12,11 @@ # preloads Rails for running tests, you may have to set it to true. config.eager_load = false - # Configure static file server for tests with Cache-Control for performance. - config.serve_static_files = true - config.static_cache_control = 'public, max-age=3600' + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.to_i}" + } # Show full error reports and disable caching. config.consider_all_requests_local = true @@ -27,14 +28,16 @@ # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false + # Store uploaded files on the local file system in a temporary directory + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array. config.action_mailer.delivery_method = :test - # Randomize the order test cases are executed. - config.active_support.test_order = :random - # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr config.after_initialize do diff --git a/config/initializers/active_record_belongs_to_required_by_default.rb b/config/initializers/active_record_belongs_to_required_by_default.rb new file mode 100644 index 000000000..16e252ab8 --- /dev/null +++ b/config/initializers/active_record_belongs_to_required_by_default.rb @@ -0,0 +1 @@ +Rails.application.config.active_record.belongs_to_required_by_default = true \ No newline at end of file diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 000000000..89d2efab2 --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index b666a7c43..4a93d752b 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -1,17 +1,26 @@ # Be sure to restart your server when you modify this file. -# Version of your assets, change this if you want to expire all your assets. -Rails.application.config.assets.version = '1.0' -Rails.application.config.assets.precompile += %w[*.png *.jpg *.jpeg *.gif *.svg] +Rails.application.configure do + # Version of your assets, change this if you want to expire all your assets. + config.assets.version = '1.3' + config.assets.precompile += %w[*.png *.jpg *.jpeg *.gif] -# Add additional assets to the asset load path -# Rails.application.config.assets.paths << Emoji.images_path + # Add additional assets to the asset load path. + # Rails.application.config.assets.paths << Emoji.images_path + # Add Yarn node_modules folder to the asset load path. + config.assets.paths << Rails.root.join('node_modules') -# Precompile additional assets. -# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. -# Rails.application.config.assets.precompile += %w( search.js ) -Rails.application.config.assets.precompile += ['tags.js', - 'uploads.js', - 'knitter.js', - 'annotations.js', - 'maps.js'] + config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/ + config.assets.precompile += ['uploads.js', + 'knitter.js', + 'annotations.js', + 'maps.js', + 'mapknitter.js', + 'leaflet-fullHash.js' + ] + + # Precompile additional assets. + # application.js, application.css, and all non-JS/CSS in the app/assets + # folder are already added. + # Rails.application.config.assets.precompile += %w( admin.js admin.css ) +end diff --git a/config/initializers/column_definition.rb b/config/initializers/column_definition.rb index feca93639..501e955b1 100644 --- a/config/initializers/column_definition.rb +++ b/config/initializers/column_definition.rb @@ -11,15 +11,15 @@ # or, alternatively, -# This can also be removed if DEFAULT NULL is removed from all columns; -# Read more at https://github.com/publiclab/mapknitter/pull/323 + # # This can also be removed if DEFAULT NULL is removed from all columns; + # # Read more at https://github.com/publiclab/mapknitter/pull/323 class ActiveRecord::ConnectionAdapters::ColumnDefinition - if ActiveRecord::Base.connection.adapter_name != 'sqlite3' && ActiveRecord::Base.connection.adapter_name != 'SQLite' - def sql_type - type.to_sym == :primary_key ? 'int(11) auto_increment PRIMARY KEY' : base.type_to_sql(type.to_sym, limit, precision, scale) rescue type - end - end + # if ActiveRecord::Base.connection.adapter_name != 'sqlite3' && ActiveRecord::Base.connection.adapter_name != 'SQLite' + # def sql_type + # type.to_sym == :primary_key ? 'int(11) auto_increment PRIMARY KEY' : base.type_to_sql(type.to_sym, limit, precision, scale) rescue type + # end + # end end diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 000000000..d3bcaa5ec --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,25 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https + +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end + +# If you are using UJS then enable automatic nonce generation +# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + +# Report CSP violations to a specified URI +# For further information see the following documentation: +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# Rails.application.config.content_security_policy_report_only = true diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb index 54516e3f2..f51a497e1 100644 --- a/config/initializers/cookies_serializer.rb +++ b/config/initializers/cookies_serializer.rb @@ -1,3 +1,5 @@ # Be sure to restart your server when you modify this file. +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. Rails.application.config.action_dispatch.cookies_serializer = :hybrid diff --git a/config/initializers/duration.rb b/config/initializers/duration.rb deleted file mode 100644 index ac6e2f581..000000000 --- a/config/initializers/duration.rb +++ /dev/null @@ -1,48 +0,0 @@ -# this is a customization created to bridge incompatabilities when upgrading Ruby 2.1.2 -# to 2.4.4 with Rails 3.2. - -# explanation -# There's a fundamental asymmetry in how operators work in Ruby - -# `1 * 1.second` dispatches -> * on Integer. -# `1.second * 1` dispatches -> * on Duration -> throws error 'Duration can't be coerced into Integer' - -# the source code for Rails 3.2 puts duration second: https://github.com/rails/rails/blob/v3.2.22.5/activesupport/lib/active_support/core_ext/numeric/time.rb - -# the solution: the order of multiplication has to be swtiched, and Duration put first. - -# this code can be removed with ActiveSupport v.5.0.3: https://github.com/rails/rails/blob/v5.0.3/activesupport/lib/active_support/core_ext/numeric/time.rb -# (Rails 5) - -class Numeric - def days - ActiveSupport::Duration.new(24.hours * self, [[:days, self]]) - end - alias :day :days - - def weeks - ActiveSupport::Duration.new(7.days * self, [[:days, self * 7]]) - end - alias :week :weeks - - def fortnights - ActiveSupport::Duration.new(2.weeks * self, [[:days, self * 14]]) - end - alias :fortnight :fortnights -end - -# source code: https://github.com/rails/rails/blob/v3.2.22.5/activesupport/lib/active_support/core_ext/integer/time.rb - -# fixed as of ActiveSupport v.4.1.2 https://github.com/rails/rails/blob/v4.1.12/activesupport/lib/active_support/core_ext/integer/time.rb -# (Rails 4) - -class Integer - def months - ActiveSupport::Duration.new(30.days * self, [[:months, self]]) - end - alias :month :months - - def years - ActiveSupport::Duration.new(365.25.days * self, [[:years, self]]) - end - alias :year :years -end \ No newline at end of file diff --git a/config/initializers/new_framework_defaults_5_2.rb b/config/initializers/new_framework_defaults_5_2.rb new file mode 100644 index 000000000..c383d072b --- /dev/null +++ b/config/initializers/new_framework_defaults_5_2.rb @@ -0,0 +1,38 @@ +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.2 upgrade. +# +# Once upgraded flip defaults one by one to migrate to the new default. +# +# Read the Guide for Upgrading Ruby on Rails for more info on each option. + +# Make Active Record use stable #cache_key alongside new #cache_version method. +# This is needed for recyclable cache keys. +# Rails.application.config.active_record.cache_versioning = true + +# Use AES-256-GCM authenticated encryption for encrypted cookies. +# Also, embed cookie expiry in signed or encrypted cookies for increased security. +# +# This option is not backwards compatible with earlier Rails versions. +# It's best enabled when your entire app is migrated and stable on 5.2. +# +# Existing cookies will be converted on read then written with the new scheme. +# Rails.application.config.action_dispatch.use_authenticated_cookie_encryption = true + +# Use AES-256-GCM authenticated encryption as default cipher for encrypting messages +# instead of AES-256-CBC, when use_authenticated_message_encryption is set to true. +# Rails.application.config.active_support.use_authenticated_message_encryption = true + +# Add default protection from forgery to ActionController::Base instead of in +# ApplicationController. +# Rails.application.config.action_controller.default_protect_from_forgery = true + +# Store boolean values are in sqlite3 databases as 1 and 0 instead of 't' and +# 'f' after migrating old data. +# Rails.application.config.active_record.sqlite3.represent_boolean_as_integer = true + +# Use SHA-1 instead of MD5 to generate non-sensitive digests, such as the ETag header. +# Rails.application.config.active_support.use_sha1_digests = true + +# Make `form_with` generate id attributes for any generated HTML tags. +# Rails.application.config.action_view.form_with_generates_ids = true diff --git a/config/initializers/recaptcha.rb.example b/config/initializers/recaptcha.rb.example index 25a35c4e6..0ecc96d34 100644 --- a/config/initializers/recaptcha.rb.example +++ b/config/initializers/recaptcha.rb.example @@ -1,7 +1,8 @@ require "recaptcha/rails" class ActionView::Base - include Recaptcha::ClientHelper + include Recaptcha::Adapters::ViewMethods + include Recaptcha::Adapters::ControllerMethods end Recaptcha.configure do |config| diff --git a/config/initializers/secret_token.rb b/config/initializers/secret_token.rb index b7bba1a47..cf23dc7a0 100644 --- a/config/initializers/secret_token.rb +++ b/config/initializers/secret_token.rb @@ -4,4 +4,4 @@ # If you change this key, all old signed cookies will become invalid! # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. -Mapknitter::Application.config.secret_token = 'asdfjdasgaisaolghrwiohrkahguilboiwelkxwbranjkl' +Mapknitter::Application.config.secret_key_base = 'asdfjdasgaisaolghrwiohrkahguilboiwelkxwbranjkl' diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb index b8e3fb7b6..bbfc3961b 100644 --- a/config/initializers/wrap_parameters.rb +++ b/config/initializers/wrap_parameters.rb @@ -5,10 +5,10 @@ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] if respond_to?(:wrap_parameters) + wrap_parameters format: [:json] end -# Disable root element in JSON for ActiveRecord objects. +# To enable root element in JSON for ActiveRecord objects. # ActiveSupport.on_load(:active_record) do -# self.include_root_in_json = false +# self.include_root_in_json = true # end diff --git a/config/locales/en.yml b/config/locales/en.yml index 065395716..decc5a857 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -16,6 +16,16 @@ # # This would use the information in config/locales/es.yml. # +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# # To learn more, please read the Rails Internationalization guide # available at http://guides.rubyonrails.org/i18n.html. diff --git a/config/routes.rb b/config/routes.rb index 39bf21a70..de570b36f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,72 +1,92 @@ Mapknitter::Application.routes.draw do - root :to => 'front_ui#index' - - get 'legacy' => 'maps#index' # remove once new front page is stable - get 'front-page' => 'front_ui#index' - get 'mappers' => 'front_ui#nearby_mappers' - get 'gallery' => 'front_ui#gallery' - post "save_location" => 'front_ui#save_location' - get 'about' => 'front_ui#about' - get 'all_maps' => 'front_ui#all_maps' - get 'anonymous' => 'front_ui#anonymous' - - get 'external_url_test' => 'export#external_url_test' - get 'local/:login' => 'sessions#local' - get 'logout' => 'sessions#logout' - get 'login' => 'sessions#new' - get 'register' => 'users#create' - get 'signup' => 'users#new' - + root to: 'front_ui#index' + + get 'front-page', to: 'front_ui#index' + get 'mappers', to: 'front_ui#nearby_mappers' + get 'about', to: 'front_ui#about' + get 'all_maps', to: 'front_ui#all_maps' + get 'anonymous', to: 'front_ui#anonymous' + get 'gallery', to: 'front_ui#gallery' + post 'save_location', to: 'front_ui#save_location' + + get 'legacy', to: 'maps#index' # remove once new front page is stable + + get 'external_url_test', to: 'export#external_url_test' + # since rails 3.2, we use this to log in: - get 'sessions/create' => 'sessions#create' - - resources :users, :sessions, :maps - + get 'sessions/create', to: 'sessions#create' + get 'local/:login', to: 'sessions#local' + get 'logout', to: 'sessions#logout' + get 'login', to: 'sessions#new' + + + resources :users, :sessions, :maps, :images, :comments, :tags + # redirect legacy route: get 'tag/:id', to: redirect('/tags/%{id}') - get 'tags/:id' => 'tags#show' - + # Registered user pages: - get 'profile' => 'users#profile', :id => 0 - get 'profile/:id' => 'users#profile' - get 'dashboard' => 'users#dashboard' - - get 'authors' => 'users#index' + get 'register', to: 'users#create' + get 'signup', to: 'users#new' + get 'profile', to: 'users#profile', id: 0 + get 'profile/:id', to: 'users#profile' + get 'dashboard', to: 'users#dashboard' + get 'authors', to: 'users#index' - get 'feeds/all' => 'feeds#all', :format => 'rss' - get 'feeds/license/:id' => 'feeds#license', :format => 'rss' - get 'feeds/author/:id' => 'feeds#author', :format => 'rss' - get 'feeds/tag/:id' => 'feeds#tag', :format => 'rss' + get 'images/:url', to: 'images#fetch' - get 'tms/:id/alt/:z/:x/:y.png' => 'utility#tms_alt' - get 'tms/:id/' => 'utility#tms_info' - get 'tms/:id/alt/' => 'utility#tms_info' + get 'tms/:id/alt/:z/:x/:y.png', to: 'utility#tms_alt' + get 'tms/:id/', to: 'utility#tms_info' + get 'tms/:id/alt/', to: 'utility#tms_info' # once we have string-based ids, reorganize these around 'maps' and resourceful routing - get 'map/map' => 'maps#map' - get 'search/:id' => 'maps#search' - get 'search' => 'maps#search' - get 'map/archive/:id' => 'maps#archive' - get 'map/region/:id' => 'maps#region' - get 'map/license/:id' => 'maps#license' - get 'maps/featured' => 'maps#featured' - get 'map/view/:id', to: redirect('/maps/%{id}') # legacy - get 'maps/:id/annotate' => 'maps#annotate' - get 'maps/exports/:id' => 'maps#exports' - get 'maps/:id/warpables' => 'maps#images' # deprecate this in favor of resourceful route below; this is just to override maps/:id - post 'maps/:map_id/warpables' => 'images#create' # deprecate this in favor of resourceful route below; this is just to override maps/:id - get 'export/progress/:id' => 'export#progress' - get 'export/status/:id' => 'export#status' + get 'search/:id', to: 'maps#search' + get 'search', to: 'maps#search' + get 'maps/:id/warpables', to: 'maps#images' # deprecate this in favor of resourceful route below; this is just to override maps/:id + get 'maps/view/:id', to: redirect('/maps/%{id}') # legacy + get 'export/progress/:id', to: 'export#progress' + get 'export/status/:id', to: 'export#status' + get 'exports', to: 'export#index' post 'export' => 'export#create' - get 'exports' => 'export#index' get 'map/:id', to: redirect('/maps/%{id}') - get 'embed/:id' => 'maps#embed' - post 'maps/export/:id' => 'maps#export' - post 'maps/:id' => 'maps#export' + get 'embed/:id', to: 'maps#embed' + post 'maps/:map_id/warpables', to: 'images#create' # deprecate this in favor of resourceful route below; this is just to override maps/:id + post 'maps/export/:id', to: 'maps#export' + post 'maps/:id', to: 'maps#export' - get 'import/:name' => 'images#import' # this was for auto-adding images via URL - post 'export/:action/:id' => 'export' + get 'import/:name', to: 'images#import' # this was for auto-adding images via URL + + namespace 'feeds' do + %w(all clean).each do |action| + get action, action: action, format: 'rss' + end + + %w(license author tag).each do |action| + get action + "/:id", action: action, format: 'rss' + end + end + + namespace 'maps' do + %w(map featured region license).each do |action| + get action, action: action + end + + %w(archive exports region license).each do |action| + get action + "/:id", action: action + end + + %w(annotate warpables).each do |action| + get "/:id/" + action, action: action + end + end + + namespace 'export' do + %w(index logger jpg geotiff cancel + progress status external_url_test).each do |action| + post action + "/:id", action: action + end + end # make these resourceful after renaming warpables to images post 'images/create/:id' => 'images#create' # used? @@ -88,13 +108,6 @@ end end - # See how all your routes lay out with 'rake routes' - - # This is a legacy wild controller route that's not recommended for RESTful applications. - # Note: This route will make all actions in every controller accessible via GET requests. - get ':controller/:action' - get ':controller/:action/:id' - get ':controller/:action.:format' - get ':controller/:action/:id.:format' + # See how all your routes lay out with 'rails routes' end diff --git a/config/spring.rb b/config/spring.rb new file mode 100644 index 000000000..b54a862a0 --- /dev/null +++ b/config/spring.rb @@ -0,0 +1,6 @@ +%w[ + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +].each { |path| Spring.watch(path) } \ No newline at end of file diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 000000000..d32f76e8f --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/db/migrate/20090309034933_create_tweets.rb b/db/migrate/20090309034933_create_tweets.rb index 89acd7baf..15865229c 100644 --- a/db/migrate/20090309034933_create_tweets.rb +++ b/db/migrate/20090309034933_create_tweets.rb @@ -1,4 +1,4 @@ -class CreateTweets < ActiveRecord::Migration +class CreateTweets < ActiveRecord::Migration[5.2] def self.up create_table :tweets do |t| diff --git a/db/migrate/20090309220337_create_messages.rb b/db/migrate/20090309220337_create_messages.rb index 5ddc555bd..3cb3848ec 100644 --- a/db/migrate/20090309220337_create_messages.rb +++ b/db/migrate/20090309220337_create_messages.rb @@ -1,4 +1,4 @@ -class CreateMessages < ActiveRecord::Migration +class CreateMessages < ActiveRecord::Migration[5.2] def self.up create_table :messages do |t| t.string :author diff --git a/db/migrate/20090323162902_add_message_id.rb b/db/migrate/20090323162902_add_message_id.rb index 8588293c4..a7fd5882f 100644 --- a/db/migrate/20090323162902_add_message_id.rb +++ b/db/migrate/20090323162902_add_message_id.rb @@ -1,4 +1,4 @@ -class AddMessageId < ActiveRecord::Migration +class AddMessageId < ActiveRecord::Migration[5.2] def self.up add_column :keyvalues, :message_id, :integer, :default => 0 end diff --git a/db/migrate/20090605191716_create_nodes.rb b/db/migrate/20090605191716_create_nodes.rb index ee0b41645..149b1fc18 100644 --- a/db/migrate/20090605191716_create_nodes.rb +++ b/db/migrate/20090605191716_create_nodes.rb @@ -1,4 +1,4 @@ -class CreateNodes < ActiveRecord::Migration +class CreateNodes < ActiveRecord::Migration[5.2] def self.up create_table :nodes do |t| t.string :color, :default => 'red' diff --git a/db/migrate/20090605201606_create_ways.rb b/db/migrate/20090605201606_create_ways.rb index f2f97ea19..72111b1b1 100644 --- a/db/migrate/20090605201606_create_ways.rb +++ b/db/migrate/20090605201606_create_ways.rb @@ -1,4 +1,4 @@ -class CreateWays < ActiveRecord::Migration +class CreateWays < ActiveRecord::Migration[5.2] def self.up create_table :ways do |t| t.string :color, :default => 'red' diff --git a/db/migrate/20090611170805_create_sms.rb b/db/migrate/20090611170805_create_sms.rb index ffc9b50d8..d653a2269 100644 --- a/db/migrate/20090611170805_create_sms.rb +++ b/db/migrate/20090611170805_create_sms.rb @@ -1,4 +1,4 @@ -class CreateSms < ActiveRecord::Migration +class CreateSms < ActiveRecord::Migration[5.2] def self.up # create_table "frontline_actions_triggers", :id => false, :force => true do |t| # t.integer "action_id" diff --git a/db/migrate/20090611204112_add_name_desc_nodes_ways.rb b/db/migrate/20090611204112_add_name_desc_nodes_ways.rb index 6b0f39950..7f09f57de 100644 --- a/db/migrate/20090611204112_add_name_desc_nodes_ways.rb +++ b/db/migrate/20090611204112_add_name_desc_nodes_ways.rb @@ -1,4 +1,4 @@ -class AddNameDescNodesWays < ActiveRecord::Migration +class AddNameDescNodesWays < ActiveRecord::Migration[5.2] def self.up add_column :ways, :name, :string, :default => "" add_column :ways, :description, :string, :default => "" diff --git a/db/migrate/20090611205227_change_lat_lon_types.rb b/db/migrate/20090611205227_change_lat_lon_types.rb index f586e0b1c..952038a8e 100644 --- a/db/migrate/20090611205227_change_lat_lon_types.rb +++ b/db/migrate/20090611205227_change_lat_lon_types.rb @@ -1,4 +1,4 @@ -class ChangeLatLonTypes < ActiveRecord::Migration +class ChangeLatLonTypes < ActiveRecord::Migration[5.2] def self.up drop_table :ways drop_table :nodes diff --git a/db/migrate/20090612011846_add_way_complete.rb b/db/migrate/20090612011846_add_way_complete.rb index 5ec563608..80f6708e3 100644 --- a/db/migrate/20090612011846_add_way_complete.rb +++ b/db/migrate/20090612011846_add_way_complete.rb @@ -1,4 +1,4 @@ -class AddWayComplete < ActiveRecord::Migration +class AddWayComplete < ActiveRecord::Migration[5.2] def self.up add_column :ways, :complete, :boolean, :default => true end diff --git a/db/migrate/20091016214109_create_maps.rb b/db/migrate/20091016214109_create_maps.rb index d0dd25b39..55688a4ce 100644 --- a/db/migrate/20091016214109_create_maps.rb +++ b/db/migrate/20091016214109_create_maps.rb @@ -1,4 +1,4 @@ -class CreateMaps < ActiveRecord::Migration +class CreateMaps < ActiveRecord::Migration[5.2] def self.up create_table :maps do |t| t.string :name, :default => '' diff --git a/db/migrate/20100301013330_create_warpables.rb b/db/migrate/20100301013330_create_warpables.rb index f0b157399..76d3acdde 100644 --- a/db/migrate/20100301013330_create_warpables.rb +++ b/db/migrate/20100301013330_create_warpables.rb @@ -1,4 +1,4 @@ -class CreateWarpables < ActiveRecord::Migration +class CreateWarpables < ActiveRecord::Migration[5.2] def self.up create_table :warpables do |t| t.column :parent_id, :integer diff --git a/db/migrate/20100306184916_add_map_id.rb b/db/migrate/20100306184916_add_map_id.rb index b4d92d8f8..1c585b638 100644 --- a/db/migrate/20100306184916_add_map_id.rb +++ b/db/migrate/20100306184916_add_map_id.rb @@ -1,4 +1,4 @@ -class AddMapId < ActiveRecord::Migration +class AddMapId < ActiveRecord::Migration[5.2] def self.up add_column :warpables, :map_id, :integer, :default => 0 end diff --git a/db/migrate/20100308193343_add_map_description_author.rb b/db/migrate/20100308193343_add_map_description_author.rb index aa963e37f..274c871dd 100644 --- a/db/migrate/20100308193343_add_map_description_author.rb +++ b/db/migrate/20100308193343_add_map_description_author.rb @@ -1,4 +1,4 @@ -class AddMapDescriptionAuthor < ActiveRecord::Migration +class AddMapDescriptionAuthor < ActiveRecord::Migration[5.2] def self.up add_column :maps, :description, :text, :default => '' add_column :maps, :author, :string, :default => 'anonymous' diff --git a/db/migrate/20100310191643_add_warper_data.rb b/db/migrate/20100310191643_add_warper_data.rb index f19115b8c..62611f85b 100644 --- a/db/migrate/20100310191643_add_warper_data.rb +++ b/db/migrate/20100310191643_add_warper_data.rb @@ -1,4 +1,4 @@ -class AddWarperData < ActiveRecord::Migration +class AddWarperData < ActiveRecord::Migration[5.2] def self.up add_column :warpables, :nodes, :string, :default => '' end diff --git a/db/migrate/20100316142953_zoom_to_float.rb b/db/migrate/20100316142953_zoom_to_float.rb index 05c9715a5..a3a0288b5 100644 --- a/db/migrate/20100316142953_zoom_to_float.rb +++ b/db/migrate/20100316142953_zoom_to_float.rb @@ -1,4 +1,4 @@ -class ZoomToFloat < ActiveRecord::Migration +class ZoomToFloat < ActiveRecord::Migration[5.2] def self.up remove_column :maps, :zoom add_column :maps, :zoom, :decimal, :precision => 15, :scale => 10, :default => 2 diff --git a/db/migrate/20100330233734_add_location.rb b/db/migrate/20100330233734_add_location.rb index efd42ac0f..b9abc6996 100644 --- a/db/migrate/20100330233734_add_location.rb +++ b/db/migrate/20100330233734_add_location.rb @@ -1,4 +1,4 @@ -class AddLocation < ActiveRecord::Migration +class AddLocation < ActiveRecord::Migration[5.2] def self.up add_column :maps, :location, :string, :default => '' end diff --git a/db/migrate/20100404061203_add_warpable_lock.rb b/db/migrate/20100404061203_add_warpable_lock.rb index 9d1dac195..434629939 100644 --- a/db/migrate/20100404061203_add_warpable_lock.rb +++ b/db/migrate/20100404061203_add_warpable_lock.rb @@ -1,4 +1,4 @@ -class AddWarpableLock < ActiveRecord::Migration +class AddWarpableLock < ActiveRecord::Migration[5.2] def self.up add_column :warpables, :locked, :boolean, :default => false, :null => false end diff --git a/db/migrate/20100505153420_add_warpable_deleted.rb b/db/migrate/20100505153420_add_warpable_deleted.rb index 47d5de9e6..e865431ba 100644 --- a/db/migrate/20100505153420_add_warpable_deleted.rb +++ b/db/migrate/20100505153420_add_warpable_deleted.rb @@ -1,4 +1,4 @@ -class AddWarpableDeleted < ActiveRecord::Migration +class AddWarpableDeleted < ActiveRecord::Migration[5.2] def self.up add_column :warpables, :deleted, :boolean, :default => false, :null => false end diff --git a/db/migrate/20100531175725_create_warps.rb b/db/migrate/20100531175725_create_warps.rb index faada095d..ae8f5d1fd 100644 --- a/db/migrate/20100531175725_create_warps.rb +++ b/db/migrate/20100531175725_create_warps.rb @@ -1,4 +1,4 @@ -class CreateWarps < ActiveRecord::Migration +class CreateWarps < ActiveRecord::Migration[5.2] def self.up create_table :warps do |t| t.integer :parent_id diff --git a/db/migrate/20100614190507_add_warp_map_id.rb b/db/migrate/20100614190507_add_warp_map_id.rb index 9f3a5e2f8..fd90481ae 100644 --- a/db/migrate/20100614190507_add_warp_map_id.rb +++ b/db/migrate/20100614190507_add_warp_map_id.rb @@ -1,4 +1,4 @@ -class AddWarpMapId < ActiveRecord::Migration +class AddWarpMapId < ActiveRecord::Migration[5.2] def self.up add_column :warps, :map_id, :integer, :default => 0, :null => false add_column :warps, :warpable_id, :integer, :default => 0, :null => false diff --git a/db/migrate/20100709061039_add_static_data_maps.rb b/db/migrate/20100709061039_add_static_data_maps.rb index b033cda3b..162e6a7b8 100644 --- a/db/migrate/20100709061039_add_static_data_maps.rb +++ b/db/migrate/20100709061039_add_static_data_maps.rb @@ -1,4 +1,4 @@ -class AddStaticDataMaps < ActiveRecord::Migration +class AddStaticDataMaps < ActiveRecord::Migration[5.2] def self.up add_column :maps, :static_data, :string, :default => '' end diff --git a/db/migrate/20100731141421_add_warps_additional_fields.rb b/db/migrate/20100731141421_add_warps_additional_fields.rb index b4d8cfcb0..82429d2ba 100644 --- a/db/migrate/20100731141421_add_warps_additional_fields.rb +++ b/db/migrate/20100731141421_add_warps_additional_fields.rb @@ -1,4 +1,4 @@ -class AddWarpsAdditionalFields < ActiveRecord::Migration +class AddWarpsAdditionalFields < ActiveRecord::Migration[5.2] def self.up drop_table :warps create_table :exports do |t| diff --git a/db/migrate/20101014151404_add_vectors_tiles.rb b/db/migrate/20101014151404_add_vectors_tiles.rb index d29cc1d1e..c1726b58d 100644 --- a/db/migrate/20101014151404_add_vectors_tiles.rb +++ b/db/migrate/20101014151404_add_vectors_tiles.rb @@ -1,4 +1,4 @@ -class AddVectorsTiles < ActiveRecord::Migration +class AddVectorsTiles < ActiveRecord::Migration[5.2] def self.up add_column :maps, :vectors, :boolean, :default => true, :null => false add_column :maps, :tiles, :string, :default => '', :null => false diff --git a/db/migrate/20110701105813_change_map_tile_default.rb b/db/migrate/20110701105813_change_map_tile_default.rb index c4cfb0680..c5cde0963 100644 --- a/db/migrate/20110701105813_change_map_tile_default.rb +++ b/db/migrate/20110701105813_change_map_tile_default.rb @@ -1,4 +1,4 @@ -class ChangeMapTileDefault < ActiveRecord::Migration +class ChangeMapTileDefault < ActiveRecord::Migration[5.2] def self.up change_column_default(:maps, :tiles, "google") end diff --git a/db/migrate/20110813004143_change_map_vector_default.rb b/db/migrate/20110813004143_change_map_vector_default.rb index 24233c365..d9bd6cfbd 100644 --- a/db/migrate/20110813004143_change_map_vector_default.rb +++ b/db/migrate/20110813004143_change_map_vector_default.rb @@ -1,4 +1,4 @@ -class ChangeMapVectorDefault < ActiveRecord::Migration +class ChangeMapVectorDefault < ActiveRecord::Migration[5.2] def self.up change_column_default(:maps, :vectors, false) end diff --git a/db/migrate/20110916060555_cleanup_knitter_add_map_archive_and_user_email.rb b/db/migrate/20110916060555_cleanup_knitter_add_map_archive_and_user_email.rb index 66929045d..6ee14a666 100644 --- a/db/migrate/20110916060555_cleanup_knitter_add_map_archive_and_user_email.rb +++ b/db/migrate/20110916060555_cleanup_knitter_add_map_archive_and_user_email.rb @@ -1,4 +1,4 @@ -class CleanupKnitterAddMapArchiveAndUserEmail < ActiveRecord::Migration +class CleanupKnitterAddMapArchiveAndUserEmail < ActiveRecord::Migration[5.2] def self.up add_column :maps, :email, :string, :default => "", :null => false add_column :maps, :archived, :boolean, :default => false, :null => false diff --git a/db/migrate/20111005211631_add_zip_warpable_res_history.rb b/db/migrate/20111005211631_add_zip_warpable_res_history.rb index 3aa796b1e..eb2520cca 100644 --- a/db/migrate/20111005211631_add_zip_warpable_res_history.rb +++ b/db/migrate/20111005211631_add_zip_warpable_res_history.rb @@ -1,4 +1,4 @@ -class AddZipWarpableResHistory < ActiveRecord::Migration +class AddZipWarpableResHistory < ActiveRecord::Migration[5.2] def self.up add_column :warpables, :history, :text, :default => "", :null => false add_column :warpables, :cm_per_pixel, :float, :default => 0, :null => false diff --git a/db/migrate/20111006153011_add_map_tile_url.rb b/db/migrate/20111006153011_add_map_tile_url.rb index b915968f0..2034f0f96 100644 --- a/db/migrate/20111006153011_add_map_tile_url.rb +++ b/db/migrate/20111006153011_add_map_tile_url.rb @@ -1,4 +1,4 @@ -class AddMapTileUrl < ActiveRecord::Migration +class AddMapTileUrl < ActiveRecord::Migration[5.2] def self.up add_column :maps, :tile_url, :text, :default => "", :null => false add_column :maps, :tile_layer, :text, :default => "", :null => false diff --git a/db/migrate/20120104164144_add_export_type_bands.rb b/db/migrate/20120104164144_add_export_type_bands.rb index 199bd4107..572efea6c 100644 --- a/db/migrate/20120104164144_add_export_type_bands.rb +++ b/db/migrate/20120104164144_add_export_type_bands.rb @@ -1,4 +1,4 @@ -class AddExportTypeBands < ActiveRecord::Migration +class AddExportTypeBands < ActiveRecord::Migration[5.2] def self.up add_column :exports, :bands_string, :text, :default => "", :null => false add_column :exports, :export_type, :string, :default => "normal", :null => false diff --git a/db/migrate/20120229164021_add_license.rb b/db/migrate/20120229164021_add_license.rb index 878d4e257..264ee34dc 100644 --- a/db/migrate/20120229164021_add_license.rb +++ b/db/migrate/20120229164021_add_license.rb @@ -1,4 +1,4 @@ -class AddLicense < ActiveRecord::Migration +class AddLicense < ActiveRecord::Migration[5.2] def self.up add_column :maps, :license, :string, :default => 'copyright' end diff --git a/db/migrate/20120525201148_create_users.rb b/db/migrate/20120525201148_create_users.rb index e4f11da29..5ff54a0b0 100644 --- a/db/migrate/20120525201148_create_users.rb +++ b/db/migrate/20120525201148_create_users.rb @@ -1,4 +1,4 @@ -class CreateUsers < ActiveRecord::Migration +class CreateUsers < ActiveRecord::Migration[5.2] def self.up create_table "users", :force => true do |t| t.string :login, :limit => 40 diff --git a/db/migrate/20120525215158_add_user_role_default.rb b/db/migrate/20120525215158_add_user_role_default.rb index 637b26eb7..cf41cb86a 100644 --- a/db/migrate/20120525215158_add_user_role_default.rb +++ b/db/migrate/20120525215158_add_user_role_default.rb @@ -1,4 +1,4 @@ -class AddUserRoleDefault < ActiveRecord::Migration +class AddUserRoleDefault < ActiveRecord::Migration[5.2] def self.up change_column_default(:users, :role, "basic") end diff --git a/db/migrate/20120601185008_remove_identity_url_limit.rb b/db/migrate/20120601185008_remove_identity_url_limit.rb index 9d558b49b..822e21f2c 100644 --- a/db/migrate/20120601185008_remove_identity_url_limit.rb +++ b/db/migrate/20120601185008_remove_identity_url_limit.rb @@ -1,4 +1,4 @@ -class RemoveIdentityUrlLimit < ActiveRecord::Migration +class RemoveIdentityUrlLimit < ActiveRecord::Migration[5.2] def self.up change_column :users, :identity_url, :string, :limit => 255 end diff --git a/db/migrate/20120701165519_create_tags.rb b/db/migrate/20120701165519_create_tags.rb index c2938bba2..37c7467ec 100644 --- a/db/migrate/20120701165519_create_tags.rb +++ b/db/migrate/20120701165519_create_tags.rb @@ -1,4 +1,4 @@ -class CreateTags < ActiveRecord::Migration +class CreateTags < ActiveRecord::Migration[5.2] def self.up create_table :tags do |t| t.string :user_id diff --git a/db/migrate/20130113164917_add_node_map_id.rb b/db/migrate/20130113164917_add_node_map_id.rb index 63eb584d6..6058876f8 100644 --- a/db/migrate/20130113164917_add_node_map_id.rb +++ b/db/migrate/20130113164917_add_node_map_id.rb @@ -1,4 +1,4 @@ -class AddNodeMapId < ActiveRecord::Migration +class AddNodeMapId < ActiveRecord::Migration[5.2] def self.up add_column :nodes, :map_id, :integer, :default => 0 add_column :ways, :map_id, :integer, :default => 0 diff --git a/db/migrate/20130124160539_add_way_order.rb b/db/migrate/20130124160539_add_way_order.rb index 8d084d6a8..afd989761 100644 --- a/db/migrate/20130124160539_add_way_order.rb +++ b/db/migrate/20130124160539_add_way_order.rb @@ -1,4 +1,4 @@ -class AddWayOrder < ActiveRecord::Migration +class AddWayOrder < ActiveRecord::Migration[5.2] def self.up add_column :nodes, :way_order, :integer, :default => 0 end diff --git a/db/migrate/20130128184718_add_node_and_way_body.rb b/db/migrate/20130128184718_add_node_and_way_body.rb index 7a0d13070..dd91eb697 100644 --- a/db/migrate/20130128184718_add_node_and_way_body.rb +++ b/db/migrate/20130128184718_add_node_and_way_body.rb @@ -1,4 +1,4 @@ -class AddNodeAndWayBody < ActiveRecord::Migration +class AddNodeAndWayBody < ActiveRecord::Migration[5.2] def self.up add_column :nodes, :body, :text add_column :ways, :body, :text diff --git a/db/migrate/20130605202555_add_map_anonymously_annotatable.rb b/db/migrate/20130605202555_add_map_anonymously_annotatable.rb index ef5f01f23..37a2906bb 100644 --- a/db/migrate/20130605202555_add_map_anonymously_annotatable.rb +++ b/db/migrate/20130605202555_add_map_anonymously_annotatable.rb @@ -1,4 +1,4 @@ -class AddMapAnonymouslyAnnotatable < ActiveRecord::Migration +class AddMapAnonymouslyAnnotatable < ActiveRecord::Migration[5.2] def self.up add_column :maps, :anon_annotatable, :boolean, :default => false end diff --git a/db/migrate/20140811184901_add_tag_index.rb b/db/migrate/20140811184901_add_tag_index.rb index fbc6cff1e..28c273e09 100644 --- a/db/migrate/20140811184901_add_tag_index.rb +++ b/db/migrate/20140811184901_add_tag_index.rb @@ -1,4 +1,4 @@ -class AddTagIndex < ActiveRecord::Migration +class AddTagIndex < ActiveRecord::Migration[5.2] def self.up add_index :tags, :map_id add_index :tags, :warpable_id diff --git a/db/migrate/20140811185342_create_comments.rb b/db/migrate/20140811185342_create_comments.rb index aea70043b..36a5b1fb9 100644 --- a/db/migrate/20140811185342_create_comments.rb +++ b/db/migrate/20140811185342_create_comments.rb @@ -1,4 +1,4 @@ -class CreateComments < ActiveRecord::Migration +class CreateComments < ActiveRecord::Migration[5.2] def self.up create_table :comments do |t| t.string :user_id diff --git a/db/migrate/20140902182631_create_annotations.rb b/db/migrate/20140902182631_create_annotations.rb index 0dbe8471e..9be8d2ea8 100644 --- a/db/migrate/20140902182631_create_annotations.rb +++ b/db/migrate/20140902182631_create_annotations.rb @@ -1,4 +1,4 @@ -class CreateAnnotations < ActiveRecord::Migration +class CreateAnnotations < ActiveRecord::Migration[5.2] def self.up create_table :annotations do |t| t.integer :map_id diff --git a/db/migrate/20140902201706_rename_annotation_type.rb b/db/migrate/20140902201706_rename_annotation_type.rb index 26bd9bd3d..b657ff5eb 100644 --- a/db/migrate/20140902201706_rename_annotation_type.rb +++ b/db/migrate/20140902201706_rename_annotation_type.rb @@ -1,4 +1,4 @@ -class RenameAnnotationType < ActiveRecord::Migration +class RenameAnnotationType < ActiveRecord::Migration[5.2] def self.up rename_column :annotations, :type, :annotation_type end diff --git a/db/migrate/20141103164503_change_warpable_columns.rb b/db/migrate/20141103164503_change_warpable_columns.rb index aa22ccff0..dd9d97d0c 100644 --- a/db/migrate/20141103164503_change_warpable_columns.rb +++ b/db/migrate/20141103164503_change_warpable_columns.rb @@ -1,4 +1,4 @@ -class ChangeWarpableColumns < ActiveRecord::Migration +class ChangeWarpableColumns < ActiveRecord::Migration[5.2] def up rename_column(:warpables, :filename, :image_file_name) rename_column(:warpables, :content_type, :image_content_type) diff --git a/db/migrate/20141104184417_change_openid_identity_urls.rb b/db/migrate/20141104184417_change_openid_identity_urls.rb index 941426cc9..b079ffce8 100644 --- a/db/migrate/20141104184417_change_openid_identity_urls.rb +++ b/db/migrate/20141104184417_change_openid_identity_urls.rb @@ -1,4 +1,4 @@ -class ChangeOpenidIdentityUrls < ActiveRecord::Migration +class ChangeOpenidIdentityUrls < ActiveRecord::Migration[5.2] def up users = User.find :all diff --git a/db/migrate/20150117041411_add_slug_field_to_maps.rb b/db/migrate/20150117041411_add_slug_field_to_maps.rb index 023037296..4cd5072a8 100644 --- a/db/migrate/20150117041411_add_slug_field_to_maps.rb +++ b/db/migrate/20150117041411_add_slug_field_to_maps.rb @@ -1,4 +1,4 @@ -class AddSlugFieldToMaps < ActiveRecord::Migration +class AddSlugFieldToMaps < ActiveRecord::Migration[5.2] def change # There are some duplicate maps, but none have images, so we can delete dupes that don't have images. dupes = [] diff --git a/db/migrate/20150117041704_move_current_values_in_map_name_to_slug_field.rb b/db/migrate/20150117041704_move_current_values_in_map_name_to_slug_field.rb index 5b3ad170a..6bb1a01a2 100644 --- a/db/migrate/20150117041704_move_current_values_in_map_name_to_slug_field.rb +++ b/db/migrate/20150117041704_move_current_values_in_map_name_to_slug_field.rb @@ -1,4 +1,4 @@ -class MoveCurrentValuesInMapNameToSlugField < ActiveRecord::Migration +class MoveCurrentValuesInMapNameToSlugField < ActiveRecord::Migration[5.2] def up execute "UPDATE maps m SET m.slug = m.name" end diff --git a/db/migrate/20150715162314_change_map_null.rb b/db/migrate/20150715162314_change_map_null.rb index 1ddd7e990..c4d25fec9 100644 --- a/db/migrate/20150715162314_change_map_null.rb +++ b/db/migrate/20150715162314_change_map_null.rb @@ -1,4 +1,4 @@ -class ChangeMapNull < ActiveRecord::Migration +class ChangeMapNull < ActiveRecord::Migration[5.2] def up change_column_null :maps, :tile_url, true change_column_null :maps, :tile_layer, true diff --git a/db/migrate/20190420025012_add_remote_url_to_exports.rb b/db/migrate/20190420025012_add_remote_url_to_exports.rb index ac9a0bc68..53a1859a0 100644 --- a/db/migrate/20190420025012_add_remote_url_to_exports.rb +++ b/db/migrate/20190420025012_add_remote_url_to_exports.rb @@ -1,4 +1,4 @@ -class AddRemoteUrlToExports < ActiveRecord::Migration +class AddRemoteUrlToExports < ActiveRecord::Migration[5.2] def change add_column :exports, :export_url, :string end diff --git a/db/migrate/20190715092943_create_versions.rb b/db/migrate/20190715092943_create_versions.rb index bfffb7c68..334e1c360 100644 --- a/db/migrate/20190715092943_create_versions.rb +++ b/db/migrate/20190715092943_create_versions.rb @@ -1,6 +1,6 @@ # This migration creates the `versions` table, the only schema PT requires. # All other migrations PT provides are optional. -class CreateVersions < ActiveRecord::Migration +class CreateVersions < ActiveRecord::Migration[5.2] # The largest text column available in all supported RDBMS is # 1024^3 - 1 bytes, roughly one gibibyte. We specify a size diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 000000000..220d6e9d8 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,161 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20190420025012) do + + create_table "annotations", force: :cascade do |t| + t.integer "map_id", limit: 4 + t.integer "user_id", limit: 4 + t.string "annotation_type", limit: 255 + t.string "text", limit: 255 + t.string "style", limit: 255 + t.string "coordinates", limit: 255 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "comments", force: :cascade do |t| + t.string "user_id", limit: 255 + t.string "body", limit: 255 + t.integer "map_id", limit: 4 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "exports", force: :cascade do |t| + t.integer "map_id", limit: 4, default: 0 + t.integer "size", limit: 4, default: 0 + t.integer "width", limit: 4, default: 0 + t.integer "height", limit: 4, default: 0 + t.float "cm_per_pixel", limit: 24, default: 0.0 + t.string "status", limit: 255, default: "none" + t.boolean "tms", default: false + t.boolean "jpg", default: false + t.boolean "geotiff", default: false + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "zip", default: false, null: false + t.text "bands_string", limit: 65535, null: false + t.string "export_type", limit: 255, default: "normal", null: false + t.integer "user_id", limit: 4, default: 0 + t.string "export_url", limit: 255 + end + + create_table "maps", force: :cascade do |t| + t.string "name", limit: 255, default: "" + t.decimal "lat", precision: 20, scale: 10, default: 0.0 + t.decimal "lon", precision: 20, scale: 10, default: 0.0 + t.integer "version", limit: 4, default: 1 + t.string "password", limit: 255, default: "" + t.text "styles", limit: 65535 + t.datetime "created_at" + t.datetime "updated_at" + t.text "description", limit: 65535 + t.string "author", limit: 255, default: "anonymous" + t.decimal "zoom", precision: 15, scale: 10, default: 2.0 + t.string "location", limit: 255, default: "" + t.string "static_data", limit: 255, default: "" + t.boolean "vectors", default: false, null: false + t.string "tiles", limit: 255, default: "google", null: false + t.string "email", limit: 255, default: "", null: false + t.boolean "archived", default: false, null: false + t.text "tile_url", limit: 65535 + t.text "tile_layer", limit: 65535 + t.string "license", limit: 255, default: "copyright" + t.integer "user_id", limit: 4, default: 0 + t.boolean "anon_annotatable", default: false + t.string "slug", limit: 255 + end + + add_index "maps", ["slug"], name: "index_maps_on_slug", unique: true, using: :btree + + create_table "nodes", force: :cascade do |t| + t.string "color", limit: 255, default: "red" + t.string "author", limit: 255, default: "anonymous" + t.decimal "lat", precision: 20, scale: 10, default: 0.0 + t.decimal "lon", precision: 20, scale: 10, default: 0.0 + t.integer "way_id", limit: 4, default: 0 + t.integer "order", limit: 4, default: 0 + t.datetime "created_at" + t.datetime "updated_at" + t.string "name", limit: 255, default: "" + t.string "description", limit: 255, default: "" + t.integer "map_id", limit: 4, default: 0 + t.integer "way_order", limit: 4, default: 0 + t.text "body", limit: 65535 + end + + create_table "tags", force: :cascade do |t| + t.string "user_id", limit: 255 + t.string "name", limit: 255 + t.integer "map_id", limit: 4 + t.integer "warpable_id", limit: 4 + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "tags", ["map_id"], name: "index_tags_on_map_id", using: :btree + add_index "tags", ["user_id"], name: "index_tags_on_user_id", using: :btree + add_index "tags", ["warpable_id"], name: "index_tags_on_warpable_id", using: :btree + + create_table "users", force: :cascade do |t| + t.string "login", limit: 40 + t.string "name", limit: 100, default: "" + t.string "email", limit: 100 + t.string "crypted_password", limit: 40 + t.string "salt", limit: 40 + t.string "identity_url", limit: 255 + t.string "role", limit: 40, default: "basic" + t.datetime "created_at" + t.datetime "updated_at" + t.string "remember_token", limit: 40 + t.datetime "remember_token_expires_at" + end + + add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree + + create_table "warpables", force: :cascade do |t| + t.integer "parent_id", limit: 4 + t.string "image_content_type", limit: 255 + t.string "image_file_name", limit: 255 + t.string "thumbnail", limit: 255 + t.integer "image_file_size", limit: 4 + t.integer "width", limit: 4 + t.integer "height", limit: 4 + t.datetime "created_at" + t.datetime "updated_at" + t.integer "map_id", limit: 4, default: 0 + t.string "nodes", limit: 255, default: "" + t.boolean "locked", default: false, null: false + t.boolean "deleted", default: false, null: false + t.text "history", limit: 65535, null: false + t.float "cm_per_pixel", limit: 24, default: 0.0, null: false + end + + create_table "ways", force: :cascade do |t| + t.string "color", limit: 255, default: "red" + t.string "author", limit: 255, default: "anonymous" + t.decimal "lat1", precision: 20, scale: 10, default: 0.0 + t.decimal "lat2", precision: 20, scale: 10, default: 0.0 + t.decimal "lon1", precision: 20, scale: 10, default: 0.0 + t.decimal "lon2", precision: 20, scale: 10, default: 0.0 + t.datetime "created_at" + t.datetime "updated_at" + t.string "name", limit: 255, default: "" + t.string "description", limit: 255, default: "" + t.boolean "complete", default: true + t.integer "map_id", limit: 4, default: 0 + t.text "body", limit: 65535 + end + +end \ No newline at end of file diff --git a/db/schema.rb.example b/db/schema.rb.example index 6a46422dd..220d6e9d8 100644 --- a/db/schema.rb.example +++ b/db/schema.rb.example @@ -9,152 +9,153 @@ # from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). # -# It's strongly recommended to check this file into your version control system. +# It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(:version => 20150715162314) do +ActiveRecord::Schema.define(version: 20190420025012) do - create_table "annotations", :force => true do |t| - t.integer "map_id" - t.integer "user_id" - t.string "annotation_type" - t.string "text" - t.string "style" - t.string "coordinates" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + create_table "annotations", force: :cascade do |t| + t.integer "map_id", limit: 4 + t.integer "user_id", limit: 4 + t.string "annotation_type", limit: 255 + t.string "text", limit: 255 + t.string "style", limit: 255 + t.string "coordinates", limit: 255 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "comments", :force => true do |t| - t.string "user_id" - t.string "body" - t.integer "map_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + create_table "comments", force: :cascade do |t| + t.string "user_id", limit: 255 + t.string "body", limit: 255 + t.integer "map_id", limit: 4 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end - create_table "exports", :force => true do |t| - t.integer "map_id", :default => 0 - t.integer "size", :default => 0 - t.integer "width", :default => 0 - t.integer "height", :default => 0 - t.float "cm_per_pixel", :default => 0.0 - t.string "status", :default => "none" - t.boolean "tms", :default => false - t.boolean "jpg", :default => false - t.boolean "geotiff", :default => false + create_table "exports", force: :cascade do |t| + t.integer "map_id", limit: 4, default: 0 + t.integer "size", limit: 4, default: 0 + t.integer "width", limit: 4, default: 0 + t.integer "height", limit: 4, default: 0 + t.float "cm_per_pixel", limit: 24, default: 0.0 + t.string "status", limit: 255, default: "none" + t.boolean "tms", default: false + t.boolean "jpg", default: false + t.boolean "geotiff", default: false t.datetime "created_at" t.datetime "updated_at" - t.boolean "zip", :default => false, :null => false - t.text "bands_string", :null => false - t.string "export_type", :default => "normal", :null => false - t.integer "user_id", :default => 0 + t.boolean "zip", default: false, null: false + t.text "bands_string", limit: 65535, null: false + t.string "export_type", limit: 255, default: "normal", null: false + t.integer "user_id", limit: 4, default: 0 + t.string "export_url", limit: 255 end - create_table "maps", :force => true do |t| - t.string "name", :default => "" - t.decimal "lat", :precision => 20, :scale => 10, :default => 0.0 - t.decimal "lon", :precision => 20, :scale => 10, :default => 0.0 - t.integer "version", :default => 1 - t.string "password", :default => "" - t.text "styles" + create_table "maps", force: :cascade do |t| + t.string "name", limit: 255, default: "" + t.decimal "lat", precision: 20, scale: 10, default: 0.0 + t.decimal "lon", precision: 20, scale: 10, default: 0.0 + t.integer "version", limit: 4, default: 1 + t.string "password", limit: 255, default: "" + t.text "styles", limit: 65535 t.datetime "created_at" t.datetime "updated_at" - t.text "description" - t.string "author", :default => "anonymous" - t.decimal "zoom", :precision => 15, :scale => 10, :default => 2.0 - t.string "location", :default => "" - t.string "static_data", :default => "" - t.boolean "vectors", :default => false, :null => false - t.string "tiles", :default => "google", :null => false - t.string "email", :default => "", :null => false - t.boolean "archived", :default => false, :null => false - t.text "tile_url" - t.text "tile_layer" - t.string "license", :default => "copyright" - t.integer "user_id", :default => 0 - t.boolean "anon_annotatable", :default => false - t.string "slug" + t.text "description", limit: 65535 + t.string "author", limit: 255, default: "anonymous" + t.decimal "zoom", precision: 15, scale: 10, default: 2.0 + t.string "location", limit: 255, default: "" + t.string "static_data", limit: 255, default: "" + t.boolean "vectors", default: false, null: false + t.string "tiles", limit: 255, default: "google", null: false + t.string "email", limit: 255, default: "", null: false + t.boolean "archived", default: false, null: false + t.text "tile_url", limit: 65535 + t.text "tile_layer", limit: 65535 + t.string "license", limit: 255, default: "copyright" + t.integer "user_id", limit: 4, default: 0 + t.boolean "anon_annotatable", default: false + t.string "slug", limit: 255 end - add_index "maps", ["slug"], :name => "index_maps_on_slug", :unique => true + add_index "maps", ["slug"], name: "index_maps_on_slug", unique: true, using: :btree - create_table "nodes", :force => true do |t| - t.string "color", :default => "red" - t.string "author", :default => "anonymous" - t.decimal "lat", :precision => 20, :scale => 10, :default => 0.0 - t.decimal "lon", :precision => 20, :scale => 10, :default => 0.0 - t.integer "way_id", :default => 0 - t.integer "order", :default => 0 + create_table "nodes", force: :cascade do |t| + t.string "color", limit: 255, default: "red" + t.string "author", limit: 255, default: "anonymous" + t.decimal "lat", precision: 20, scale: 10, default: 0.0 + t.decimal "lon", precision: 20, scale: 10, default: 0.0 + t.integer "way_id", limit: 4, default: 0 + t.integer "order", limit: 4, default: 0 t.datetime "created_at" t.datetime "updated_at" - t.string "name", :default => "" - t.string "description", :default => "" - t.integer "map_id", :default => 0 - t.integer "way_order", :default => 0 - t.text "body" + t.string "name", limit: 255, default: "" + t.string "description", limit: 255, default: "" + t.integer "map_id", limit: 4, default: 0 + t.integer "way_order", limit: 4, default: 0 + t.text "body", limit: 65535 end - create_table "tags", :force => true do |t| - t.string "user_id" - t.string "name" - t.integer "map_id" - t.integer "warpable_id" + create_table "tags", force: :cascade do |t| + t.string "user_id", limit: 255 + t.string "name", limit: 255 + t.integer "map_id", limit: 4 + t.integer "warpable_id", limit: 4 t.datetime "created_at" t.datetime "updated_at" end - add_index "tags", ["map_id"], :name => "index_tags_on_map_id" - add_index "tags", ["user_id"], :name => "index_tags_on_user_id" - add_index "tags", ["warpable_id"], :name => "index_tags_on_warpable_id" + add_index "tags", ["map_id"], name: "index_tags_on_map_id", using: :btree + add_index "tags", ["user_id"], name: "index_tags_on_user_id", using: :btree + add_index "tags", ["warpable_id"], name: "index_tags_on_warpable_id", using: :btree - create_table "users", :force => true do |t| - t.string "login", :limit => 40 - t.string "name", :limit => 100, :default => "" - t.string "email", :limit => 100 - t.string "crypted_password", :limit => 40 - t.string "salt", :limit => 40 - t.string "identity_url" - t.string "role", :limit => 40, :default => "basic" + create_table "users", force: :cascade do |t| + t.string "login", limit: 40 + t.string "name", limit: 100, default: "" + t.string "email", limit: 100 + t.string "crypted_password", limit: 40 + t.string "salt", limit: 40 + t.string "identity_url", limit: 255 + t.string "role", limit: 40, default: "basic" t.datetime "created_at" t.datetime "updated_at" - t.string "remember_token", :limit => 40 + t.string "remember_token", limit: 40 t.datetime "remember_token_expires_at" end - add_index "users", ["login"], :name => "index_users_on_login", :unique => true + add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree - create_table "warpables", :force => true do |t| - t.integer "parent_id" - t.string "image_content_type" - t.string "image_file_name" - t.string "thumbnail" - t.integer "image_file_size" - t.integer "width" - t.integer "height" + create_table "warpables", force: :cascade do |t| + t.integer "parent_id", limit: 4 + t.string "image_content_type", limit: 255 + t.string "image_file_name", limit: 255 + t.string "thumbnail", limit: 255 + t.integer "image_file_size", limit: 4 + t.integer "width", limit: 4 + t.integer "height", limit: 4 t.datetime "created_at" t.datetime "updated_at" - t.integer "map_id", :default => 0 - t.string "nodes", :default => "" - t.boolean "locked", :default => false, :null => false - t.boolean "deleted", :default => false, :null => false - t.text "history", :null => false - t.float "cm_per_pixel", :default => 0.0, :null => false + t.integer "map_id", limit: 4, default: 0 + t.string "nodes", limit: 255, default: "" + t.boolean "locked", default: false, null: false + t.boolean "deleted", default: false, null: false + t.text "history", limit: 65535, null: false + t.float "cm_per_pixel", limit: 24, default: 0.0, null: false end - create_table "ways", :force => true do |t| - t.string "color", :default => "red" - t.string "author", :default => "anonymous" - t.decimal "lat1", :precision => 20, :scale => 10, :default => 0.0 - t.decimal "lat2", :precision => 20, :scale => 10, :default => 0.0 - t.decimal "lon1", :precision => 20, :scale => 10, :default => 0.0 - t.decimal "lon2", :precision => 20, :scale => 10, :default => 0.0 + create_table "ways", force: :cascade do |t| + t.string "color", limit: 255, default: "red" + t.string "author", limit: 255, default: "anonymous" + t.decimal "lat1", precision: 20, scale: 10, default: 0.0 + t.decimal "lat2", precision: 20, scale: 10, default: 0.0 + t.decimal "lon1", precision: 20, scale: 10, default: 0.0 + t.decimal "lon2", precision: 20, scale: 10, default: 0.0 t.datetime "created_at" t.datetime "updated_at" - t.string "name", :default => "" - t.string "description", :default => "" - t.boolean "complete", :default => true - t.integer "map_id", :default => 0 - t.text "body" + t.string "name", limit: 255, default: "" + t.string "description", limit: 255, default: "" + t.boolean "complete", default: true + t.integer "map_id", limit: 4, default: 0 + t.text "body", limit: 65535 end -end +end \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index e11ed81ba..c241b1ef1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/app - bundle_cache:/usr/local/bundle - - yarn_cache:/app/public/lib + - yarn_cache:/app/node_modules/ ports: - $PORT:3000 depends_on: diff --git a/lib/exporter-deps.sh b/lib/exporter-deps.sh index f65bf5969..453cecebd 100755 --- a/lib/exporter-deps.sh +++ b/lib/exporter-deps.sh @@ -1,5 +1,7 @@ sudo add-apt-repository -y ppa:ubuntugis/ppa sudo apt-get update + +# Installing Mapknitter dependencies sudo apt-get install -y gdal-bin \ python3-gdal \ python-gdal \ @@ -14,3 +16,27 @@ sudo apt-get install -y gdal-bin \ ruby-dev \ libmagickcore-dev \ libmagickwand-dev + +# Installing system tests dependencies +sudo apt-get install -y fonts-liberation \ + libappindicator3-1 \ + libasound2 \ + libatk-bridge2.0-0 \ + libatspi2.0-0 \ + libgtk-3-0 \ + libnspr4 \ + libnss3 \ + libx11-xcb1 \ + libxss1 \ + libxtst6 \ + lsb-release \ + xdg-utils + +sudo wget https://github.com/webnicer/chrome-downloads/raw/master/x64.deb/google-chrome-stable_75.0.3770.142-1_amd64.deb \ + -O google-chrome.deb +sudo dpkg -i google-chrome.deb +sudo apt-get -fy install +sudo wget https://chromedriver.storage.googleapis.com/74.0.3729.6/chromedriver_linux64.zip +sudo unzip chromedriver_linux64.zip +sudo mv chromedriver /usr/local/bin/chromedriver +sudo chmod +x /usr/local/bin/chromedriver diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake new file mode 100644 index 000000000..7015511d7 --- /dev/null +++ b/lib/tasks/db.rake @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +namespace :db do + desc "Checks whether the database exists or not" + task :exists do + begin + # Tries to initialize the application. + # It will fail if the database does not exist + Rake::Task["environment"].invoke + ActiveRecord::Base.connection + puts "There is a database" + rescue StandardError + puts "There is NOT a database" + exit 1 + else + exit 0 + end + end +end \ No newline at end of file diff --git a/lib/tasks/test_unit.rake b/lib/tasks/test_unit.rake deleted file mode 100644 index 803b8645b..000000000 --- a/lib/tasks/test_unit.rake +++ /dev/null @@ -1,112 +0,0 @@ -# ==================== # - -# HOW TO RUN # - -# You can find all rake tasks, both those that come built-in with rake / rails and custom created ones, -# by running `rake --tasks`. Note you might need to set up repo configurations before you are able to run this. - -# `rake --tasks`, shows two columns: the name of the rake task (functions as the CLI command to run the task) and the -# description (what the task does). All the tasks created in this file start with "Autotask" in the description -# for easy reference. You can also find the commands (or command patterns for collections) commented above their respective tasks below. - -# TEST STRUCTURE # - -# Currently, you can -# 1) run all unit, functional, and integration tests together. -# 2) run only unit, functional, or integration tests (files within the corresponding folder can be run concurrently or one a time). -# 3) Last, you can run separate test files within the unit, functional, and integration test folders. - -# If proper naming convention is followed, tasks are autogenerated for individual testing files added to the unit, functional, and -# integration folders (see creation of 'COMPUTE' arrays below). - -# ==================== # - -namespace :test do - - # command: rake test:all - # run unit, functional, and integration test folders (one folder at a time, in the order indicated in the pattern below) - Rake::TestTask.new do |t| - t.name = "all" - t.description = "Autotask - run unit, functional, and integration tests" - t.libs << "test" - t.pattern = FileList["test/unit/*_test.rb", "test/functional/*_test.rb", "test/integration/*_test.rb"] - t.warning = false - t.verbose = true - end - - # command pattern: rake test:unit_test_file.rb - # autogenerates a rake task for every test file added to test/unit - COMPUTE_UNIT_TASKS = [] - Dir.glob("test/unit/*_test.rb").each do |task| - collection = task.gsub(/test\/unit\//, "") - Rake::TestTask.new(:"#{collection}") do |t| - t.libs << "test" - t.description = "Autotask - run unit tests - #{collection}" - t.pattern = FileList["test/unit/#{collection}"] - t.warning = false - t.verbose = true - end - COMPUTE_UNIT_TASKS << "#{collection}" - end - - # command: rake test:unit - # run all unit test files (one file at a time in alphabetical order) - desc "Autotask - run unit tests" - task :unit => COMPUTE_UNIT_TASKS - - # command: rake test:unit_parallel - # run all unit test files concurrently (one file at a time, order is not guaranteed) - desc "Autotask - run unit tests in parallel" - multitask :unit_parallel => COMPUTE_UNIT_TASKS - - # command pattern: rake test:functional_test_file.rb - # autogenerates a rake task for every test file added to test/functional - COMPUTE_FUNCTIONAL_TASKS = [] - Dir.glob("test/functional/*_test.rb").each do |task| - collection = task.gsub(/test\/functional\//, "") - Rake::TestTask.new(:"#{collection}") do |t| - t.libs << "test" - t.description = "Autotask - run functional tests - #{collection}" - t.pattern = FileList["test/functional/#{collection}"] - t.warning = false - t.verbose = true - end - COMPUTE_FUNCTIONAL_TASKS << "#{collection}" - end - - # command: rake test:functional - # run all functional test files - desc "Autotask - run functional tests" - task :functional => COMPUTE_FUNCTIONAL_TASKS - - # command: rake test:functional_parallel - # run all functional test files concurrently - desc "Autotask - run functional tests in parallel" - multitask :functional_parallel => COMPUTE_FUNCTIONAL_TASKS - - # command pattern: rake test:integration_test_file.rb - # autogenerates a rake task for every test file added to test/integration - COMPUTE_INTEGRATION_TASKS = [] - Dir.glob("test/integration/*_test.rb").each do |task| - collection = task.gsub(/test\/integration\//, "") - Rake::TestTask.new(:"#{collection}") do |t| - t.libs << "test" - t.description = "Autotask - run integration tests - #{collection}" - t.pattern = FileList["test/integration/#{collection}"] - t.warning = false - t.verbose = true - end - COMPUTE_INTEGRATION_TASKS << "#{collection}" - end - - # command: rake test:integration - # run all integration test files - desc "Autotask - run integration tests" - task :integration => COMPUTE_INTEGRATION_TASKS - - # command: rake test:integration_parallel - # run all integration test files concurrently - desc "Autotask - run integration tests in parallel" - multitask :integration_parallel => COMPUTE_INTEGRATION_TASKS - -end \ No newline at end of file diff --git a/mapknitter.env b/mapknitter.env index eb1a7a8ca..b88791f34 100644 --- a/mapknitter.env +++ b/mapknitter.env @@ -2,4 +2,5 @@ MYSQL_DATABASE=mapknitter MYSQL_USER=mapknitter MYSQL_PASSWORD=mapknitter MYSQL_RANDOM_ROOT_PASSWORD=true +MYSQL_HOST=db RAILS_ENV=production diff --git a/package.json b/package.json index 42c041f92..234a40bfc 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "author": "Public Lab contributors ", "license": "MIT", "dependencies": { + "@fortawesome/fontawesome-free": "^5.9.0", "blueimp-canvas-to-blob": "blueimp/JavaScript-Canvas-to-Blob#>=2.1.1", "blueimp-file-upload": "blueimp/jQuery-File-Upload#~9.22.1", "blueimp-load-image": "blueimp/JavaScript-Load-Image#>=1.13.0", @@ -13,9 +14,9 @@ "bootstrap": "twbs/bootstrap#^4.3.1", "cartagen": "jywarren/cartagen#*", "components-jqueryui": "components/jqueryui#^1.12.1", + "decompress-zip": "0.2.1", "exif-js": "jseidelin/exif-js#*", "glfx-js": "jywarren/glfx.js#*", - "decompress-zip": "0.2.1", "graceful-fs": "4.1.0", "graceful-js": "1.0.0", "image-sequencer": "publiclab/image-sequencer#~1.4.0", @@ -37,6 +38,7 @@ "leaflet-spin": "makinacorpus/Leaflet.Spin#1.1.0", "modalbox": "okonet/modalbox#*", "ol2": "openlayers/ol2#release-2.13.1", + "popper": "^1.0.1", "prototypejs-bower": "plynchnlm/prototypejs-bower#1.7.3", "sparklines": "mariusGundersen/sparkline#~1.2.0", "spin.js": "fgnass/spin.js#^2.3.1", @@ -45,7 +47,5 @@ "engines": { "yarn": ">= 1.0.0" }, - "devDependencies": { - "@fortawesome/fontawesome-free": "^5.9.0" - } + "devDependencies": {} } diff --git a/start.sh b/start.sh index 58478ee61..517a983d1 100755 --- a/start.sh +++ b/start.sh @@ -2,13 +2,26 @@ pidfile=/app/tmp/pids/server.pid +bump_database(){ + bundle exec rails db:schema:load || bundle exec rails db:migrate +} + bundle check || bundle install -yarn check || yarn install + +if bundle exec rails db:exists; then + >&2 echo "Database exists, only migrating it..." + bundle exec rails db:migrate +else + >&2 echo "Database doesn't exist, creating and migrating it..." + bundle exec rails db:create + bump_database +fi + +bundle exec rails assets:precompile if [ -f $pidfile ] ; then >&2 echo 'Server PID file already exists. Removing it...'; rm $pidfile; fi -#bundle exec /usr/local/bundle/bin/passenger start bundle exec passenger start diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb new file mode 100644 index 000000000..13edbb606 --- /dev/null +++ b/test/application_system_test_case.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + chromeOptions = %w(--headless --disable-gpu --no-sandbox --remote-debugging-port=9222) + caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => chromeOptions}) + driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { desired_capabilities: caps } +end diff --git a/test/functional/.gitkeep b/test/controllers/.gitkeep similarity index 100% rename from test/functional/.gitkeep rename to test/controllers/.gitkeep diff --git a/test/functional/annotations_controller_test.rb b/test/controllers/annotations_controller_test.rb similarity index 95% rename from test/functional/annotations_controller_test.rb rename to test/controllers/annotations_controller_test.rb index ea259ef1c..deec0dec7 100644 --- a/test/functional/annotations_controller_test.rb +++ b/test/controllers/annotations_controller_test.rb @@ -15,14 +15,14 @@ def teardown; end session[:user_id] = 1 post :create, format: :json, - map_id: 1, + params: {map_id: 1, annotation: { properties: { annotation_type: 'polyline', textContent: 'Some cool text' }, geometry: { coordinates: [10, 33] } - } + }} @map.reload assert_response 302 @@ -34,14 +34,14 @@ def teardown; end before_count = @map.annotations.count post :create, format: :json, - map_id: 1, + params: { map_id: 1, annotation: { properties: { annotation_type: 'polyline', textContent: 'Some cool text' }, geometry: { coordinates: [10, 33] } - } + }} @map.reload assert_response 302 diff --git a/test/functional/comments_controller_test.rb b/test/controllers/comments_controller_test.rb similarity index 87% rename from test/functional/comments_controller_test.rb rename to test/controllers/comments_controller_test.rb index b8dd69c39..c5142b18b 100644 --- a/test/functional/comments_controller_test.rb +++ b/test/controllers/comments_controller_test.rb @@ -16,10 +16,10 @@ def teardown before_count = Comment.count post(:create, - map_id: @map.slug, + params: { map_id: @map.slug, comment: { user_id: 1 - }) + }}) assert_response :success assert_equal before_count, Comment.count @@ -30,10 +30,10 @@ def teardown before_count = Comment.count post(:create, - comment: { + params: { comment: { map_id: @map.id, body: "I'm gonna troll you!" - }) + }}) assert_response :success assert_not_equal before_count, Comment.count @@ -45,11 +45,11 @@ def teardown session[:user_id] = 4 put(:update, - id: @comment.id, + params: { id: @comment.id, comment: { map_id: @map.id, body: "I'm gonna troll you!" - }) + }}) # refresh the object @comment.reload @@ -63,11 +63,11 @@ def teardown session[:user_id] = 3 put(:update, - id: @comment.id, + params: { id: @comment.id, map_id: @map.slug, comment: { body: "I'm gonna troll you!" - }) + }}) @comment.reload @@ -81,11 +81,11 @@ def teardown @comment = comments(:one) put(:update, - id: @comment.id, + params: { id: @comment.id, map_id: @map.slug, comment: { body: "I'm gonna troll you!" - }) + }}) @comment.reload @@ -101,8 +101,8 @@ def teardown before_count = Comment.count delete(:destroy, - id: @comment.id, - map_id: @map.slug) + params: { id: @comment.id, + map_id: @map.slug}) assert_redirected_to "/maps/" + @map.slug assert_not_equal before_count, Comment.count @@ -115,8 +115,8 @@ def teardown before_count = Comment.count delete(:destroy, - id: @comment.id, - map_id: @map.slug) + params: { id: @comment.id, + map_id: @map.slug}) assert_redirected_to "/maps/" + @map.slug assert_equal before_count, Comment.count @@ -128,8 +128,8 @@ def teardown before_count = Comment.count delete(:destroy, - id: @comment.id, - map_id: @map.slug) + params: { id: @comment.id, + map_id: @map.slug}) assert_redirected_to "/maps/" + @map.slug assert_equal before_count, Comment.count @@ -141,10 +141,10 @@ def teardown session[:user_id] = @user.id post(:create, - comment: { + params: { comment: { map_id: @map.id, body: "I'm gonna troll you!" - }) + }}) assert_response :success assert_not @emails.collect(&:to).include?([@user.email]) @@ -155,10 +155,10 @@ def teardown session[:user_id] = 3 post(:create, - comment: { + params: { comment: { map_id: @map.id, body: "I'm gonna troll you!" - }) + }}) assert_response :success assert @emails.collect(&:to).include?([@user.email]) @@ -172,18 +172,18 @@ def teardown session[:user_id] = @chris.id post(:create, - comment: { + params: { comment: { map_id: @map.id, body: "I'm gonna troll you!" - }) + }}) session[:user_id] = @joshua.id post(:create, - comment: { + params: { comment: { map_id: @map.id, body: "Yeah we'll see!" - }) + }}) assert_response :success assert @emails.collect(&:to).include?([@chris.email]) diff --git a/test/functional/export_controller_test.rb b/test/controllers/export_controller_test.rb similarity index 84% rename from test/functional/export_controller_test.rb rename to test/controllers/export_controller_test.rb index c51b92a95..1e4600f25 100644 --- a/test/functional/export_controller_test.rb +++ b/test/controllers/export_controller_test.rb @@ -18,7 +18,7 @@ def teardown test 'create returns json' do url = 'https://example.json/12345/status.json' - post :create, status_url: url + post :create, params: { status_url: url } assert_equal url, Export.last.export_url end @@ -27,7 +27,7 @@ def teardown system('mkdir -p public/warps/cubbon-park') system('cp test/fixtures/demo.png public/warps/cubbon-park/cubbon-park.jpg') - get :jpg, id: map.slug + get :jpg, params: { id: map.slug} assert_response :success assert_includes 'image/jpeg', response.content_type end @@ -37,13 +37,13 @@ def teardown system('mkdir -p public/warps/cubbon-park') system('cp test/fixtures/demo.png public/warps/cubbon-park/cubbon-park-geo.tif') - get :geotiff, id: map.slug + get :geotiff, params: { id: map.slug} assert_response :success assert_includes 'image/tiff', response.content_type end test 'should not cancel if not logged in' do - get :cancel, id: @map.id + get :cancel, params: { id: @map.id} assert_response :success assert_equal 'You must be logged in to export, unless the map is anonymous.', @response.body assert assigns[:map] @@ -53,7 +53,7 @@ def teardown test 'should cancel export' do session[:user_id] = 1 - get :cancel, id: @map.id + get :cancel, params: { id: @map.id} assert_response :success assert_equal 'cancelled', @response.body assert assigns[:map] @@ -61,33 +61,33 @@ def teardown test 'should redirect after cancelling' do session[:user_id] = 1 - get :cancel, id: @map.id, exports: 'cess' + get :cancel, params: { id: @map.id, exports: 'cess'} assert_response :redirect assert flash.present? assert_redirected_to '/exports' end test 'should display export progress' do - get :progress, id: @map.id + get :progress, params: { id: @map.id} assert_response :success assert_equal 'export not running', @response.body assert_equal 'text/plain', @response.content_type end test 'should display progress with no export' do - get :progress, id: 4 + get :progress, params: { id: 4} assert_response :success assert_equal 'export has not been run', @response.body end test 'should display progress completed' do - get :progress, id: 2 + get :progress, params: { id: 2} assert_response :success assert_equal 'complete', @response.body end test 'should display progress failed' do - get :progress, id: 3 + get :progress, params: { id: 3} assert_response :success assert_equal 'export failed', @response.body end @@ -95,13 +95,13 @@ def teardown # does not test the exporter client test 'should display export status' do session[:user_id] = 1 - get :status, id: @map.id + get :status, params: { id: @map.id} assert_response :success end test 'should display error if no export' do session[:user_id] = 1 - get :status, id: 4 + get :status, params: { id: 4} assert_response :success # assert_equal { status: 'export has not been run' }.to_json, @response.body end diff --git a/test/functional/feeds_controller_test.rb b/test/controllers/feeds_controller_test.rb similarity index 78% rename from test/functional/feeds_controller_test.rb rename to test/controllers/feeds_controller_test.rb index 6074acbab..05bb78d6e 100644 --- a/test/functional/feeds_controller_test.rb +++ b/test/controllers/feeds_controller_test.rb @@ -19,6 +19,8 @@ def setup get :all assert_response :success assert_not_nil :maps + assert_equal 'application/xml', @response.content_type + assert_template 'feeds/all' end test 'get clean' do @@ -29,13 +31,15 @@ def setup end test "should get clean feed with moderators links" do - get :all, :moderators => 'true' + get :all, params: { moderators: 'true'} assert_response :success assert_not_nil :maps + assert_equal 'application/xml', @response.content_type + assert_template 'feeds/all' end test "should get license feed" do - get :license, :id => "publicdomain" + get :license, params: { :id => "publicdomain"} assert_response :success assert_not_nil :maps assert_equal 'application/xml', @response.content_type @@ -43,7 +47,7 @@ def setup end test "should get author feed" do - get :author, :id => "quentin" + get :author, params: { :id => "quentin"} assert_response :success assert_not_nil :maps assert_equal 'application/xml', @response.content_type @@ -51,7 +55,7 @@ def setup end test "should get tag feed" do - get :tag, id: 'nice' + get :tag, params: { id: 'nice'} assert_response :success assert_not_nil :tag assert_not_nil :maps @@ -59,7 +63,7 @@ def setup end test 'rescues if tag not present' do - get :tag, id: 'cess' + get :tag, params: { id: 'cess'} assert_equal 'text/plain', @response.content_type assert_equal 'No maps with tag cess', @response.body end diff --git a/test/functional/front_ui_controller_test.rb b/test/controllers/front_ui_controller_test.rb similarity index 100% rename from test/functional/front_ui_controller_test.rb rename to test/controllers/front_ui_controller_test.rb diff --git a/test/functional/images_controller_test.rb b/test/controllers/images_controller_test.rb similarity index 76% rename from test/functional/images_controller_test.rb rename to test/controllers/images_controller_test.rb index 143914262..042096f72 100644 --- a/test/functional/images_controller_test.rb +++ b/test/controllers/images_controller_test.rb @@ -12,8 +12,8 @@ def setup system('cp test/fixtures/demo.png public/system/images/1/original/') system('mkdir -p public/warps/saugus-landfill-incinerator') - @file ||= File.open(File.expand_path(Rails.root + 'test/fixtures/demo.png', __FILE__)) - @uploaded_data = ActionDispatch::Http::UploadedFile.new(tempfile: @file, filename: File.basename(@file), type: "image/png") + file_location = Rails.root + 'test/fixtures/demo.png' + @uploaded_data = Rack::Test::UploadedFile.new(file_location.to_s, 'demo.png', "image/png") PaperTrail.enabled = true end @@ -21,14 +21,14 @@ def teardown end test 'fetch locally should redirect to url' do - get :fetch, url: '/maps' + get :fetch, params: { url: '/maps'} assert_response :redirect assert_redirected_to '/maps' end def fetch_in_production Rails.stub(:env, ActiveSupport::StringInquirer.new('production')) do - get :fetch, url: '/maps' + get :fetch, params: { url: '/maps'} assert_response :success assert_equal data, response.body assert_equal 'text/html', response.content_type @@ -38,20 +38,20 @@ def fetch_in_production test 'create uploads an image' do before_count = Warpable.count - post :create, map_id: @map.slug, uploaded_data: @uploaded_data + post :create, params: { map_id: @map.slug, uploaded_data: @uploaded_data} assert_response :success assert_equal before_count + 1, Warpable.count end test 'should return correct status and type on create' do - post :create, map_id: @map.slug, uploaded_data: @uploaded_data + post :create, params: { map_id: @map.slug, uploaded_data: @uploaded_data} assert_equal 200, response.status assert_equal "text/html", response.content_type end test 'should show the image' do - get :show, id: @warp.id, format: 'json' + get :show, params: { id: @warp.id, format: 'json'} json_response = JSON.parse(response.body) assert_equal @warp.id, json_response["id"] assert_response :success @@ -60,7 +60,7 @@ def fetch_in_production test 'should update an image' do session[:user_id] = 1 points = "-71.39,41.83:-71.39,41.83:-71.39,41.83:-71.39,41.83" - patch :update, id: @map.id, warpable_id: @warp.id, locked: false, points: points + patch :update, params: { id: @map.id, warpable_id: @warp.id, locked: false, points: points} assert_not_nil @warp.nodes assert_equal "text/html", response.content_type assert_response :success @@ -68,13 +68,13 @@ def fetch_in_production test 'correct user should destroy an image' do session[:user_id] = 1 - delete :destroy, id: @warp.id + delete :destroy, params: { id: @warp.id} assert_response :redirect assert_redirected_to "/maps/#{@map.slug}" end test 'redirects to login if attempt destroy and not logged in' do - delete :destroy, id: @warp.id + delete :destroy, params: { id: @warp.id} assert_response :redirect assert_redirected_to '/login' assert_not_nil flash[:error] @@ -83,7 +83,7 @@ def fetch_in_production test 'creates version after image creation' do session[:user_id] = 1 assert_difference 'PaperTrail::Version.count', 1 do - post :create, map_id: @map.slug, uploaded_data: @uploaded_data + post :create, params: { map_id: @map.slug, uploaded_data: @uploaded_data } end warp = Warpable.last assert warp.versions.present? @@ -94,7 +94,7 @@ def fetch_in_production session[:user_id] = 1 assert_difference 'PaperTrail::Version.count', 1 do - patch :update, id: @map.id, warpable_id: @warp.id, locked: false, points: points + patch :update, params: { id: @map.id, warpable_id: @warp.id, locked: false, points: points } end assert_response :success assert @warp.versions.present? @@ -106,12 +106,12 @@ def fetch_in_production points1 = "-72.39,41.83:-72.39,41.83:-72.39,41.83:-72.39,41.84" points2 = "-72.39,40.83:-72.39,41.83:-72.39,41.83:-71.39,45.84" - patch :update, id: @map.id, warpable_id: @warp.id, locked: false, points: points1 + patch :update, params: { id: @map.id, warpable_id: @warp.id, locked: false, points: points1 } @warp.reload nodes_latest = @warp.nodes - patch :update, id: @map.id, warpable_id: @warp.id, locked: false, points: points2 + patch :update, params: { id: @map.id, warpable_id: @warp.id, locked: false, points: points2 } assert_difference 'PaperTrail::Version.count', 1 do - get :revert, id: @warp.id, version: @warp.versions.last + get :revert, params: { id: @warp.id, version: @warp.versions.last } end @warp.reload assert_equal(nodes_latest, @warp.nodes) diff --git a/test/functional/maps_controller_test.rb b/test/controllers/maps_controller_test.rb similarity index 84% rename from test/functional/maps_controller_test.rb rename to test/controllers/maps_controller_test.rb index eb25da7c5..2f12a2725 100644 --- a/test/functional/maps_controller_test.rb +++ b/test/controllers/maps_controller_test.rb @@ -11,7 +11,8 @@ def teardown test 'should display image url for maps by region' do get :region, - { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60, format: :json } + params: { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60}, + format: :json image_urls = [] @map.warpables.each do |warpable| @@ -36,7 +37,7 @@ def teardown test 'should not display archived maps' do session[:user_id] = 1 - get(:archive, id: @map.slug) + get(:archive, params: { id: @map.slug } ) get :index @maps = assigns(:maps) @@ -59,7 +60,7 @@ def teardown end test 'should search for maps by name' do - get :search, q: 'Saugus' + get :search, params: { q: 'Saugus'} @maps = assigns(:maps) assert_response :success @@ -69,7 +70,7 @@ def teardown end test 'should search for maps by location' do - get :search, q: 'India' + get :search, params: { q: 'India'} @maps = assigns(:maps) assert_response :success @@ -80,7 +81,7 @@ def teardown end test 'should search for maps by description' do - get :search, q: 'a park' + get :search, params: { q: 'a park'} @maps = assigns(:maps) assert !@maps.collect(&:name).include?('Saugus Landfill Incinerator') @@ -90,7 +91,7 @@ def teardown end test 'query should be at least 3 chars long' do - get :search, q: 'ce' + get :search, params: { q: 'ce' } msg = 'Invalid Query: non white-space character count is less than 3' assert_response :success @@ -103,13 +104,13 @@ def teardown test 'should create map if logged in' do session[:user_id] = 1 before_count = Map.count - post(:create, map: { + post(:create, params: { map: { name: 'Coal terminal map', slug: 'coal-terminal', location: 'London', lat: 42.43823313018592, lon: -70.9849190711975 - }) + }}) @map = assigns(:map) assert_response 302 @@ -121,13 +122,13 @@ def teardown test 'should create map if not logged in' do before_count = Map.count - post(:create, map: { + post(:create, params: { map: { name: 'Coal terminal map', slug: 'coal-terminal', location: 'London', lat: 42.43823313018592, lon: -70.9849190711975 - }) + }}) @map = assigns(:map) assert_redirected_to '/maps/' + @map.slug @@ -141,13 +142,13 @@ def teardown before_count = Map.count user = users(:quentin) session[:user_id] = user.id - post :create, map: { + post :create, params: { map: { name: 'Yaya Center', slug: 'yaya-center', location: 'Nairobi', lat: -0.3030988, lon: 36.080026 - } + }} @map = assigns(:map) assert_redirected_to '/maps/' + @map.slug @@ -161,12 +162,13 @@ def teardown skip 'images and warpable naming contradicts with rails naming convention' session[:user_id] = 1 before_count = Map.count - post(:create, map: { - name: 'Coal terminal map', - slug: 'coal-terminal' - }) + post(:create, params: { map: { + name: 'Coal terminal map', + slug: 'coal-terminal' + }}) @map = assigns(:map) + assert_not @map.save assert_response :success assert_template :new assert_equal before_count, Map.count @@ -176,7 +178,7 @@ def teardown test 'should not delete map if not owner' do session[:user_id] = 3 before_count = Map.count - post(:destroy, id: @map.slug) + post(:destroy, params: { id: @map.slug}) assert_redirected_to '/maps/' + @map.slug assert_equal flash[:error], 'Only admins or map owners may delete maps.' @@ -186,7 +188,7 @@ def teardown test 'should delete map if owner' do session[:user_id] = 1 before_count = Map.count - post(:destroy, id: @map.slug) + post(:destroy, params: { id: @map.slug}) assert_redirected_to '/' assert_not_equal before_count, Map.count @@ -194,14 +196,14 @@ def teardown end test "should get show" do - get(:show, id: @map.slug) + get(:show, params: { id: @map.slug}) assert_response :success assert_not_nil assigns(:map) end test 'should archive map' do session[:user_id] = 1 - get(:archive, id: @map.slug) + get(:archive, params: { id: @map.slug}) @map.reload assert_redirected_to '/?_=' + Time.now.to_i.to_s @@ -210,7 +212,7 @@ def teardown test 'should not archive map without enough permissions' do session[:user_id] = 3 - get(:archive, id: @map.slug) + get(:archive, params: { id: @map.slug}) @map.reload assert_redirected_to '/?_=' + Time.now.to_i.to_s @@ -220,7 +222,7 @@ def teardown test 'should update map' do session[:user_id] = 1 put(:update, - id: @map.slug, + params: { id: @map.slug, map: { name: 'Schrute farms', location: 'USA', @@ -228,7 +230,7 @@ def teardown lon: -74, description: 'A really green farm' }, - tags: 'beets bears') + tags: 'beets bears'}) @map.reload assert_redirected_to "/maps/#{@map.slug}" @@ -241,12 +243,12 @@ def teardown end test 'should not update unless logged in' do - put :update, id: 2, map: { name: 'Street 5'} + put :update, params: { id: 2, map: { name: 'Street 5'}} assert_redirected_to '/login?back_to=/maps/2' end test 'should display maps by region' do - get :region, { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60 } + get :region, params: { minlat: 40, maxlat: 50, minlon: -80, maxlon: -60 } @maps = assigns(:maps) assert_response :success @@ -254,26 +256,26 @@ def teardown end test 'displays maps by region filter by tag if present' do - get :region, { minlat: 10, maxlat: 30, minlon: 60, maxlon: 80, tag: 'featured' } - @maps= assigns(:maps) + get :region, params: { minlat: 10, maxlat: 30, minlon: 60, maxlon: 80, tag: 'featured' } + @maps = assigns(:maps) assert_response :success assert @maps.collect(&:name).include?('Cubbon Park') end test 'should annotate maps' do - get :annotate, id: @map.slug + get :annotate, params: { id: @map.slug} assert_response :success assigns(:annotations) == true end test 'embed' do - get :embed, id: @map.slug + get :embed, params: { id: @map.slug} assert_response :success assert_template :show end test 'it returns the images' do - get :images, id: @map.slug + get :images, params: { id: @map.slug} assert_response :success assert_equal 'application/json', response.content_type end @@ -281,7 +283,7 @@ def teardown def export_if_logged_in Rails.stub(:env, ActiveSupport::StringInquirer.new('development')) do session[:user_id] = 1 - post :export, id: @map.id, resolution: 5 + post :export, params: { id: @map.id, resolution: 5} assert_response :success assert_equal 'complete', @response.body end @@ -290,13 +292,13 @@ def export_if_logged_in def export_anonmymous_map Rails.stub(:env, ActiveSupport::StringInquirer.new('development')) do map = maps(:cubbon) - post :export, id: map.id, resolution: 5 + post :export, params: { id: map.id, resolution: 5} assert_response :success end end test 'returns the exports' do - get :exports, id: @map.id + get :exports, params: { id: @map.id} assert_response :success end diff --git a/test/functional/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb similarity index 97% rename from test/functional/sessions_controller_test.rb rename to test/controllers/sessions_controller_test.rb index 98da1b9dd..26b78f271 100644 --- a/test/functional/sessions_controller_test.rb +++ b/test/controllers/sessions_controller_test.rb @@ -27,7 +27,7 @@ class SessionsControllerTest < ActionController::TestCase test 'successful local login' do system('cp config/config.yml.example config/config.yml') - get :local, login: 'quentin' + get :local, params: { login: 'quentin'} assert_response :redirect assert flash[:success].present? assert_not_nil session[:user_id] @@ -36,7 +36,7 @@ class SessionsControllerTest < ActionController::TestCase end test 'unsuccessful local login' do - get :local, login: 'cess' + get :local, params: { login: 'cess'} assert_response :redirect assert flash[:error].present? assert_nil session[:user_id] diff --git a/test/functional/tags_controller_test.rb b/test/controllers/tags_controller_test.rb similarity index 75% rename from test/functional/tags_controller_test.rb rename to test/controllers/tags_controller_test.rb index 90a325700..d3c275f9d 100644 --- a/test/functional/tags_controller_test.rb +++ b/test/controllers/tags_controller_test.rb @@ -9,31 +9,31 @@ def setup test "should create tag" do session[:user_id] = 1 # log in - post(:create, :map_id => @map.slug, :tags => "test,nice") + post(:create, params: { :map_id => @map.slug, :tags => "test,nice"}) assert_response :redirect end test "should get tag show page" do - get :show, :id => "nice" + get :show, params: {id: "nice"} assert_response :success assert_not_nil :maps, :tag end test "should redirect to login when not logged in" do - post :create, map_id: @map.slug, tags: "test,nice" + post :create, params: { map_id: @map.slug, tags: "test,nice"} assert_redirected_to "/login?back_to=/maps/#{@map.slug}" assert flash.present? end test 'should destroy a tag' do session[:user_id] = 1 - delete :destroy, id: @tag + delete :destroy, params: { id: @tag} assert flash[:notice].present? assert_redirected_to @tag.map end test 'should redirect destroy when not logged in' do - delete :destroy, id: @tag + delete :destroy, params: { id: @tag} assert_response :redirect assert flash.present? end diff --git a/test/functional/users_controller_test.rb b/test/controllers/users_controller_test.rb similarity index 92% rename from test/functional/users_controller_test.rb rename to test/controllers/users_controller_test.rb index d9bdd61f0..d38e1d61c 100644 --- a/test/functional/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -19,7 +19,7 @@ def setup end test "should get profile" do - get(:profile, id: @user.login) + get(:profile, params: {id: @user.login} ) assert_response :success assert_not_nil :user end diff --git a/test/functional/utility_controller_test.rb b/test/controllers/utility_controller_test.rb similarity index 71% rename from test/functional/utility_controller_test.rb rename to test/controllers/utility_controller_test.rb index 87ae42f9f..c929329d5 100644 --- a/test/functional/utility_controller_test.rb +++ b/test/controllers/utility_controller_test.rb @@ -5,10 +5,13 @@ class UtilityControllerTest < ActionController::TestCase test 'should translate tms format' do get(:tms_alt, - id: 1, - x: 10, - y: 30, - z: 40) + params: { + id: 1, + x: 10, + y: 30, + z: 40 + } + ) y = 2**40.to_i - 30.to_i - 1 assert_redirected_to "/tms/1/40/10/#{y}.png" diff --git a/test/unit/.gitkeep b/test/models/.gitkeep similarity index 100% rename from test/unit/.gitkeep rename to test/models/.gitkeep diff --git a/test/unit/annotation_test.rb b/test/models/annotation_test.rb similarity index 100% rename from test/unit/annotation_test.rb rename to test/models/annotation_test.rb diff --git a/test/unit/comment_test.rb b/test/models/comment_test.rb similarity index 100% rename from test/unit/comment_test.rb rename to test/models/comment_test.rb diff --git a/test/unit/export_test.rb b/test/models/export_test.rb similarity index 100% rename from test/unit/export_test.rb rename to test/models/export_test.rb diff --git a/test/unit/exporter_test.rb b/test/models/exporter_test.rb similarity index 100% rename from test/unit/exporter_test.rb rename to test/models/exporter_test.rb diff --git a/test/unit/helpers/front_ui_helper_test.rb b/test/models/helpers/front_ui_helper_test.rb similarity index 100% rename from test/unit/helpers/front_ui_helper_test.rb rename to test/models/helpers/front_ui_helper_test.rb diff --git a/test/unit/map_test.rb b/test/models/map_test.rb similarity index 100% rename from test/unit/map_test.rb rename to test/models/map_test.rb diff --git a/test/unit/node_test.rb b/test/models/node_test.rb similarity index 100% rename from test/unit/node_test.rb rename to test/models/node_test.rb diff --git a/test/unit/tag_test.rb b/test/models/tag_test.rb similarity index 100% rename from test/unit/tag_test.rb rename to test/models/tag_test.rb diff --git a/test/unit/user_test.rb b/test/models/user_test.rb similarity index 95% rename from test/unit/user_test.rb rename to test/models/user_test.rb index 1612c84db..4821c931c 100644 --- a/test/unit/user_test.rb +++ b/test/models/user_test.rb @@ -43,7 +43,12 @@ class UserTest < ActiveSupport::TestCase user = users(:quentin) map_images = user.maps.map(&:warpables) - assert_equal Warpable::ActiveRecord_Associations_CollectionProxy, user.warpables.class + map_images.flatten.each do |image| + user.warpables.each do |warpable| + assert_equal image.class, warpable.class + end + end + assert_equal map_images.flatten, user.warpables end diff --git a/test/unit/warpable_test.rb b/test/models/warpable_test.rb similarity index 100% rename from test/unit/warpable_test.rb rename to test/models/warpable_test.rb diff --git a/test/system/searches_test.rb b/test/system/searches_test.rb new file mode 100644 index 000000000..77e529513 --- /dev/null +++ b/test/system/searches_test.rb @@ -0,0 +1,11 @@ +require 'application_system_test_case' + +class SearchesTest < ApplicationSystemTestCase + test 'visiting the index' do + visit '/' + + fill_in('search-input', with: 'hola') + find('button.btn-light').click + assert_selector('h2', text: 'Search results for \'hola\'') + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index a4ae20c16..1a45078da 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,10 +1,10 @@ +require_relative '../config/environment' require 'simplecov' require 'codecov' SimpleCov.formatter = SimpleCov::Formatter::Codecov SimpleCov.start -require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' require 'minitest/reporters' MiniTest::Reporters.use! [MiniTest::Reporters::ProgressReporter.new, @@ -13,11 +13,7 @@ class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. - # - # Note: You'll currently still have to declare fixtures explicitly in integration tests - # -- they do not yet inherit this setting fixtures :all - # Add more helper methods to be used by all tests here... include ApplicationHelper end diff --git a/vendor/assets/javascripts/leaflet-fullHash.js b/vendor/assets/javascripts/leaflet-fullHash.js new file mode 100644 index 000000000..75d8d1c1b --- /dev/null +++ b/vendor/assets/javascripts/leaflet-fullHash.js @@ -0,0 +1,200 @@ +(function(window) { + var HAS_HASHCHANGE = (function() { + var doc_mode = window.documentMode; + return ('onhashchange' in window) && + (doc_mode === undefined || doc_mode > 7); + })(); + + L.Hash = function(map, options) { + this.onHashChange = L.Util.bind(this.onHashChange, this); + + if (map) { + this.init(map, options); + } + }; + + L.Hash.parseHash = function(hash) { + if(hash.indexOf('#') === 0) { + hash = hash.substr(1); + } + var args = hash.split("/"); + if (args.length == 4) { + var zoom = parseInt(args[0], 10), + lat = parseFloat(args[1]), + lon = parseFloat(args[2]), + layers = (args[3]).split("-"); + if (isNaN(zoom) || isNaN(lat) || isNaN(lon)) { + return false; + } else { + return { + center: new L.LatLng(lat, lon), + zoom: zoom, + layers: layers + }; + } + } else { + return false; + } + }; + + L.Hash.formatHash = function(map) { + var center = map.getCenter(), + zoom = map.getZoom(), + precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)), + layers = []; + + //console.log(this.options); + var options = this.options; + //Check active layers + for(var key in options) { + if (options.hasOwnProperty(key)) { + if (map.hasLayer(options[key])) { + layers.push(key); + }; + }; + }; + + return "#" + [zoom, + center.lat.toFixed(precision), + center.lng.toFixed(precision), + layers.join("-") + ].join("/"); + }, + + L.Hash.prototype = { + map: null, + lastHash: null, + + parseHash: L.Hash.parseHash, + formatHash: L.Hash.formatHash, + + init: function(map, options) { + this.map = map; + L.Util.setOptions(this, options); + + // reset the hash + this.lastHash = null; + this.onHashChange(); + + if (!this.isListening) { + this.startListening(); + } + }, + + removeFrom: function(map) { + if (this.changeTimeout) { + clearTimeout(this.changeTimeout); + } + + if (this.isListening) { + this.stopListening(); + } + + this.map = null; + }, + + onMapMove: function() { + // bail if we're moving the map (updating from a hash), + // or if the map is not yet loaded + + if (this.movingMap || !this.map._loaded) { + return false; + } + + var hash = this.formatHash(this.map); + if (this.lastHash != hash) { + location.replace(hash); + this.lastHash = hash; + } + }, + + movingMap: false, + update: function() { + var hash = location.hash; + if (hash === this.lastHash) { + return; + } + var parsed = this.parseHash(hash); + if (parsed) { + this.movingMap = true; + + this.map.setView(parsed.center, parsed.zoom); + var layers = parsed.layers, + options = this.options, + that = this; + //Add/remove layers + this.map.eachLayer(function(layer) { + that.map.removeLayer(layer); + }); + + layers.forEach(function(element, index, array) { + //console.log(options[element]); + that.map.addLayer(options[element]); + }); + + this.movingMap = false; + } else { + this.onMapMove(this.map); + } + }, + + // defer hash change updates every 100ms + changeDefer: 100, + changeTimeout: null, + onHashChange: function() { + // throttle calls to update() so that they only happen every + // `changeDefer` ms + if (!this.changeTimeout) { + var that = this; + this.changeTimeout = setTimeout(function() { + that.update(); + that.changeTimeout = null; + }, this.changeDefer); + } + }, + + isListening: false, + hashChangeInterval: null, + startListening: function() { + this.map.on("moveend layeradd layerremove", this.onMapMove, this); + + if (HAS_HASHCHANGE) { + L.DomEvent.addListener(window, "hashchange", this.onHashChange); + } else { + clearInterval(this.hashChangeInterval); + this.hashChangeInterval = setInterval(this.onHashChange, 50); + } + this.isListening = true; + }, + + stopListening: function() { + this.map.off("moveend layeradd layerremove", this.onMapMove, this); + + if (HAS_HASHCHANGE) { + L.DomEvent.removeListener(window, "hashchange", this.onHashChange); + } else { + clearInterval(this.hashChangeInterval); + } + this.isListening = false; + }, + + _keyByValue: function(obj, value) { + for(var key in obj) { + if (obj.hasOwnProperty(key)) { + if (obj[key] === value) { + return key; + } else { return null; }; + }; + }; + } + }; + L.hash = function(map, options) { + return new L.Hash(map, options); + }; + L.Map.prototype.addHash = function() { + this._hash = L.hash(this, this.options); + }; + L.Map.prototype.removeHash = function() { + this._hash.removeFrom(); + }; +})(window); diff --git a/yarn.lock b/yarn.lock index 8db6b0ee9..2a1a9b38e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,55 +2,136 @@ # yarn lockfile v1 -"@fortawesome/fontawesome-free@^5.9.0": - version "5.9.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.9.0.tgz#1aa5c59efb1b8c6eb6277d1e3e8c8f31998b8c8e" - integrity sha512-g795BBEzM/Hq2SYNPm/NQTIp3IWd4eXSH0ds87Na2jnrAUFX3wkyZAI4Gwj9DOaWMuz2/01i8oWI7P7T/XLkhg== +"@compone/class@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@compone/class/-/class-1.1.1.tgz#cbe6225ca123894769c8cb65b49430bd8dea472a" + integrity sha512-pbODcJi0TdyKQ/PTHSHLwO4h/r5EgMdkPQLdBSaZBUiBuWdGil+0PEhpfhAWDuFrwVPKiCHYQOfs8WyGe9ABWA== + +"@compone/define@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@compone/define/-/define-1.2.4.tgz#59cd34c95d32c11de7496db5c801dc7748cb8666" + integrity sha512-w0ZDiYMIppvb1epoNY64pkEACwn9693cc7qM1ZSKWUVZczx5vlR4iZM7by129IYUdCq0SsbxQbbPZjnzj/0Qew== + dependencies: + "@compone/class" "^1.1.1" + "@compone/event" "^1.1.2" + +"@compone/event@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@compone/event/-/event-1.1.2.tgz#e20ca62c9a1a1c062a9612874b78453737a7cbeb" + integrity sha512-baJDnAr8pWefqfltNS33HieD+s23YO+w2/RD6lPxIEzlOuM1R5RT5vpUUTcrzn0Er3oj62PlfMUyS0SwnVw67Q== + dependencies: + utilise "^2.3.5" -"@types/node@^8.0.7": - version "8.10.50" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.50.tgz#f3d68482b1f54b5f4fba8daaac385db12bb6a706" - integrity sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA== +"@fortawesome/fontawesome-free@^5.9.0": + version "5.10.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.10.1.tgz#dec28ee02c3fc51da46d53ce4da9d5787312fbd7" + integrity sha512-PYncBhgN1l02mwHmczukexmu4yRTjRDAAdcK62jdWSAW8epcnZ9K2win/7rMrffiv/c7XLVDA8vD+yi6WyvbGQ== + +"@types/caseless@*": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" + integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== + +"@types/node@*": + version "12.7.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" + integrity sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg== + +"@types/node@^8.0.7", "@types/node@^8.10.50": + version "8.10.51" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.51.tgz#80600857c0a47a8e8bafc2dae6daed6db58e3627" + integrity sha512-cArrlJp3Yv6IyFT/DYe+rlO8o3SIHraALbBW/+CcCYW/a9QucpLI+n2p4sRxAvl2O35TiecpX2heSZtJjvEO+Q== + +"@types/request@^2.48.2": + version "2.48.2" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.2.tgz#936374cbe1179d7ed529fc02543deb4597450fed" + integrity sha512-gP+PSFXAXMrd5PcD7SqHeUjdGshAI8vKQ3+AvpQr3ht9iQea+59LOKvKITcQI+Lg+1EIkDP6AFSBUJPWG8GDyA== + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" + +"@types/tough-cookie@*": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d" + integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== + +JSONStream@^1.0.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== +accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" -acorn-node@^1.3.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.7.0.tgz#aac6a559d27af6176b076ab6fb13c5974c213e3b" - integrity sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw== +acorn-jsx@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= dependencies: - acorn "^6.1.1" - acorn-dynamic-import "^4.0.0" - acorn-walk "^6.1.1" - xtend "^4.0.1" + acorn "^3.0.4" -acorn-walk@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-object-spread@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68" + integrity sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg= + dependencies: + acorn "^3.1.0" + +acorn-walk@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.0.0.tgz#c8ba6f0f1aac4b0a9e32d1f0af12be769528f36b" + integrity sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg== + +acorn5-object-spread@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn5-object-spread/-/acorn5-object-spread-4.0.0.tgz#d5758081eed97121ab0be47e31caaef2aa399697" + integrity sha1-1XWAge7ZcSGrC+R+Mcqu8qo5lpc= + dependencies: + acorn "^5.1.2" -acorn@^5.0.0: +acorn@^3.0.4, acorn@^3.1.0, acorn@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^5.0.0, acorn@^5.1.2, acorn@^5.2.1: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" - integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== +acorn@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" + integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== ajv@^6.5.5: - version "6.10.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" - integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -71,11 +152,45 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -83,12 +198,89 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09" + integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" + integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== + dependencies: + archiver-utils "^2.1.0" + async "^2.6.3" + buffer-crc32 "^0.2.1" + glob "^7.1.4" + readable-stream "^3.4.0" + tar-stream "^2.1.0" + zip-stream "^2.1.2" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -103,6 +295,11 @@ array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + array-from@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" @@ -113,11 +310,25 @@ array-slice@^1.0.0: resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -130,11 +341,43 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assert@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.3.0.tgz#03939a622582a812cc202320a0b9a56c9b815849" + integrity sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk= + dependencies: + util "0.10.3" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +async-each@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async@^2.0.0, async@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -155,10 +398,20 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + integrity sha1-EQHpVE9KdrG8OybUUsqW16NeeXg= + base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== base@^0.11.1: version "0.11.2" @@ -180,6 +433,16 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + binary@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" @@ -193,14 +456,21 @@ bit-twiddle@^1.0.0, bit-twiddle@^1.0.2: resolved "https://registry.yarnpkg.com/bit-twiddle/-/bit-twiddle-1.0.2.tgz#0c6c1fabe2b23d17173d9a61b7b7093eb9e1769e" integrity sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4= +bl@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" + integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== + dependencies: + readable-stream "^3.0.1" + blueimp-canvas-to-blob@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.5.0.tgz#5679ac32f6a2835821f0c3ad661719ff85a9236b" integrity sha1-VnmsMvaig1gh8MOtZhcZ/4WpI2s= blueimp-canvas-to-blob@blueimp/JavaScript-Canvas-to-Blob#>=2.1.1: - version "3.14.0" - resolved "https://codeload.github.com/blueimp/JavaScript-Canvas-to-Blob/tar.gz/9f3deb2e710d39c72a988559609d9dc9a319de0b" + version "3.15.0" + resolved "https://codeload.github.com/blueimp/JavaScript-Canvas-to-Blob/tar.gz/f47d01f2827f69dde571c0fe06159e8e99a1de96" blueimp-file-upload@blueimp/jQuery-File-Upload#~9.22.1: version "9.22.2" @@ -216,8 +486,8 @@ blueimp-load-image@2.12.2: integrity sha1-ahdZiquFjU+/AVQ+BjEUG1EFfIc= blueimp-load-image@blueimp/JavaScript-Load-Image#>=1.13.0: - version "2.22.0" - resolved "https://codeload.github.com/blueimp/JavaScript-Load-Image/tar.gz/b2e6b29de05a882048e80bec0c1f1e94d65ca41a" + version "2.23.0" + resolved "https://codeload.github.com/blueimp/JavaScript-Load-Image/tar.gz/455a28c68dc1cd1046e8c458cc0f5027ed7ac03f" blueimp-tmpl@3.6.0: version "3.6.0" @@ -228,6 +498,27 @@ blueimp-tmpl@blueimp/JavaScript-Templates#2.5.4: version "2.5.4" resolved "https://codeload.github.com/blueimp/JavaScript-Templates/tar.gz/b75e882ec0e353ce2d8bfdb2ea755060d2012368" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + bootstrap@twbs/bootstrap#^4.3.1: version "4.3.1" resolved "https://codeload.github.com/twbs/bootstrap/tar.gz/8fa0d3010112dca5dd6dd501173415856001ba8b" @@ -237,6 +528,23 @@ bootstrap@~3.2.0: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.2.0.tgz#a0726e7c12e79f4a2a504f8d1ee9f2850a83f637" integrity sha1-oHJufBLnn0oqUE+NHunyhQqD9jc= +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -253,6 +561,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brfs@1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.4.3.tgz#db675d6f5e923e6df087fca5859c9090aaed3216" @@ -273,6 +588,255 @@ brfs@^1.3.0: static-module "^2.2.0" through2 "^2.0.0" +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-icons@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/browser-icons/-/browser-icons-0.0.1.tgz#888e5f10763603745fa7180e4cd8db0a2b6548ec" + integrity sha1-iI5fEHY2A3RfpxgOTNjbCitlSOw= + dependencies: + icon-android "*" + icon-chrome "*" + icon-firefox "*" + icon-ie "*" + icon-ios "*" + icon-linux "*" + icon-opera "*" + icon-osx "*" + icon-safari "*" + icon-windows "*" + +browser-pack@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" + integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.8.0" + defined "^1.0.0" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + +browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0= + dependencies: + pako "~0.2.0" + +browserify-zlib@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserify@^12.0.0: + version "12.0.2" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-12.0.2.tgz#57f21e5e6e308ff5987c4dafd44840b2b98f7a19" + integrity sha1-V/IeXm4wj/WYfE2v1EhAsrmPehk= + dependencies: + JSONStream "^1.0.3" + assert "~1.3.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.1.2" + buffer "^3.4.3" + concat-stream "~1.5.1" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "~1.1.0" + duplexer2 "~0.1.2" + events "~1.1.0" + glob "^5.0.15" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "~0.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + isarray "0.0.1" + labeled-stream-splicer "^2.0.0" + module-deps "^4.0.2" + os-browserify "~0.1.1" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.4.3" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "~0.10.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.11.0" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + +browserify@^14.5.0: + version "14.5.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.5.0.tgz#0bbbce521acd6e4d1d54d8e9365008efb85a9cc5" + integrity sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g== + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "~1.5.1" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "~1.1.0" + duplexer2 "~0.1.2" + events "~1.1.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + module-deps "^4.0.8" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "~1.0.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.11.0" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + +buble@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/buble/-/buble-0.16.0.tgz#1773e7b5a383f5c722af6b1b16b2ba49cb866a98" + integrity sha512-Eb5vt1+IvXXPyYD1IIQIuaBwIuJOSWQ2kXzULlg5I83aLGF2qzcjRU2joYusnWFgAenvJ9xTOMvZvT0bb8BLbg== + dependencies: + acorn "^3.3.0" + acorn-jsx "^3.0.1" + acorn-object-spread "^1.0.0" + chalk "^1.1.3" + magic-string "^0.14.0" + minimist "^1.2.0" + os-homedir "^1.0.1" + vlq "^0.2.2" + +"buble@github:pemrouz/buble": + version "0.18.0" + resolved "https://codeload.github.com/pemrouz/buble/tar.gz/4e639aeeb64712ac95dc30a52750d1ee4432c9c8" + dependencies: + acorn "^5.1.2" + acorn-jsx "^3.0.1" + acorn5-object-spread "^4.0.0" + chalk "^2.1.0" + magic-string "^0.22.4" + minimist "^1.2.0" + os-homedir "^1.0.1" + vlq "^0.2.2" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + buffer-equal@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" @@ -283,6 +847,28 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + integrity sha1-pyyTb3e5a/UvX357RnGAYoVR3vs= + dependencies: + base64-js "0.0.8" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.2, buffer@^5.1.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.0.tgz#33294f5c1f26e08461e528b69fa06de3c45cbd8c" + integrity sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + buffer@~5.0.2: version "5.0.8" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" @@ -296,6 +882,21 @@ buffers@~0.1.1: resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -311,11 +912,21 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cached-path-relative@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" + integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + cartagen@jywarren/cartagen#*: version "0.0.0" resolved "https://codeload.github.com/jywarren/cartagen/tar.gz/b348dd06e2d1a69936826e9ef4e6f9fa0ed4a060" @@ -333,6 +944,18 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chai@*: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + chainsaw@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" @@ -340,7 +963,18 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^2.0.1, chalk@^2.3.1: +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -354,6 +988,55 @@ charm@~0.1.0: resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296" integrity sha1-BsIe7RobBq62dVPNxT4jJ0usIpY= +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +chokidar@*: + version "3.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" + integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== + dependencies: + anymatch "^3.0.1" + braces "^3.0.2" + glob-parent "^5.0.0" + is-binary-path "^2.1.0" + is-glob "^4.0.1" + normalize-path "^3.0.0" + readdirp "^3.1.1" + optionalDependencies: + fsevents "^2.0.6" + +chokidar@^1.0.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -385,11 +1068,25 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -410,6 +1107,26 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colors@^1.1.0, colors@^1.1.2, colors@^1.2.1, colors@^1.2.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +combine-source-map@^0.8.0, combine-source-map@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" + integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -417,6 +1134,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + commander@^2.11.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -431,6 +1153,51 @@ components-jqueryui@components/jqueryui#^1.12.1, jquery-ui@components/jqueryui#^ version "1.12.1" resolved "https://codeload.github.com/components/jqueryui/tar.gz/44ecf3794cc56b65954cc19737234a3119d036cc" +compress-commons@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" + integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^3.0.1" + normalize-path "^3.0.0" + readable-stream "^2.3.6" + +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + dependencies: + mime-db ">= 1.40.0 < 2" + +compression@*, compression@^1.6.2, compression@^1.7.2: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.6.1, concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@~1.4.5: version "1.4.11" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz#1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f" @@ -449,15 +1216,34 @@ concat-stream@~1.5.0, concat-stream@~1.5.1: readable-stream "~2.0.0" typedarray "~0.0.5" -concat-stream@~1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== contentstream@^1.0.0: version "1.0.0" @@ -473,6 +1259,34 @@ convert-source-map@^1.5.1: dependencies: safe-buffer "~5.1.1" +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= + +cookie-parser@^1.3.5: + version "1.4.4" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.4.tgz#e6363de4ea98c3def9697b93421c09f30cf5d188" + integrity sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw== + dependencies: + cookie "0.3.1" + cookie-signature "1.0.6" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -488,6 +1302,85 @@ corslite@0.0.7: resolved "https://registry.yarnpkg.com/corslite/-/corslite-0.0.7.tgz#8e451db5320a7556de1ef78d9bd3566343077721" integrity sha1-jkUdtTIKdVbeHveNm9NWY0MHdyE= +crc32-stream@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" + integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== + dependencies: + crc "^3.4.4" + readable-stream "^3.4.0" + +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cryonic@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cryonic/-/cryonic-1.0.0.tgz#57320e757d7c3abc72914b037e049295e6bd04f4" + integrity sha512-8wqWtdI+7IQVYCDS40H/H267zb2Lwn08Q7HT0hIqHNMkRPQdV355dPRu/hV02k2sBtZJ+KEnRVtaZWzT3hPVmQ== + +crypto-browserify@^3.0.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + csv2geojson@~5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/csv2geojson/-/csv2geojson-5.0.2.tgz#abd649f2ec57689219ad4f19d333be75456b6f59" @@ -560,6 +1453,16 @@ d@1: es5-ext "^0.10.50" type "^1.0.1" +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk= + +dash-ast@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" + integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -579,14 +1482,33 @@ data-uri-to-buffer@^2.0.0: dependencies: "@types/node" "^8.0.7" -debug@^2.2.0, debug@^2.3.3: +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -decamelize@^1.0.0: +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@3.2.6, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -609,6 +1531,31 @@ decompress-zip@0.2.1: readable-stream "^1.1.8" touch "0.0.3" +decompress-zip@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.3.2.tgz#f3fa2841666abce394604f4a9e8a7085c202d464" + integrity sha512-Ab1QY4LrWMrUuo53lLnmGOby7v8ryqxJ+bKibKSiPisx+25mhut1dScVBXAYx14i/PqSrFZvR2FRRazhLbvL+g== + dependencies: + binary "^0.3.0" + graceful-fs "^4.1.3" + mkpath "^0.1.0" + nopt "^3.0.1" + q "^1.1.2" + readable-stream "^1.1.8" + touch "0.0.3" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -621,6 +1568,13 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -643,21 +1597,108 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig== + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +djbx@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/djbx/-/djbx-1.0.3.tgz#c58966d2c05d0dd5fd43c787894b059ee6cc9b18" + integrity sha512-Y8ph/85fEChtSgSgw1asP4cGLNLxlbnDBnQMpX8+MOpaiYyOn8assnSpIrwHuoGZV/sE1DUbKh9aeKlWZdHKEg== + +domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= + dup@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dup/-/dup-1.0.0.tgz#51fc5ac685f8196469df0b905e934b20af5b4029" integrity sha1-UfxaxoX4GWRp3wuQXpNLIK9bQCk= +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2, duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + duplexer2@~0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -665,13 +1706,6 @@ duplexer2@~0.0.2: dependencies: readable-stream "~1.1.9" -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -680,6 +1714,62 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +elliptic@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: version "0.10.50" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" @@ -729,15 +1819,20 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -escape-string-regexp@^1.0.5: +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.8.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== + version "1.12.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" + integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -789,6 +1884,11 @@ esprima@^3.1.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esprima@~1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" @@ -800,9 +1900,9 @@ esprima@~1.1.1: integrity sha1-W28VR/TRAuZw4UDFCb5ncdautUk= estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@~1.3.0: version "1.3.2" @@ -820,15 +1920,20 @@ estree-is-function@^1.0.0: integrity sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== esutils@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -837,10 +1942,56 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +events@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exif-js@jseidelin/exif-js#*: version "2.3.0" resolved "https://codeload.github.com/jseidelin/exif-js/tar.gz/a10f3d53f3f72defef4cad5a54a90ee308901fe6" +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -854,6 +2005,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -861,6 +2019,56 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +express-session@^1.15.3: + version "1.16.2" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.16.2.tgz#59f36d7770e94872d19b163b6708a2d16aa6848c" + integrity sha512-oy0sRsdw6n93E9wpCNWKRnSsxYnSDX9Dnr9mhZgqUEEorzcq5nshGYSZ4ZReHFhKQ80WI5iVUUSPW7u3GaKauw== + dependencies: + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~2.0.0" + on-headers "~1.0.2" + parseurl "~1.3.3" + safe-buffer "5.1.2" + uid-safe "~2.1.5" + +express@^4.12.4, express@^4.14.0, express@^4.15.4, express@^4.16.2, express@^4.16.3: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -881,6 +2089,13 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -915,6 +2130,16 @@ falafel@^2.1.0: isarray "0.0.1" object-keys "^1.0.6" +fancy-log@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -930,6 +2155,22 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -940,6 +2181,38 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-package-json@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-package-json/-/find-package-json-1.2.0.tgz#4057d1b943f82d8445fe52dc9cf456f6b8b58083" + integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw== + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -971,6 +2244,13 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== +flat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + dependencies: + is-buffer "~2.0.3" + font-awesome@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.5.0.tgz#1e9d7ccf7d63bdbe57000e18d5188cb2557e70f8" @@ -981,6 +2261,13 @@ for-in@^1.0.1, for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -998,6 +2285,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.0.tgz#094ec359dc4b55e7d62e0db4acd76e89fe874d37" + integrity sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -1007,6 +2303,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -1014,6 +2315,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + from2-string@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/from2-string/-/from2-string-1.1.0.tgz#18282b27d08a267cb3030cd2b8b4b0f212af752a" @@ -1029,16 +2335,75 @@ from2@^2.0.3: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.0.0: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fsevents@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -get-assigned-identifiers@^1.1.0: +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-assigned-identifiers@^1.1.0, get-assigned-identifiers@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-pixels@~3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/get-pixels/-/get-pixels-3.3.2.tgz#3f62fb8811932c69f262bba07cba72b692b4ff03" @@ -1056,6 +2421,18 @@ get-pixels@~3.3.0: request "^2.44.0" through "^2.3.4" +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1079,6 +2456,75 @@ glfx-js@jywarren/glfx.js#*: version "0.0.1" resolved "https://codeload.github.com/jywarren/glfx.js/tar.gz/07a117c2b7c75a8556d7338108c0976d110c11a2" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -1104,16 +2550,21 @@ graceful-fs@4.1.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.0.tgz#6be6119244f64d6417fe303cc36ab497b5756cc1" integrity sha1-a+YRkkT2TWQX/jA8w2q0l7V1bME= -graceful-fs@^4.1.3: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== graceful-js@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/graceful-js/-/graceful-js-1.0.0.tgz#c71628e75055ab5f2ddca2851451ce93eb26194e" integrity sha1-xxYo51BVq18t3KKFFFHOk+smGU4= +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + grunt-cli@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" @@ -1130,6 +2581,19 @@ grunt-known-options@~1.1.0: resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== +gulp-mocha@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gulp-mocha/-/gulp-mocha-6.0.0.tgz#80f32bc705ce30747f355ddb8ccd96a1c73bef13" + integrity sha512-FfBldW5ttnDpKf4Sg6/BLOOKCCbr5mbixDGK1t02/8oSrTCwNhgN/mdszG3cuQuYNzuouUdw4EH/mlYtgUscPg== + dependencies: + dargs "^5.1.0" + execa "^0.10.0" + mocha "^5.2.0" + npm-run-path "^2.0.2" + plugin-error "^1.0.1" + supports-color "^5.4.0" + through2 "^2.0.3" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -1143,11 +2607,28 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1179,23 +2660,58 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + haversine-distance@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/haversine-distance/-/haversine-distance-1.1.4.tgz#78578c5623e75f2d791d954ca947731986b95591" integrity sha512-ElW49a3HbKhoIlFQ7gGvazYyi9etz5e1hrUDS/Z9MCvtm5iQm1YAvd9Rx8Oy121h+0X7PbsjBBRKDH4Otr0JuA== +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + heatmap.js@*: version "2.0.5" resolved "https://registry.yarnpkg.com/heatmap.js/-/heatmap.js-2.0.5.tgz#466d3b86513f5d49112a49d25700ab2730149153" integrity sha1-Rm07hlE/XUkRKknSVwCrJzAUkVM= +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -1203,6 +2719,33 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1212,16 +2755,90 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI= + +icon-android@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-android/-/icon-android-0.0.1.tgz#506b4ea60090a792ec45ee685a9b36192aa6cac8" + integrity sha1-UGtOpgCQp5LsRe5oWps2GSqmysg= + +icon-chrome@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-chrome/-/icon-chrome-0.0.1.tgz#a724cb044c9ebaa5e094721881526794b71b3da4" + integrity sha1-pyTLBEyeuqXglHIYgVJnlLcbPaQ= + +icon-firefox@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-firefox/-/icon-firefox-0.0.1.tgz#6b91a77926bc91070ff8397056eff4b7aa15fa24" + integrity sha1-a5GneSa8kQcP+DlwVu/0t6oV+iQ= + +icon-ie@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-ie/-/icon-ie-0.0.1.tgz#02dee75b0b5de3e75debe1683ec36af6d4a9bbd9" + integrity sha1-At7nWwtd4+dd6+FoPsNq9tSpu9k= + +icon-ios@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-ios/-/icon-ios-0.0.1.tgz#16cabc61255bd4ca3c679a30c54592246a073f79" + integrity sha1-Fsq8YSVb1Mo8Z5owxUWSJGoHP3k= + +icon-linux@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-linux/-/icon-linux-0.0.1.tgz#221ece1e9b0e244fd3eee8fbc1e1d29cd4dbb6b0" + integrity sha1-Ih7OHpsOJE/T7uj7weHSnNTbtrA= + +icon-opera@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-opera/-/icon-opera-0.0.1.tgz#ce5a71536e65bef669c0f6387d8bcc07194d640f" + integrity sha1-zlpxU25lvvZpwPY4fYvMBxlNZA8= + +icon-osx@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-osx/-/icon-osx-0.0.1.tgz#1a97fde0666ac81f9e5befcaba7f19fd4bd556d0" + integrity sha1-Gpf94GZqyB+eW+/Kun8Z/UvVVtA= + +icon-safari@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-safari/-/icon-safari-0.0.1.tgz#874afcc093de8f70ecc5b6a5c2cd8389faa5522c" + integrity sha1-h0r8wJPej3Dsxbalws2DifqlUiw= + +icon-windows@*: + version "0.0.1" + resolved "https://registry.yarnpkg.com/icon-windows/-/icon-windows-0.0.1.tgz#abe463f50f10d6dfc3bea2d5ffd4a1b350b57fcd" + integrity sha1-q+Rj9Q8Q1t/DvqLV/9Shs1C1f80= + iconv-lite@0.2: version "0.2.11" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8" integrity sha1-HOYKOleGSiktEyH/RgnKS7llrcg= +iconv-lite@0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + image-sequencer@publiclab/image-sequencer#~1.4.0: version "1.4.1" resolved "https://codeload.github.com/publiclab/image-sequencer/tar.gz/cbbfbff4bc14f494c423867cc4572b001c5c3c4d" @@ -1248,21 +2865,72 @@ image-sequencer@publiclab/image-sequencer#~1.4.0: version "0.9.11-rc.1" resolved "git://github.com/jywarren/imgareaselect.git#db8ae869ca0fcb289252678cebd17d6f40711f61" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4: +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= + dependencies: + source-map "~0.5.3" + +insert-module-globals@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" + integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== + dependencies: + JSONStream "^1.0.3" + acorn-node "^1.5.2" + combine-source-map "^0.8.0" + concat-stream "^1.6.1" + is-buffer "^1.1.0" + path-is-absolute "^1.0.1" + process "~0.11.0" + through2 "^2.0.0" + undeclared-identifiers "^1.1.2" + xtend "^4.0.0" + interpret@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + ion-rangeslider@ionDen/ion.rangeslider#~2.3.0: version "2.3.0" resolved "https://codeload.github.com/ionDen/ion.rangeslider/tar.gz/c98c10d3d360aa52e997bb8e4fd371c958f78e4b" @@ -1274,6 +2942,11 @@ iota-array@^1.0.0: resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -1296,11 +2969,35 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1315,6 +3012,11 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -1333,6 +3035,18 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -1345,11 +3059,35 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0: +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -1357,6 +3095,20 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1364,6 +3116,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -1371,6 +3133,23 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -1378,6 +3157,18 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1400,7 +3191,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -1433,9 +3224,9 @@ jpeg-js@0.0.4: integrity sha1-Bqr0fv7HrwsZJKWc1pWm0rXthw4= jpeg-js@^0.3.2: - version "0.3.5" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.5.tgz#6fbd6cd0e49627c5a0341796c9e50c70a2aa3673" - integrity sha512-hvaExqwmQDS8O9qnZAVDXGWU43Tbu1V0wMZmjROjT11jloSgGICZpscG+P6Nyi1BVAvyu2ARRx8qmEW30sxgdQ== + version "0.3.6" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.6.tgz#c40382aac9506e7d1f2d856eb02f6c7b2a98b37c" + integrity sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw== jquery-ujs@rails/jquery-ujs#~1.0.4: version "0.0.0" @@ -1455,6 +3246,14 @@ jquery@~2: resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" integrity sha1-LInWiJterFIqfuoywUUhVZxsvwI= +js-yaml@*, js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1470,11 +3269,28 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= + dependencies: + jsonify "~0.0.0" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -1518,11 +3334,33 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +labeled-stream-splicer@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" + integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== + dependencies: + inherits "^2.0.1" + stream-splicer "^2.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + "leaflet-blurred-location@git://github.com/publiclab/leaflet-blurred-location#main": version "1.3.0" resolved "git://github.com/publiclab/leaflet-blurred-location#1bff37cb96518bd87192277b14c290cba3c138ba" @@ -1657,12 +3495,50 @@ liftoff@~2.5.0: rechoir "^0.6.2" resolve "^1.1.7" -lodash@^4.17.5: - version "4.17.14" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= -log-symbols@^2.2.0: +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.5: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@2.2.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== @@ -1674,6 +3550,18 @@ longest@^1.0.1: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + +magic-string@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" + integrity sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI= + dependencies: + vlq "^0.2.1" + magic-string@^0.22.4: version "0.22.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" @@ -1688,6 +3576,13 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -1700,6 +3595,39 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + merge-source-map@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" @@ -1707,7 +3635,31 @@ merge-source-map@1.0.4: dependencies: source-map "^0.5.6" -micromatch@^3.0.4: +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.0.4, micromatch@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -1726,19 +3678,27 @@ micromatch@^3.0.4: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@1.40.0: +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== -mime-types@^2.0.1, mime-types@^2.1.12, mime-types@~2.1.19: +mime-types@^2.0.1, mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== dependencies: mime-db "1.40.0" -mime@^1.3.4: +mime@1.6.0, mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -1748,16 +3708,38 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" -minimist@^1.1.3: +minimist@*, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -1768,6 +3750,21 @@ minimist@~1.1.2: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= +minipass@^2.2.1, minipass@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -1776,20 +3773,109 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" integrity sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE= +mocha@*: + version "6.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.0.tgz#f896b642843445d1bb8bca60eabd9206b8916e56" + integrity sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.1" + ms "2.1.1" + node-environment-flags "1.0.5" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.2.2" + yargs-parser "13.0.0" + yargs-unparser "1.5.0" + +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + modalbox@okonet/modalbox#*: version "0.0.0" resolved "https://codeload.github.com/okonet/modalbox/tar.gz/dab4d4f0b3244f7c3dff24424a850d3379bc7c9c" +module-deps@^4.0.2, module-deps@^4.0.8: + version "4.1.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" + integrity sha1-IyFYM/HaE/1gbMuAh7RIUty4If0= + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.5.0" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.1.3" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -1807,6 +3893,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +nanosocket@*: + version "1.1.0" + resolved "https://registry.yarnpkg.com/nanosocket/-/nanosocket-1.1.0.tgz#56b00467aa3e333abc34e1089c946682b144623f" + integrity sha512-v2LsjYMRu3/JT/z8Qpkj1X5dgwCptC3D0NzeYlb7tb2qGJhlx0PSXZJraf1tRPKipj2iwB15GRzqUaOlN+LieQ== + ndarray-fft@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/ndarray-fft/-/ndarray-fft-1.0.3.tgz#dc5bba18e3ab82c997adbaebb78e79f82c93a22a" @@ -1854,6 +3945,20 @@ ndarray@^1.0.13, ndarray@^1.0.15, ndarray@^1.0.18: iota-array "^1.0.0" is-buffer "^1.0.2" +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + next-pow-2@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-pow-2/-/next-pow-2-1.0.0.tgz#cb5c2f1dae040c56cdd5cda1dc5c6a3a338f4367" @@ -1864,11 +3969,52 @@ next-tick@^1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= +ngrok@*: + version "3.2.5" + resolved "https://registry.yarnpkg.com/ngrok/-/ngrok-3.2.5.tgz#db2153e7dc4827aeafcc13b187aec331516403d9" + integrity sha512-FWWQJSg8A1L6prZmT53onZMiFiaY+CfDgS9YStKjbE3qf2WDmRdi6kNBFvQKD2ARSv/te+rqeizAOGSUH5X56w== + dependencies: + "@types/node" "^8.10.50" + "@types/request" "^2.48.2" + decompress-zip "^0.3.2" + request "^2.88.0" + request-promise-native "^1.0.7" + uuid "^3.3.2" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + node-bitmap@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/node-bitmap/-/node-bitmap-0.0.1.tgz#180eac7003e0c707618ef31368f62f84b2a69091" integrity sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE= +node-environment-flags@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" + integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + nopt@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -1876,6 +4022,14 @@ nopt@^3.0.1: dependencies: abbrev "1" +nopt@^4.0.1, nopt@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -1883,19 +4037,63 @@ nopt@~1.0.10: dependencies: abbrev "1" -nopt@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: - abbrev "1" - osenv "^0.1.4" + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0, npm-run-path@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -1915,7 +4113,7 @@ object-inspect@~1.4.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== -object-keys@^1.0.6: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -1932,6 +4130,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -1942,6 +4150,14 @@ object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -1950,6 +4166,14 @@ object.map@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -1962,9 +4186,28 @@ ol2@openlayers/ol2#release-2.13.1: resolved "https://codeload.github.com/openlayers/ol2/tar.gz/f4a4090814f240414548e8eda55070d16f3d3901" omggif@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.9.tgz#dcb7024dacd50c52b4d303f04802c91c057c765f" - integrity sha1-3LcCTazVDFK00wPwSALJHAV8dl8= + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" onetime@^2.0.0: version "2.0.1" @@ -2012,11 +4255,30 @@ ora@^2.0.0: strip-ansi "^4.0.0" wcwidth "^1.0.1" -os-homedir@^1.0.0: +os-browserify@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + integrity sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ= + +os-browserify@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +os-locale@^3.0.0, os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2030,6 +4292,40 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + pace@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/pace/-/pace-0.0.4.tgz#d66405d5f5bc12d25441a6e26c878dbc69e77a77" @@ -2037,6 +4333,35 @@ pace@0.0.4: dependencies: charm "~0.1.0" +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= + +pako@~1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= + dependencies: + path-platform "~0.11.15" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parse-data-uri@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/parse-data-uri/-/parse-data-uri-0.2.0.tgz#bf04d851dd5c87b0ab238e5d01ace494b604b4c9" @@ -2053,21 +4378,66 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -2080,11 +4450,52 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" + integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + +platform@*, platform@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" + integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q== + +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + pngjs-nozlib@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz#9e64d602cfe9cce4d9d5997d0687429a73f0b7d7" @@ -2100,6 +4511,38 @@ polyline@0.2.0: resolved "https://registry.yarnpkg.com/polyline/-/polyline-0.2.0.tgz#4f2b716ca81134a6cbaa488975d236ecb1cc2840" integrity sha1-TytxbKgRNKbLqkiJddI27LHMKEA= +popper@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/popper/-/popper-1.0.1.tgz#a3153910a01ce328a297cb241924afff0690837e" + integrity sha512-i/6yRlY5+VomX0ScQ5TI4Ro8XlQbOj7NMRf0hSnUEVv/aAP6IbrxvNcRsrEG6VsKzvltfINPeD4p++6SKwOTSA== + dependencies: + browser-icons "*" + browserify "^12.0.0" + buble "^0.16.0" + chai "*" + chokidar "*" + colors "^1.1.2" + compression "*" + cryonic "^1.0.0" + express "^4.12.4" + js-yaml "*" + minimist "*" + mocha "*" + platform "*" + rijs "*" + rijs.core "*" + rijs.css "*" + rijs.data "*" + rijs.fn "*" + rijs.npm "*" + rijs.resdir "*" + rijs.sync "*" + serve-static "*" + utilise "*" + wd "*" + optionalDependencies: + ngrok "*" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -2110,6 +4553,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -2120,51 +4568,165 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@~0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + prototypejs-bower@plynchnlm/prototypejs-bower#1.7.3: version "0.0.0" resolved "https://codeload.github.com/plynchnlm/prototypejs-bower/tar.gz/5da3d86b77b94ec7eb5b92b8b5e0a7a241adae43" -psl@^1.1.24: - version "1.2.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" - integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +psl@^1.1.24, psl@^1.1.28: + version "1.3.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd" + integrity sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" -punycode@^1.4.1: +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -quote-stream@^1.0.1, quote-stream@^1.0.2, quote-stream@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" - integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +quote-stream@^1.0.1, quote-stream@^1.0.2, quote-stream@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= + dependencies: + buffer-equal "0.0.1" + minimist "^1.1.3" + through2 "^2.0.0" + +quote-stream@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-0.0.0.tgz#cde29e94c409b16e19dc7098b89b6658f9721d3b" + integrity sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs= + dependencies: + minimist "0.0.8" + through2 "~0.4.1" + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - buffer-equal "0.0.1" - minimist "^1.1.3" - through2 "^2.0.0" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" -quote-stream@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-0.0.0.tgz#cde29e94c409b16e19dc7098b89b6658f9721d3b" - integrity sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs= +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - minimist "0.0.8" - through2 "~0.4.1" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= + dependencies: + readable-stream "^2.0.2" readable-stream@^1.1.8, readable-stream@~1.1.9: version "1.1.14" @@ -2176,7 +4738,7 @@ readable-stream@^1.1.8, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@~2.3.3, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -2189,6 +4751,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.0.1, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~1.0.17, readable-stream@~1.0.27-1, readable-stream@~1.0.33-1: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -2211,10 +4782,26 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.2.tgz#fa85d2d14d4289920e4671dead96431add2ee78a" + integrity sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw== + dependencies: + picomatch "^2.0.4" + readline-sync@^1.4.7: - version "1.4.9" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda" - integrity sha1-PtqOZfI80qF+YTAbHwADOWr17No= + version "1.4.10" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" + integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== rechoir@^0.6.2: version "0.6.2" @@ -2223,6 +4810,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -2231,6 +4825,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -2241,7 +4840,23 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.44.0: +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@2.88.0, request@^2.44.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -2267,6 +4882,21 @@ request@^2.44.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -2280,10 +4910,15 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" @@ -2307,21 +4942,160 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" +rijs.components@*: + version "3.1.16" + resolved "https://registry.yarnpkg.com/rijs.components/-/rijs.components-3.1.16.tgz#97b43246f1842e45a5b97bb8cce3abae8d0e54b5" + integrity sha512-7TneWZIILv20erfzKtU1xnwtFSxiB+/9rwdS/3WGkugUbaXZF811kNfvaOlE4+BEj08CV8o0Dkasih3p4NV/dw== + dependencies: + "@compone/define" "^1.2.4" + utilise "^2.3.5" + +rijs.core@*: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rijs.core/-/rijs.core-1.2.6.tgz#638cd5a01baae10fccf57683172802adf37a7414" + integrity sha512-bB/tay726eZomQe91ciIuSGM1zDNyIuOkKdg6jRvYOGR8N30x5qHoADVgCEJgpgqlsPjmuBq6qPsJ3Pw4Nv6Uw== + dependencies: + colors "^1.1.0" + utilise "^2.3.5" + +rijs.css@*: + version "1.2.4" + resolved "https://registry.yarnpkg.com/rijs.css/-/rijs.css-1.2.4.tgz#f0c227ba58e4d0a50e7261a90536a96254ddc9df" + integrity sha512-2VKq0iWFki9gZMntUCoOCJVxn/o7tOZu7L0MzD7srPKiynaTsk8A7PjTwFmds1vdJ995v8adg3ax0eS5i+Jbow== + dependencies: + djbx "^1.0.3" + utilise "^2.3.3" + +rijs.data@*: + version "2.2.4" + resolved "https://registry.yarnpkg.com/rijs.data/-/rijs.data-2.2.4.tgz#7ba03c30afb463a6ea40c8ca8bc2b3a033939e26" + integrity sha512-zvR1GzRzcqZOeD7K+YVV7MmvLeLFbrLsrkxkEW570WiLQsnjTaZ6hLnftXlHLnPMWMIrGfs8gh6BJLWY3XcjXA== + dependencies: + utilise "^2.3.5" + +rijs.fn@*: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rijs.fn/-/rijs.fn-1.2.6.tgz#b2a24f2c40eb2bdc58119ededdc63b30fb848ace" + integrity sha512-v/xM7OOzS8HXqGA0y9ey/D0YOyAjiujKJT17/4U0CqViVhMi+0AsJCSuJqSMS4CkzLpy3CqdgKkRD6hnet3i+w== + dependencies: + browser-resolve "^1.11.2" + utilise "^2.3.5" + +rijs.npm@*: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rijs.npm/-/rijs.npm-2.0.0.tgz#3dd1d8681e3598e813379d44e6c05519fa230889" + integrity sha512-xRg5+MH0H5fDe9aMi68xZHq3E6AH1+fouGIJ+a7uFoirnbYdP9YqMK3QYFnvslF0Is08Rhx/R9P/7vwpI1N4rg== + dependencies: + browser-resolve "^1.11.2" + browserify "^14.5.0" + find-package-json "^1.0.0" + utilise "*" + +rijs.pages@*: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rijs.pages/-/rijs.pages-1.3.0.tgz#8c1495158f136f30743bd99f223e25d0d740b77b" + integrity sha512-230MZ7oyDVPoTBQSHuA3vqawikFgRtvoVRaRq7utWPpbo7NpDO7TaOsJmzM66WPypMXStH5ijyFADXwrqYJvdg== + dependencies: + compression "^1.6.2" + express "^4.16.2" + serve-static "^1.13.1" + utilise "*" + +rijs.resdir@*: + version "1.4.4" + resolved "https://registry.yarnpkg.com/rijs.resdir/-/rijs.resdir-1.4.4.tgz#41ed402dde3610bbb1dd42551c79101944f8f02f" + integrity sha512-l31HSXq13Rqaxr5wfY4d2MBFdTwmgG1A/FxGNrBc31E2WgBe4Hj86LhnRQage4SN8RjVZnf1JWWakbS7BVfoBw== + dependencies: + chokidar "^1.0.5" + glob "^7.1.2" + minimist "^1.2.0" + utilise "^2.3.5" + +rijs.serve@*: + version "1.1.1" + resolved "https://registry.yarnpkg.com/rijs.serve/-/rijs.serve-1.1.1.tgz#37abcf4e93ddd69f78f23f11783c5e779b434715" + integrity sha512-BZ4tNnMakHvfv0pLVLm1xtN7fncAnux5n57A1RsFOma1Y2wexM/ww8BHwQrsCkSYP+3ujfljthyb1J3HJGwXpA== + dependencies: + compression "^1.7.2" + express "^4.16.3" + utilise "^2.3.5" + +rijs.sessions@*: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rijs.sessions/-/rijs.sessions-1.1.2.tgz#5a5cc94929f1f768f76dfb33af52c048e6ad837c" + integrity sha512-vj9iV8ov5awAnDy5x28FEezafbMClO/1JhnBIIsQg9DQ5vQBysPlwyiSHtNelXmE9gFbaxnsPD1/mUc3hm3FsQ== + dependencies: + cookie-parser "^1.3.5" + express-session "^1.15.3" + utilise "*" + +rijs.singleton@*: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rijs.singleton/-/rijs.singleton-1.0.0.tgz#74e7fbf186a8e4dc0cd3b00ed6377a6128f4b691" + integrity sha512-QeVEkimxkU0v06NnMYkKsj7R2AzFewG2FH1wMuUtO88n7gY7C/zdbFkNbYeWxqL+tuK+eLYWGFuoburTNM7rXQ== + dependencies: + utilise "*" + +rijs.sync@*: + version "2.3.5" + resolved "https://registry.yarnpkg.com/rijs.sync/-/rijs.sync-2.3.5.tgz#8728c6d7d72a80172fcba316b27d0a43f30449ab" + integrity sha512-tcbhmjLyWb+2s2gdiSmROEoD/OQPFeKC9xBnKgs0H+umY8CaVrVPGFdr1y1qovm7HxUbdk/BKqi94GQDc5XB3A== + dependencies: + buble "github:pemrouz/buble" + express "^4.14.0" + lru_map "^0.3.3" + platform "^1.3.4" + utilise "^2.3.5" + xrs "^1.2.2" + +rijs@*: + version "0.9.1" + resolved "https://registry.yarnpkg.com/rijs/-/rijs-0.9.1.tgz#6a0569a898cc5a5f92bfd59ad866c8ef1a9f2787" + integrity sha512-Hl5yWFZUdVePXIOHRrFXGxQZ2+fzWucqqx/aQjkE0PxbmNyOY0WA/SWdDA1eKeqb7lh2a0vcchR9mZLiQ9rHFQ== + dependencies: + rijs.components "*" + rijs.core "*" + rijs.css "*" + rijs.data "*" + rijs.fn "*" + rijs.pages "*" + rijs.resdir "*" + rijs.serve "*" + rijs.sessions "*" + rijs.singleton "*" + rijs.sync "*" + utilise "*" + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -2329,7 +5103,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2347,6 +5121,11 @@ save-pixels@~2.3.4: pngjs-nozlib "^1.0.0" through "^2.3.4" +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + scope-analyzer@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.0.5.tgz#72c9c6770c3e66984f84c7d3c7045998a1a7db8a" @@ -2359,6 +5138,45 @@ scope-analyzer@^2.0.1: estree-is-function "^1.0.0" get-assigned-identifiers "^1.1.0" +semver@^5.3.0, semver@^5.5.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@*, serve-static@1.14.1, serve-static@^1.13.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -2369,11 +5187,24 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + sexagesimal@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/sexagesimal/-/sexagesimal-0.5.0.tgz#9d815bd2bddd634b625ba6851bf8fe74a5ad3ef3" integrity sha1-nYFb0r3dY0tiW6aFG/j+dKWtPvM= +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" @@ -2388,11 +5219,41 @@ shapefile@0.3: iconv-lite "0.2" optimist "0.3" -signal-exit@^3.0.2: +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.4.3, shell-quote@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b" + integrity sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg== + +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2444,7 +5305,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -2481,6 +5342,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" @@ -2575,11 +5441,96 @@ static-module@^3.0.0: static-eval "^2.0.2" through2 "~2.0.3" -string_decoder@~0.10.x: +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-http@^2.0.0: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-splicer@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" + integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.0, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +string_decoder@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== + dependencies: + safe-buffer "~5.1.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -2587,6 +5538,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -2594,14 +5552,88 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -supports-color@^5.3.0: +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= + dependencies: + minimist "^1.1.0" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -through2@^2.0.0, through2@~2.0.3: +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" + integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== + dependencies: + acorn-node "^1.2.0" + +tar-stream@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" + integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== + dependencies: + bl "^3.0.0" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^4: + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -2617,11 +5649,28 @@ through2@~0.4.1: readable-stream "~1.0.17" xtend "~2.1.1" -through@^2.3.4: +"through@>=2.2.7 <3", through@^2.3.4, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= + dependencies: + process "~0.11.0" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -2637,6 +5686,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -2656,6 +5712,11 @@ togeojson@0.13.0: minimist "0.0.8" xmldom "~0.1.19" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + topojson@1.6.26: version "1.6.26" resolved "https://registry.yarnpkg.com/topojson/-/topojson-1.6.26.tgz#365f88a5e1858ab064872d9b968496fa923857ad" @@ -2675,6 +5736,14 @@ touch@0.0.3: dependencies: nopt "~1.0.10" +tough-cookie@^2.3.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -2688,6 +5757,11 @@ tough-cookie@~2.4.3: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= +tty-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -2707,10 +5781,23 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" + integrity sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg== typedarray-pool@^1.0.0, typedarray-pool@^1.1.0: version "1.1.0" @@ -2740,11 +5827,34 @@ uglify-to-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +uid-safe@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== + dependencies: + random-bytes "~1.0.0" + +umd@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" + integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= +undeclared-identifiers@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" + integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== + dependencies: + acorn-node "^1.3.0" + dash-ast "^1.0.0" + get-assigned-identifiers "^1.2.0" + simple-concat "^1.0.0" + xtend "^4.0.1" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -2760,6 +5870,11 @@ uniq@^1.0.0: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -2792,21 +5907,61 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@~0.10.1: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +utilise@*, utilise@^2.3.3, utilise@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/utilise/-/utilise-2.3.8.tgz#a639f79b1b385600b21ee58acfe991f2a83189c2" + integrity sha512-scuRvOkBODMEvS87Uz0Pe3f737JSszUAgB9pHHOHaHroA0MfFC+STXBIDT3x/uMQx/9sbREJnHUhs9xfRPT+gg== + dependencies: + colors "^1.2.3" + through "^2.3.8" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uws@^9.148.0: + version "9.148.0" + resolved "https://registry.yarnpkg.com/uws/-/uws-9.148.0.tgz#56aff36cb95f7594573daff2a21105ec4b764664" + integrity sha512-vWt+e8dOdwLM4neb1xIeZuQ7ZUN3l7n0qTKrOUtU1EZrV4BpmrSnsEL30d062/ocqRMGtLpwzVFsLKFgXomA9g== + v8flags@~3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" @@ -2814,6 +5969,16 @@ v8flags@~3.1.1: dependencies: homedir-polyfill "^1.0.1" +vargs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" + integrity sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8= + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -2823,11 +5988,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.2: +vlq@^0.2.1, vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== +vm-browserify@~0.0.1: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + dependencies: + indexof "0.0.1" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -2835,6 +6007,21 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +wd@*: + version "1.11.3" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.11.3.tgz#db228863e15648e0c1466df45b263fc30470dbc4" + integrity sha512-doB7E6DDhis6sSCfWps9Uz0UBBPAySv1x96KH6klfHp8y89HvhqEq3c0O8LPZhG37egJULN0m7+M9t16xUTG0g== + dependencies: + archiver "^3.0.0" + async "^2.0.0" + fancy-log "^1.3.3" + gulp-mocha "^6.0.0" + lodash "^4.0.0" + mkdirp "^0.5.1" + q "^1.5.1" + request "2.88.0" + vargs "^0.1.0" + webgl-distort@jywarren/webgl-distort#*: version "0.0.1" resolved "https://codeload.github.com/jywarren/webgl-distort/tar.gz/f8a86cb7c60b25a1728ffb532c8ec2db116821f7" @@ -2847,13 +6034,25 @@ wellknown@0.4.2: concat-stream "~1.5.0" minimist "~1.1.2" -which@^1.2.14: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1.3.1, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +wide-align@1.1.3, wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -2874,12 +6073,36 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + xmldom@~0.1.19: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= -xtend@^4.0.1, xtend@~4.0.1: +xrs@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/xrs/-/xrs-1.2.2.tgz#767ee98cd09c97e8a4b9dc1191973d214ea7b7ab" + integrity sha512-pLmxYQnG3Qm0xtZZMFr7W7ls9DYNtNe9D5KLQpniu3DeoHDMkFXrjo8OjCEyhQ3Pf4Jr/pYFDhuMrQVTfEqEOw== + dependencies: + colors "^1.2.1" + express "^4.15.4" + nanosocket "*" + utilise "^2.3.5" + uws "^9.148.0" + +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -2891,6 +6114,84 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^3.0.0, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" + integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.0.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-unparser@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" + integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw== + dependencies: + flat "^4.1.0" + lodash "^4.17.11" + yargs "^12.0.5" + +yargs@13.2.2: + version "13.2.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" + integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== + dependencies: + cliui "^4.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.0.0" + +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" @@ -2900,3 +6201,12 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" + +zip-stream@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c" + integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^2.1.1" + readable-stream "^3.4.0"