From f18c5a021c737cb387f344e6aaa07ad1d65a9846 Mon Sep 17 00:00:00 2001 From: Dan Elbert Date: Thu, 6 Aug 2020 20:26:45 -0500 Subject: [PATCH] Fix recipe page history; fix caching --- Gemfile | 2 +- Gemfile.lock | 176 ++++++++++---------- app/controllers/recipes_controller.rb | 1 + app/javascript/components/AppPager.vue | 2 +- app/javascript/components/AppSearchText.vue | 66 ++++++++ app/javascript/components/TheRecipeList.vue | 132 +++++++++++---- app/javascript/lib/Api.js | 4 +- app/javascript/packs/application.js | 2 + app/javascript/router.js | 10 ++ app/models/recipe.rb | 1 - app/views/foods/index.json.jbuilder | 2 +- app/views/logs/index.json.jbuilder | 2 +- app/views/recipes/index.json.jbuilder | 2 +- app/views/recipes/show.json.jbuilder | 2 +- config/application.rb | 3 + config/webpacker.yml | 2 +- db/schema.rb | 11 +- yarn.lock | 139 +--------------- 18 files changed, 297 insertions(+), 262 deletions(-) create mode 100644 app/javascript/components/AppSearchText.vue diff --git a/Gemfile b/Gemfile index 3695290..213cc1e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '6.0.2.2' +gem 'rails', '6.0.3.2' gem 'pg', '~> 1.2.2' gem 'webpacker', '5.1.1' diff --git a/Gemfile.lock b/Gemfile.lock index 70c9bf0..f6cfbfc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,78 +1,78 @@ GEM remote: https://rubygems.org/ specs: - actioncable (6.0.2.2) - actionpack (= 6.0.2.2) + actioncable (6.0.3.2) + actionpack (= 6.0.3.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.0.2.2) - actionpack (= 6.0.2.2) - activejob (= 6.0.2.2) - activerecord (= 6.0.2.2) - activestorage (= 6.0.2.2) - activesupport (= 6.0.2.2) + actionmailbox (6.0.3.2) + actionpack (= 6.0.3.2) + activejob (= 6.0.3.2) + activerecord (= 6.0.3.2) + activestorage (= 6.0.3.2) + activesupport (= 6.0.3.2) mail (>= 2.7.1) - actionmailer (6.0.2.2) - actionpack (= 6.0.2.2) - actionview (= 6.0.2.2) - activejob (= 6.0.2.2) + actionmailer (6.0.3.2) + actionpack (= 6.0.3.2) + actionview (= 6.0.3.2) + activejob (= 6.0.3.2) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.0.2.2) - actionview (= 6.0.2.2) - activesupport (= 6.0.2.2) + actionpack (6.0.3.2) + actionview (= 6.0.3.2) + activesupport (= 6.0.3.2) rack (~> 2.0, >= 2.0.8) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.2.2) - actionpack (= 6.0.2.2) - activerecord (= 6.0.2.2) - activestorage (= 6.0.2.2) - activesupport (= 6.0.2.2) + actiontext (6.0.3.2) + actionpack (= 6.0.3.2) + activerecord (= 6.0.3.2) + activestorage (= 6.0.3.2) + activesupport (= 6.0.3.2) nokogiri (>= 1.8.5) - actionview (6.0.2.2) - activesupport (= 6.0.2.2) + actionview (6.0.3.2) + activesupport (= 6.0.3.2) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.0.2.2) - activesupport (= 6.0.2.2) + activejob (6.0.3.2) + activesupport (= 6.0.3.2) globalid (>= 0.3.6) - activemodel (6.0.2.2) - activesupport (= 6.0.2.2) - activerecord (6.0.2.2) - activemodel (= 6.0.2.2) - activesupport (= 6.0.2.2) - activestorage (6.0.2.2) - actionpack (= 6.0.2.2) - activejob (= 6.0.2.2) - activerecord (= 6.0.2.2) + activemodel (6.0.3.2) + activesupport (= 6.0.3.2) + activerecord (6.0.3.2) + activemodel (= 6.0.3.2) + activesupport (= 6.0.3.2) + activestorage (6.0.3.2) + actionpack (= 6.0.3.2) + activejob (= 6.0.3.2) + activerecord (= 6.0.3.2) marcel (~> 0.3.1) - activesupport (6.0.2.2) + activesupport (6.0.3.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) - zeitwerk (~> 2.2) - bcrypt (3.1.13) - bootsnap (1.4.6) + zeitwerk (~> 2.2, >= 2.2.2) + bcrypt (3.1.15) + bootsnap (1.4.7) msgpack (~> 1.0) builder (3.2.4) - coderay (1.1.2) + coderay (1.1.3) concurrent-ruby (1.1.6) crass (1.0.6) dalli (2.7.10) - database_cleaner (1.8.4) - diff-lcs (1.3) + database_cleaner (1.8.5) + diff-lcs (1.4.4) erubi (1.9.0) factory_bot (5.2.0) activesupport (>= 4.2.0) factory_bot_rails (5.2.0) factory_bot (~> 5.2.0) railties (>= 4.2.0) - ffi (1.12.2) + ffi (1.13.1) formatador (0.2.5) globalid (0.4.2) activesupport (>= 4.2.0) @@ -90,30 +90,30 @@ GEM guard (~> 2.1) guard-compat (~> 1.1) rspec (>= 2.99.0, < 4.0) - i18n (1.8.2) + i18n (1.8.5) concurrent-ruby (~> 1.0) jbuilder (2.10.0) activesupport (>= 5.0.0) - kaminari (1.2.0) + kaminari (1.2.1) activesupport (>= 4.1.0) - kaminari-actionview (= 1.2.0) - kaminari-activerecord (= 1.2.0) - kaminari-core (= 1.2.0) - kaminari-actionview (1.2.0) + kaminari-actionview (= 1.2.1) + kaminari-activerecord (= 1.2.1) + kaminari-core (= 1.2.1) + kaminari-actionview (1.2.1) actionview - kaminari-core (= 1.2.0) - kaminari-activerecord (1.2.0) + kaminari-core (= 1.2.1) + kaminari-activerecord (1.2.1) activerecord - kaminari-core (= 1.2.0) - kaminari-core (1.2.0) + kaminari-core (= 1.2.1) + kaminari-core (1.2.1) liner (0.2.4) listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.5.0) + loofah (2.6.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) - lumberjack (1.2.4) + lumberjack (1.2.7) mail (2.7.1) mini_mime (>= 0.1.1) marcel (0.3.3) @@ -121,58 +121,58 @@ GEM memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) method_source (1.0.0) - mimemagic (0.3.4) + mimemagic (0.3.5) mini_mime (1.0.2) mini_portile2 (2.4.0) - minitest (5.14.0) + minitest (5.14.1) msgpack (1.3.3) nenv (0.3.0) nio4r (2.5.2) - nokogiri (1.10.9) + nokogiri (1.10.10) mini_portile2 (~> 2.4.0) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) - oj (3.10.6) + oj (3.10.8) parslet (1.8.2) pg (1.2.3) pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) - puma (4.3.3) + puma (4.3.5) nio4r (~> 2.0) - rack (2.2.2) + rack (2.2.3) rack-proxy (0.6.5) rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.0.2.2) - actioncable (= 6.0.2.2) - actionmailbox (= 6.0.2.2) - actionmailer (= 6.0.2.2) - actionpack (= 6.0.2.2) - actiontext (= 6.0.2.2) - actionview (= 6.0.2.2) - activejob (= 6.0.2.2) - activemodel (= 6.0.2.2) - activerecord (= 6.0.2.2) - activestorage (= 6.0.2.2) - activesupport (= 6.0.2.2) + rails (6.0.3.2) + actioncable (= 6.0.3.2) + actionmailbox (= 6.0.3.2) + actionmailer (= 6.0.3.2) + actionpack (= 6.0.3.2) + actiontext (= 6.0.3.2) + actionview (= 6.0.3.2) + activejob (= 6.0.3.2) + activemodel (= 6.0.3.2) + activerecord (= 6.0.3.2) + activestorage (= 6.0.3.2) + activesupport (= 6.0.3.2) bundler (>= 1.3.0) - railties (= 6.0.2.2) + railties (= 6.0.3.2) 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-controller-testing (1.0.5) + actionpack (>= 5.0.1.rc1) + actionview (>= 5.0.1.rc1) + activesupport (>= 5.0.1.rc1) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) rails-html-sanitizer (1.3.0) loofah (~> 2.3) - railties (6.0.2.2) - actionpack (= 6.0.2.2) - activesupport (= 6.0.2.2) + railties (6.0.3.2) + actionpack (= 6.0.3.2) + activesupport (= 6.0.3.2) method_source rake (>= 0.8.7) thor (>= 0.20.3, < 2.0) @@ -185,9 +185,9 @@ GEM rspec-core (~> 3.9.0) rspec-expectations (~> 3.9.0) rspec-mocks (~> 3.9.0) - rspec-core (3.9.1) - rspec-support (~> 3.9.1) - rspec-expectations (3.9.1) + rspec-core (3.9.2) + rspec-support (~> 3.9.3) + rspec-expectations (3.9.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.9.0) rspec-mocks (3.9.1) @@ -201,11 +201,11 @@ GEM rspec-expectations (~> 3.9.0) rspec-mocks (~> 3.9.0) rspec-support (~> 3.9.0) - rspec-support (3.9.2) + rspec-support (3.9.3) semantic_range (2.3.0) shellany (0.0.1) signed_multiset (0.2.1) - sprockets (4.0.0) + sprockets (4.0.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.2.1) @@ -229,10 +229,10 @@ GEM rack-proxy (>= 0.6.1) railties (>= 5.2) semantic_range (>= 2.3.0) - websocket-driver (0.7.1) + websocket-driver (0.7.3) websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.4) - zeitwerk (2.3.0) + websocket-extensions (0.1.5) + zeitwerk (2.4.0) PLATFORMS ruby @@ -250,7 +250,7 @@ DEPENDENCIES oj (~> 3.10.6) pg (~> 1.2.2) puma (~> 4.3.3) - rails (= 6.0.2.2) + rails (= 6.0.3.2) rails-controller-testing redcarpet (~> 3.5.0) rspec-rails (~> 3.9.1) diff --git a/app/controllers/recipes_controller.rb b/app/controllers/recipes_controller.rb index 43d1a40..55902bb 100644 --- a/app/controllers/recipes_controller.rb +++ b/app/controllers/recipes_controller.rb @@ -56,6 +56,7 @@ class RecipesController < ApplicationController def update ensure_owner(@recipe) do if @recipe.update(recipe_params) + @recipe.touch render json: { success: true } else render json: @recipe.errors, status: :unprocessable_entity diff --git a/app/javascript/components/AppPager.vue b/app/javascript/components/AppPager.vue index 6ee8c3d..1ffd492 100644 --- a/app/javascript/components/AppPager.vue +++ b/app/javascript/components/AppPager.vue @@ -46,7 +46,7 @@ showWithSinglePage: { required: false, type: Boolean, - default: true + default: false } }, diff --git a/app/javascript/components/AppSearchText.vue b/app/javascript/components/AppSearchText.vue new file mode 100644 index 0000000..fe1eba0 --- /dev/null +++ b/app/javascript/components/AppSearchText.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/app/javascript/components/TheRecipeList.vue b/app/javascript/components/TheRecipeList.vue index c54ce31..c07283b 100644 --- a/app/javascript/components/TheRecipeList.vue +++ b/app/javascript/components/TheRecipeList.vue @@ -17,7 +17,7 @@ {{h.label}} - + {{h.label}} @@ -25,18 +25,10 @@ -
-
- -
-
+ -
-
- -
-
+ @@ -86,6 +78,10 @@ +
+ No Recipes +
+ @@ -100,18 +96,18 @@ import AppLoading from "./AppLoading"; export default { + props: { + searchQuery: { + type: Object, + required: false, + default: {} + } + }, + data() { return { recipeData: null, - recipeForDeletion: null, - search: { - sortColumn: 'created_at', - sortDirection: 'desc', - page: 1, - per: 25, - name: null, - tags: null - } + recipeForDeletion: null }; }, @@ -119,6 +115,18 @@ ...mapState([ "mediaQueries" ]), + + search() { + return { + name: this.searchQuery.name || null, + tags: this.searchQuery.tags || null, + column: this.searchQuery.column || "created_at", + direction: this.searchQuery.direction || "desc", + page: this.searchQuery.page || 1, + per: this.searchQuery.per || 25 + } + }, + recipes() { if (this.recipeData) { return this.recipeData.recipes; @@ -169,17 +177,81 @@ ...mapMutations([ "setInitialLoad" ]), + + buildQueryParams() { + return { + name: this.searchQuery.name, + tags: this.searchQuery.tags, + column: this.searchQuery.column, + direction: this.searchQuery.direction, + page: this.searchQuery.page, + per: this.searchQuery.per + } + }, + + redirectToParams(params) { + const rParams = {}; + + if (params.name) { + rParams.name = params.name; + } + + if (params.tags) { + rParams.tags = params.tags; + } + + if (params.column) { + rParams.column = params.column; + } + + if (params.direction) { + rParams.direction = params.direction; + } + + if (params.page) { + rParams.page = params.page; + } + + if (params.per) { + rParams.per = params.per; + } + + this.$router.push({name: 'recipeList', query: rParams}); + }, changePage(idx) { - this.search.page = idx; + const p = this.buildQueryParams(); + p.page = idx; + this.redirectToParams(p); }, setSort(col) { - if (this.search.sortColumn === col) { - this.search.sortDirection = this.search.sortDirection === "desc" ? "asc" : "desc"; + const p = this.buildQueryParams(); + + if (p.column === col) { + p.direction = p.direction === "desc" ? "asc" : "desc"; } else { - this.search.sortColumn = col; - this.search.sortDirection = "asc"; + p.column = col; + p.direction = "asc"; + } + this.redirectToParams(p); + }, + + setSearchName(name) { + const p = this.buildQueryParams(); + if (name !== p.name) { + p.name = name; + p.page = null; + this.redirectToParams(p); + } + }, + + setSearchTags(tags) { + const p = this.buildQueryParams(); + if (tags !== p.tags) { + p.tags = tags; + p.page = null; + this.redirectToParams(p); } }, @@ -202,11 +274,11 @@ this.recipeForDeletion = null; }, - getList: debounce(function() { + getList() { return this.loadResource( - api.getRecipeList(this.search.page, this.search.per, this.search.sortColumn, this.search.sortDirection, this.search.name, this.search.tags, data => this.recipeData = data) + api.getRecipeList(this.search.page, this.search.per, this.search.column, this.search.direction, this.search.name, this.search.tags, data => this.recipeData = data) ); - }, 500, {leading: true, trailing: true}), + }, formatRecipeTime(total, active) { let str = ""; @@ -229,7 +301,9 @@ created() { this.$watch("search", - () => this.getList().then(() => this.setInitialLoad(true)), + () => { + this.getList().then(() => this.setInitialLoad(true)); + }, { deep: true, immediate: true diff --git a/app/javascript/lib/Api.js b/app/javascript/lib/Api.js index 4c05040..79f53b0 100644 --- a/app/javascript/lib/Api.js +++ b/app/javascript/lib/Api.js @@ -123,8 +123,8 @@ class Api { getRecipeList(page, per, sortColumn, sortDirection, name, tags, dataHandler) { const params = { criteria: { - page: page || null, - per: per || null, + page: page || 1, + per: per || 20, sort_column: sortColumn || null, sort_direction: sortDirection || null, name: name || null, diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index 7b8ce33..6008abd 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -25,6 +25,7 @@ import AppModal from "../components/AppModal"; import AppNavbar from "../components/AppNavbar"; import AppPager from "../components/AppPager"; import AppRating from "../components/AppRating"; +import AppSearchText from "../components/AppSearchText"; import AppTagEditor from "../components/AppTagEditor"; import AppTextField from "../components/AppTextField"; import AppValidationErrors from "../components/AppValidationErrors"; @@ -41,6 +42,7 @@ Vue.component("AppModal", AppModal); Vue.component("AppNavbar", AppNavbar); Vue.component("AppPager", AppPager); Vue.component("AppRating", AppRating); +Vue.component("AppSearchText", AppSearchText); Vue.component("AppTagEditor", AppTagEditor); Vue.component("AppTextField", AppTextField); Vue.component("AppValidationErrors", AppValidationErrors); diff --git a/app/javascript/router.js b/app/javascript/router.js index 655b03d..68be6aa 100644 --- a/app/javascript/router.js +++ b/app/javascript/router.js @@ -52,6 +52,16 @@ router.addRoutes( path: '/recipes', name: 'recipeList', component: TheRecipeList, + props: route => ({ + searchQuery: { + name: route.query.name, + tags: route.query.tags, + column: route.query.column, + direction: route.query.direction, + page: route.query.page, + per: route.query.per + } + }), meta: { handleInitialLoad: true } diff --git a/app/models/recipe.rb b/app/models/recipe.rb index 251e946..74c7ec0 100644 --- a/app/models/recipe.rb +++ b/app/models/recipe.rb @@ -27,7 +27,6 @@ class Recipe < Ingredient [ 'recipes', self.id.to_s, - self.updated_at.to_i.to_s, converted_scale || '-', converted_system || '-', converted_unit || '-' diff --git a/app/views/foods/index.json.jbuilder b/app/views/foods/index.json.jbuilder index c5beccb..cb058d6 100644 --- a/app/views/foods/index.json.jbuilder +++ b/app/views/foods/index.json.jbuilder @@ -1,5 +1,5 @@ -json.cache_root! [Food.all, @foods] do +json.cache_root!(@foods, version: @foods.cache_version) do json.extract! @foods, :total_count, :total_pages, :current_page json.page_size @foods.limit_value diff --git a/app/views/logs/index.json.jbuilder b/app/views/logs/index.json.jbuilder index 90d9dfa..636e9c6 100644 --- a/app/views/logs/index.json.jbuilder +++ b/app/views/logs/index.json.jbuilder @@ -1,5 +1,5 @@ -json.cache_root! [Log.all, @logs] do +json.cache_root!(@logs, version: @logs.cache_version) do json.extract! @logs, :total_count, :total_pages, :current_page json.page_size @logs.limit_value diff --git a/app/views/recipes/index.json.jbuilder b/app/views/recipes/index.json.jbuilder index a415406..17c0f33 100644 --- a/app/views/recipes/index.json.jbuilder +++ b/app/views/recipes/index.json.jbuilder @@ -1,5 +1,5 @@ -json.cache_root! [Recipe.all, @recipes] do +json.cache_root!(@recipes.cache_key, version: @recipes.cache_version) do json.extract! @recipes, :total_count, :total_pages, :current_page json.page_size @recipes.limit_value diff --git a/app/views/recipes/show.json.jbuilder b/app/views/recipes/show.json.jbuilder index 084c7fe..fcb6de8 100644 --- a/app/views/recipes/show.json.jbuilder +++ b/app/views/recipes/show.json.jbuilder @@ -1,4 +1,4 @@ -json.cache_root! [@recipe] do +json.cache_root!(@recipe, version: @recipe.cache_version) do json.partial! 'recipe', recipe: @recipe diff --git a/config/application.rb b/config/application.rb index e4d4936..5d0157e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -24,6 +24,9 @@ module Parsley # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 + config.active_record.collection_cache_versioning = true + config.active_record.cache_versioning = true + if ENV['RAILS_USE_MEMCACHE'] == 'true' config.cache_store = :mem_cache_store, ENV['RAILS_MEMCACHE_HOST'] || 'memcache' end diff --git a/config/webpacker.yml b/config/webpacker.yml index 913f92a..aabcd64 100644 --- a/config/webpacker.yml +++ b/config/webpacker.yml @@ -59,7 +59,7 @@ development: # Reference: https://webpack.js.org/configuration/dev-server/ dev_server: https: false - host: localhost + host: 0.0.0.0 port: 3035 public: localhost:3035 hmr: true diff --git a/db/schema.rb b/db/schema.rb index 774bd84..6728063 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,11 +2,11 @@ # 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). +# This file is the source Rails uses to define your schema when running `rails +# db:schema:load`. When creating a new database, `rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. # # It's strongly recommended that you check this file into your version control system. @@ -52,6 +52,7 @@ ActiveRecord::Schema.define(version: 2018_09_15_134841) do t.decimal "vit_d", precision: 10, scale: 1 t.decimal "vit_k", precision: 10, scale: 1 t.decimal "cholesterol", precision: 10, scale: 3 + t.index ["ndbn"], name: "index_foods_on_ndbn" end create_table "logs", force: :cascade do |t| diff --git a/yarn.lock b/yarn.lock index ec55f88..733c688 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2348,7 +2348,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2384,11 +2384,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.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== - default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -2472,11 +2467,6 @@ detect-file@^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= - detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" @@ -3083,13 +3073,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -3534,7 +3517,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3558,13 +3541,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -3658,7 +3634,7 @@ inherits@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.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4524,14 +4500,6 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - minipass@^3.0.0, minipass@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" @@ -4539,13 +4507,6 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -4639,15 +4600,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.2.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a" - integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g== - 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" @@ -4715,22 +4667,6 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - 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.4.2" - node-releases@^1.1.53: version "1.1.53" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" @@ -4766,14 +4702,6 @@ node-sass@^4.13.1: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -4816,27 +4744,6 @@ normalize-url@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -4844,7 +4751,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -5027,7 +4934,7 @@ os-tmpdir@^1.0.0: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@0: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6162,16 +6069,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -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: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -6425,7 +6322,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6490,7 +6387,7 @@ sass-loader@^8.0.2: schema-utils "^2.6.1" semver "^6.3.0" -sax@^1.2.4, sax@~1.2.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== @@ -6532,7 +6429,7 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -7043,11 +6940,6 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.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= - style-loader@^1.1.3: version "1.2.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" @@ -7129,19 +7021,6 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" @@ -7806,7 +7685,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==