From 1abd6eb261fe75937e98eb0c3f81b5d300968b5d Mon Sep 17 00:00:00 2001 From: ghtMare <2467889729@qq.com> Date: Fri, 12 May 2023 22:41:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E8=B4=AD=E7=89=A9=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CatApp_android_End/pom.xml | 2 +- .../cat/controller/CatProductController.java | 3 +- .../controller/CatShoppingCartController.java | 97 +++- .../cat/mapper/ShoppingCartMapper.java | 25 +- .../cat/service/ShoppingCartService.java | 33 +- .../resources/mapper/ShoppingCartMapper.xml | 12 + CatApp_android_frontEnd/.idea/.name | 1 + CatApp_android_frontEnd/.idea/vcs.xml | 6 + .../java/com/example/catapp/MainActivity.java | 9 +- .../catapp/activity/IndexActivity.java | 3 + .../catapp/activity/RegisterActivity.java | 1 + .../catapp/adapter/ShoppingCartAdapter.java | 73 +++ .../example/catapp/entity/ShoppingCart.java | 10 +- .../catapp/entity/ShoppingCartPack.java | 44 ++ .../catapp/fragment/IndexFragment.java | 15 +- .../catapp/fragment/ProductFragment.java | 46 +- .../catapp/fragment/ShoppingCartFragment.java | 120 +++- .../netrequest/OkHttpClientProduct.java | 5 +- .../catapp/netrequest/OkHttpMessage.java | 4 +- .../catapp/netrequest/OkHttpShoppingcart.java | 145 +++++ .../example/catapp/netrequest/OkHttpUser.java | 4 +- .../app/src/main/res/drawable/left.png | Bin 0 -> 186 bytes .../app/src/main/res/drawable/leftrow.png | Bin 0 -> 877 bytes .../app/src/main/res/drawable/right.png | Bin 0 -> 240 bytes .../app/src/main/res/drawable/rightrow.png | Bin 0 -> 811 bytes .../res/layout/categoty_detail_content.xml | 17 +- .../src/main/res/layout/content_product.xml | 2 +- .../app/src/main/res/layout/index_famous.xml | 3 +- .../layout/shoppingcart_detail_content.xml | 68 +++ .../main/res/layout/shoppingcart_title.xml | 12 +- CatApp_android_frontEnd/package-lock.json | 6 + .../orange_front_end/package-lock.json | 536 ++++++++++++------ 32 files changed, 1065 insertions(+), 237 deletions(-) create mode 100644 CatApp_android_End/src/main/resources/mapper/ShoppingCartMapper.xml create mode 100644 CatApp_android_frontEnd/.idea/.name create mode 100644 CatApp_android_frontEnd/.idea/vcs.xml create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ShoppingCartAdapter.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCartPack.java create mode 100644 CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpShoppingcart.java create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/left.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/leftrow.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/right.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/drawable/rightrow.png create mode 100644 CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_detail_content.xml create mode 100644 CatApp_android_frontEnd/package-lock.json diff --git a/CatApp_android_End/pom.xml b/CatApp_android_End/pom.xml index e8cf69d..fcdfe8d 100644 --- a/CatApp_android_End/pom.xml +++ b/CatApp_android_End/pom.xml @@ -56,7 +56,7 @@ org.projectlombok lombok - 1.18.10 + 1.18.26 diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java index 18425e7..5a19d83 100644 --- a/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatProductController.java @@ -44,6 +44,7 @@ public class CatProductController { return map; } + /** * 查询商品详细信息 * @@ -141,7 +142,7 @@ public class CatProductController { file.transferTo(destFile); } map.put("flag", true); - map.put("data", "http://10.21.77.233:8081/uploaded/" + fileName); + map.put("data", "http://10.21.120.101:8081/uploaded/" + fileName); return map; } catch (Exception e) { map.put("flag", false); diff --git a/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java b/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java index aca3c1a..28d1d9d 100644 --- a/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java +++ b/CatApp_android_End/src/main/java/com/example/cat/controller/CatShoppingCartController.java @@ -1,15 +1,100 @@ package com.example.cat.controller; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.example.cat.entity.CatProduct; +import com.example.cat.entity.CatShoppingCart; +import com.example.cat.service.ShoppingCartService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; /** - * @Author zhijun - * @Date 2019/12/13 + * @Author longyanyi + * @Date 2023/5/9 */ @RestController -@RequestMapping("/orange/shoppingCart") +@RequestMapping("/orange/shoppingcart") @CrossOrigin public class CatShoppingCartController { + @Autowired + private ShoppingCartService shoppingCartService; + + @Value("${uploadFilePath}") + private String uploadFilePath; + + /** + * + * @param userId + * @return + */ + @RequestMapping(value = "/search1", method = RequestMethod.POST) + public Map searchProduct(@RequestBody String userId) { + + List productList = shoppingCartService.selectCatProduct(Integer.valueOf(userId)); + Map map = new HashMap<>(); + if (CollectionUtils.isEmpty(productList)) { + map.put("flag", false); + map.put("msg", "search error"); + return map; + } + map.put("flag", true); + map.put("data", productList); + return map; + } + + /** + * + * @param userId + * @return + */ + @RequestMapping(value = "/sharecropping", method = RequestMethod.POST) + public Map searchShoppingCart(@RequestBody String userId) { + List productList = shoppingCartService.selectShoppingCart(Integer.valueOf(userId)); + System.out.println(Integer.valueOf(userId)); + Map map = new HashMap<>(); + if (CollectionUtils.isEmpty(productList)) { + map.put("flag", false); + map.put("msg", "search error"); + return map; + } + map.put("flag", true); + map.put("data", productList); + System.out.println("1111"+productList.get(1).getNum()); + System.out.println("1111"+productList.get(0).getNum()); + return map; + } + /** + * 上传图片 + * + * @param file 上传文件 + * @return + */ + @RequestMapping("/uploadCover1") + public Map uploadCover(@RequestParam("file") MultipartFile file) { + Map map = new HashMap<>(); + try { + String fileName = file.getOriginalFilename(); + String changeFileName = uploadFilePath + fileName; + File destFile = new File(changeFileName); + if (!destFile.exists()) { + destFile.getParentFile().mkdirs(); + file.transferTo(destFile); + } + map.put("flag", true); + map.put("data", "http://10.21.120.101:8081/uploaded/" + fileName); + return map; + } catch (Exception e) { + map.put("flag", false); + map.put("msg", "upload error"); + return map; + } + } + } diff --git a/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java b/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java index 7e6b270..f776860 100644 --- a/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java +++ b/CatApp_android_End/src/main/java/com/example/cat/mapper/ShoppingCartMapper.java @@ -1,11 +1,32 @@ package com.example.cat.mapper; +import com.example.cat.entity.CatProduct; +import com.example.cat.entity.CatShoppingCart; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** - * @Author zhijun - * @Date 2019/12/13 + * @Author longyanyi + * @Date 2023/5/9 */ @Mapper public interface ShoppingCartMapper { + + /** + * + * @param userId + * @return + */ + List selectCatProduct(@Param("userId") Integer userId); + + /** + * + * @param userId + * @return + */ + List selectShoppingCart(@Param("userId") Integer userId); + + } diff --git a/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java b/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java index e1a7ac3..bad96d7 100644 --- a/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java +++ b/CatApp_android_End/src/main/java/com/example/cat/service/ShoppingCartService.java @@ -1,12 +1,39 @@ package com.example.cat.service; +import com.example.cat.entity.CatProduct; +import com.example.cat.entity.CatShoppingCart; +import com.example.cat.mapper.ShoppingCartMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** - * @Author zhijun - * @Date 2019/12/13 + * @Author longyanyi + * @Date 20123/5/9 */ @Service public class ShoppingCartService { - + @Autowired + private ShoppingCartMapper shoppingCartMapper; + + /** + * + * @param userId + * @return + */ + + public List selectCatProduct(Integer userId) { + return shoppingCartMapper.selectCatProduct(userId); + } + + /** + * + * @param userId + * @return + */ + public List selectShoppingCart(Integer userId) { + return shoppingCartMapper.selectShoppingCart(userId); + } + } diff --git a/CatApp_android_End/src/main/resources/mapper/ShoppingCartMapper.xml b/CatApp_android_End/src/main/resources/mapper/ShoppingCartMapper.xml new file mode 100644 index 0000000..a1209c6 --- /dev/null +++ b/CatApp_android_End/src/main/resources/mapper/ShoppingCartMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/.name b/CatApp_android_frontEnd/.idea/.name new file mode 100644 index 0000000..7644b7e --- /dev/null +++ b/CatApp_android_frontEnd/.idea/.name @@ -0,0 +1 @@ +CatApp \ No newline at end of file diff --git a/CatApp_android_frontEnd/.idea/vcs.xml b/CatApp_android_frontEnd/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/CatApp_android_frontEnd/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java index f8239ee..bce13bb 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/MainActivity.java @@ -62,13 +62,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe public void run() { String username = usernameText.getText().toString(); String password = paswdEdit.getText().toString(); - CatUser orangeUser = new CatUser(); - orangeUser.setUsername(username); - orangeUser.setPassword(password); + CatUser catUser = new CatUser(); + catUser.setUsername(username); + catUser.setPassword(password); OkHttpUser okHttpUser = new OkHttpUser(); CatUser catUser1 = null; try { - catUser1 = okHttpUser.userLogin(orangeUser); + catUser1 = okHttpUser.userLogin(catUser); if (catUser1 != null) { Intent intent1 = new Intent(MainActivity.this, IndexActivity.class); Bundle bundle = new Bundle(); @@ -76,6 +76,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe bundle.putString("password", catUser1.getPassword()); bundle.putString("city", catUser1.getCity()); bundle.putString("sex", catUser1.getSex()); + bundle.putInt("id",catUser1.getId()); intent1.putExtras(bundle); startActivity(intent1); } else { diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java index cf5fc96..e9e1176 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/IndexActivity.java @@ -98,7 +98,10 @@ public class IndexActivity extends Activity implements View.OnClickListener { //开启事务,fragment的控制是由事务来实现的 FragmentTransaction transaction = getFragmentManager().beginTransaction(); if (shoppingCartFragment == null) { + Intent intent = IndexActivity.this.getIntent(); + Bundle bundle = intent.getExtras(); shoppingCartFragment = new ShoppingCartFragment(); + shoppingCartFragment.setArguments(bundle); } transaction.replace(R.id.main_content0, shoppingCartFragment); transaction.commit(); diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java index 374d331..5f1ccaa 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/activity/RegisterActivity.java @@ -136,6 +136,7 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL bundle.putString("password", password); bundle.putString("sex", sexStr); bundle.putString("city", city); + //add User CatUser cateUser = new CatUser(); cateUser.setUsername(username); cateUser.setPassword(password); diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ShoppingCartAdapter.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ShoppingCartAdapter.java new file mode 100644 index 0000000..ca2ca2a --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/adapter/ShoppingCartAdapter.java @@ -0,0 +1,73 @@ +package com.example.catapp.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.catapp.R; +import com.example.catapp.entity.CatProductPack; +import com.example.catapp.entity.ShoppingCart; +import com.example.catapp.entity.ShoppingCartPack; + +import java.util.List; + +public class ShoppingCartAdapter extends BaseAdapter { + private List shoppingCartList; + + private List catProductList; + private LayoutInflater layoutInflater; + + public ShoppingCartAdapter(Context context, List catProductList,List shoppingCartList) { + this.catProductList = catProductList; + this.shoppingCartList=shoppingCartList; + this.layoutInflater = LayoutInflater.from(context); + } + + public int getCount() { + return catProductList.size(); + } + + public Object getItem(int position) { + return catProductList.get(position); + } + + + public long getItemId(int position) { + return position; + } + + public View getView(int position, View convertView, ViewGroup parent) { + ShoppingCartAdapter.ViewHolder viewHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.shoppingcart_detail_content, null); + viewHolder = new ShoppingCartAdapter.ViewHolder(); + viewHolder.productImage = convertView.findViewById(R.id.category_product_image); + viewHolder.productName = convertView.findViewById(R.id.category_product_name); + viewHolder.productPrice = convertView.findViewById(R.id.category_product_price); + viewHolder.num = convertView.findViewById(R.id.num); + convertView.setTag(viewHolder); + } else { + viewHolder = (ShoppingCartAdapter.ViewHolder) convertView.getTag(); + } + CatProductPack product = catProductList.get(position); + if (product != null) { + viewHolder.productImage.setImageBitmap(product.getImgBitmap()); + viewHolder.productName.setText(product.getName()); + viewHolder.productPrice.setText(String.format("%s元", String.valueOf(product.getPrice()))); + } + ShoppingCartPack shoppingCart=shoppingCartList.get(position); + if(shoppingCart!=null) + viewHolder.num.setText(""+shoppingCart.getNum()); + return convertView; + } + class ViewHolder { + ImageView productImage; + TextView productName, productPrice,num; + } + +} + diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java index 556f8d4..07587ce 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCart.java @@ -26,12 +26,12 @@ public class ShoppingCart { ProductId = productId; } - public Integer getNumber() { - return number; + public Integer getNum() { + return num; } - public void setNumber(Integer number) { - this.number = number; + public void setNum(Integer number) { + this.num = number; } private Integer id; @@ -40,5 +40,5 @@ public class ShoppingCart { /** * 购买数量 */ - private Integer number; + private Integer num; } diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCartPack.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCartPack.java new file mode 100644 index 0000000..c43c96a --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/entity/ShoppingCartPack.java @@ -0,0 +1,44 @@ +package com.example.catapp.entity; + +public class ShoppingCartPack { + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Integer getProductId() { + return ProductId; + } + + public void setProductId(Integer productId) { + ProductId = productId; + } + + public Integer getNum() { + return num; + } + + public void setNum(Integer number) { + this.num = number; + } + + private Integer id; + private Integer userId; + private Integer ProductId; + /** + * 购买数量 + */ + private Integer num; +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java index 98e4aed..12e7578 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/IndexFragment.java @@ -1,6 +1,7 @@ package com.example.catapp.fragment; import android.app.Fragment; +import android.app.FragmentTransaction; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; @@ -32,6 +33,7 @@ public class IndexFragment extends Fragment implements View.OnClickListener { private ProductAdapter productAdapter; private List productList; private List list = new ArrayList<>(); + private ProductFragment productFragment; @Nullable @Override @@ -71,7 +73,17 @@ public class IndexFragment extends Fragment implements View.OnClickListener { @Override public void onClick(View v) { - +// switch (v.getId()) { +// case R.id.index_famous_gridview: +// //开启事务,fragment的控制是由事务来实现的 +// FragmentTransaction transaction = getFragmentManager().beginTransaction(); +// if (productFragment == null) { +// productFragment = new ProductFragment(); +// } +// transaction.replace(R.id.main_content0, productFragment); +// transaction.commit(); +// break; +// } } /** @@ -143,4 +155,5 @@ public class IndexFragment extends Fragment implements View.OnClickListener { gridView.setAdapter(productAdapter); } } + } diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java index 0b9af75..f12a151 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ProductFragment.java @@ -1,27 +1,37 @@ package com.example.catapp.fragment; import android.app.Fragment; +import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.Spinner; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.example.catapp.MainActivity; import com.example.catapp.R; +import com.example.catapp.activity.IndexActivity; import com.example.catapp.adapter.ListViewAdapter; import com.example.catapp.adapter.ProductAdapter; import com.example.catapp.entity.CatProductPack; +import com.example.catapp.entity.CatUser; import com.example.catapp.entity.Condition; import com.example.catapp.netrequest.OkHttpClientProduct; +import com.example.catapp.netrequest.OkHttpUser; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.logging.LogRecord; public class ProductFragment extends Fragment { private Spinner conditonListSpinner; @@ -29,12 +39,13 @@ public class ProductFragment extends Fragment { private List conditionList; private GridView productGridView; private List catProductList = new ArrayList<>(); - + Handler h=null; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_product, container, false); init(view); + linkHttp(); return view; } @@ -49,7 +60,8 @@ public class ProductFragment extends Fragment { listViewAdapter = new ListViewAdapter(getActivity(), conditionList); conditonListSpinner.setAdapter(listViewAdapter); productGridView = view.findViewById(R.id.product_list); - new SearchProductTask().execute(); + //new SearchProductTask().execute(); + } /** @@ -75,6 +87,36 @@ public class ProductFragment extends Fragment { conditionList.add(priceCondition); } + /** + * 请求网络数据 + */ + public void linkHttp(){ + h =new Handler() { + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + ProductAdapter productAdapter = new ProductAdapter(getActivity(), catProductList); + System.out.println(catProductList.size()); + System.out.println(catProductList.size()); + productGridView.setAdapter(productAdapter); + } + + }; + new Thread(new Runnable() { + @Override + public void run() { + OkHttpClientProduct okHttpClientProduct=new OkHttpClientProduct(); + try { + catProductList=okHttpClientProduct.getProductPack(); + + } catch (IOException e) { + throw new RuntimeException(e); + } + Message message=new Message(); + h.sendMessage(message); + } + }).start(); + } /** * 发送网络请求获取数据 */ diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java index 94524eb..e62a5b0 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/fragment/ShoppingCartFragment.java @@ -3,36 +3,54 @@ package com.example.catapp.fragment; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.GridView; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.example.catapp.R; +import com.example.catapp.adapter.ProductAdapter; +import com.example.catapp.adapter.ShoppingCartAdapter; +import com.example.catapp.entity.CatProductPack; import com.example.catapp.entity.ShoppingCart; +import com.example.catapp.entity.ShoppingCartPack; +import com.example.catapp.netrequest.OkHttpClientProduct; +import com.example.catapp.netrequest.OkHttpShoppingcart; +import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ShoppingCartFragment extends Fragment implements View.OnClickListener { private Button walkButton; - private List cartList = new ArrayList<>(); + private List cartList = new ArrayList<>(); private ProductFragment productFragment; - + private GridView productGridView; + private TextView usernameText; + private Integer userId=2; + private List catProductList= new ArrayList<>(); + Handler h=null; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view; - if (cartList.size() > 0) { - //有商品 +// if (cartList.size() > 0) { +// //有商品 view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_have_product, container, false); - } else { - view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_no_product, container, false); - } +// } else { +// view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_no_product, container, false); +// } init(view); + check(); +// if (cartList.size() > 0) + linkHttp(); return view; } @@ -40,22 +58,84 @@ public class ShoppingCartFragment extends Fragment implements View.OnClickListen * 组件初始化 */ private void init(View view) { - walkButton = view.findViewById(R.id.random_search); - walkButton.setOnClickListener(this); - } + usernameText=view.findViewById(R.id.username); + productGridView = view.findViewById(R.id.cart_productList); + +// walkButton = view.findViewById(R.id.random_search); +// walkButton.setOnClickListener(this); + //productGridView = view.findViewById(R.id.cart_productList); + setData(); + } + private void setData() { + Bundle bundle = getArguments(); + usernameText.setText(String.format("用户名:%s", bundle.getString("username"))); + userId=(Integer)bundle.getInt("id"); + System.out.println(userId); + } @Override public void onClick(View v) { - switch (v.getId()) { - case R.id.random_search: - //开启事务,fragment的控制是由事务来实现的 - FragmentTransaction transaction = getFragmentManager().beginTransaction(); - if (productFragment == null) { - productFragment = new ProductFragment(); - } - transaction.replace(R.id.main_content0, productFragment); - transaction.commit(); - break; + if (cartList.size() > 0) {} + else { + switch (v.getId()) { + case R.id.random_search: + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (productFragment == null) { + productFragment = new ProductFragment(); + } + transaction.replace(R.id.main_content0, productFragment); + transaction.commit(); + break; + } } } + + /** + * + */ + public void check(){ + new Thread(new Runnable() { + @Override + public void run() { + OkHttpShoppingcart okHttpShoppingcart=new OkHttpShoppingcart(); + try { + // catProductList= okHttpShoppingcart.getProductPack(userId); + System.out.println(cartList.size() ); + cartList=okHttpShoppingcart.getShoppingCartPack(userId); + System.out.println(cartList.get(0).getNum()); + System.out.println(cartList.size()); + System.out.println(cartList.size()); + System.out.println(cartList.size()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }).start(); + } + public void linkHttp(){ + h =new Handler() { + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + ShoppingCartAdapter shoppingCartAdapter = new ShoppingCartAdapter(getActivity(), catProductList,cartList); + productGridView.setAdapter(shoppingCartAdapter); + } + + }; + new Thread(new Runnable() { + @Override + public void run() { + OkHttpShoppingcart okHttpShoppingcart=new OkHttpShoppingcart(); + try { + catProductList= okHttpShoppingcart.getProductPack(userId); + //cartList=okHttpShoppingcart.getShoppingCartPack(userId); + } catch (IOException e) { + throw new RuntimeException(e); + } + Message message=new Message(); + h.sendMessage(message); + } + }).start(); + } } diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java index a36d64d..c9b8a4e 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpClientProduct.java @@ -27,10 +27,12 @@ public class OkHttpClientProduct { */ public List getProduct() throws IOException { OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() - .url("http://10.21.77.233:8081/orange/product/search") + .url("http://10.21.120.101:8081/orange/product/search") .build(); Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { }); @@ -70,6 +72,7 @@ public class OkHttpClientProduct { for (CatProduct catProduct : list) { CatProductPack catProductPack = new CatProductPack(); catProductPack.setId(catProduct.getId()); + catProductPack.setName(catProduct.getName()); catProductPack.setImgBitmap(getImageBitMap(catProduct.getImgUrl())); catProductPack.setAddTime(catProduct.getAddTime()); catProductPack.setPrice(catProduct.getPrice()); diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java index a27845d..d63d255 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpMessage.java @@ -22,7 +22,7 @@ public class OkHttpMessage { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder() //.url("http://192.168.0.102:8081/orange/message/consumeMessage") - .url("http://10.21.77.233:8081/orange/message/consumeMessage") + .url("http://10.21.120.101:8081/orange/message/consumeMessage") .build(); Response response = okHttpClient.newCall(request).execute(); JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); @@ -31,7 +31,7 @@ public class OkHttpMessage { * 消费完消息以后,设置消息为已读 */ Request request1 = new Request.Builder() - .url("http://10.21.77.233:8081/orange/message/updateMessage") + .url("http://10.21.120.101:8081/orange/message/updateMessage") .build(); okHttpClient.newCall(request1).execute(); return orangeMessage; diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpShoppingcart.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpShoppingcart.java new file mode 100644 index 0000000..9fd841c --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpShoppingcart.java @@ -0,0 +1,145 @@ +package com.example.catapp.netrequest; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.example.catapp.entity.CatProduct; +import com.example.catapp.entity.CatProductPack; +import com.example.catapp.entity.ShoppingCart; +import com.example.catapp.entity.ShoppingCartPack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class OkHttpShoppingcart { +//shoppingCart + /** + * 查询商品信息 + * + * @return + */ + + public List getProduct(Integer userId) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(userId); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + + Request request = new Request.Builder() + .url("http://10.21.120.101:8081/orange/shoppingcart/search1") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + System.out.println(response.isSuccessful()); + System.out.println(response.isSuccessful()); + System.out.println(response.isSuccessful()); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { + }); + return list; + } + + public List getShoppingCart(Integer userId) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(userId); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://10.21.120.101:8081/orange/shoppingcart/sharecropping") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + System.out.println(response.isSuccessful()); + System.out.println(response.isSuccessful()); + String responseStr = response.body().string(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(responseStr)); + List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { + }); + System.out.println(list.get(0).getNum()); + System.out.println(list.get(0).getNum()); + System.out.println(list.get(0).getNum()); + System.out.println(list.get(0).getNum()); + System.out.println(list.get(0).getNum()); + + return list; + } + + /** + * 获取图片 + * + * @param imgUrl + * @return + * @throws IOException + */ + public Bitmap getImageBitMap(String imgUrl) throws IOException { + Bitmap bitmap; + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url(imgUrl) + .build(); + Response response = okHttpClient.newCall(request).execute(); + byte[] bytes = Objects.requireNonNull(response.body()).bytes(); + bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + return bitmap; + + } + + /** + * 封装信息 + * + * @return + * @throws IOException + */ + + public List getProductPack(Integer userId) throws IOException { + List packList = new ArrayList<>(); + List list = getProduct(userId); + + for (CatProduct catProduct : list) { + CatProductPack catProductPack = new CatProductPack(); + catProductPack.setId(catProduct.getId()); + catProductPack.setName(catProduct.getName()); + catProductPack.setImgBitmap(getImageBitMap(catProduct.getImgUrl())); + catProductPack.setAddTime(catProduct.getAddTime()); + catProductPack.setPrice(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + System.out.println(catProduct.getPrice()); + packList.add(catProductPack); + } + return packList; + } + + public List getShoppingCartPack(Integer userId) throws IOException { + List packList = new ArrayList<>(); + List list = getShoppingCart(userId); + for (ShoppingCart catProduct : list) { + ShoppingCartPack catProductPack = new ShoppingCartPack(); + catProductPack.setId(catProduct.getId()); + catProductPack.setUserId(catProduct.getUserId()); + catProductPack.setProductId(catProduct.getProductId()); + catProductPack.setNum(catProduct.getNum()); + packList.add(catProductPack); + } + return packList; + } +} diff --git a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java index e416e65..4c1938e 100644 --- a/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java +++ b/CatApp_android_frontEnd/app/src/main/java/com/example/catapp/netrequest/OkHttpUser.java @@ -29,7 +29,7 @@ public class OkHttpUser { RequestBody requestBody = RequestBody.create(jsonStr, mediaType); Request request = new Request.Builder() - .url("http://10.21.77.233:8081/orange/user/login") + .url("http://10.21.120.101:8081/orange/user/login") .post(requestBody) .build(); @@ -58,7 +58,7 @@ public class OkHttpUser { String jsonStr = JSONObject.toJSONString(catUser); RequestBody requestBody = RequestBody.create(jsonStr, mediaType); Request request = new Request.Builder() - .url("http://10.21.77.233:8081/orange/user/register") + .url("http://10.21.120.101:8081/orange/user/register") .post(requestBody) .build(); Response response = okHttpClient.newCall(request).execute(); diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/left.png b/CatApp_android_frontEnd/app/src/main/res/drawable/left.png new file mode 100644 index 0000000000000000000000000000000000000000..0524c647bace8c5c55ffe5a857b8c6e69a353f54 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}C7v#hArbCx zr#bR97;vy`x4%67_4zlQF1#1FI9XWK9x(Ee&ItaPdGsr5LwdsGEh@2R^)hYKs~Oyb z3cL4SsbT7PXVuKu)rUMfDN{`6+6 i^5Vt&?;ZZYP;zpOf#PhztBOGT89ZJ6T-G@yGywoSMnRwe literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/leftrow.png b/CatApp_android_frontEnd/app/src/main/res/drawable/leftrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2f44e0e53e1b4189d07431f8b4a290c99bc6bf1b GIT binary patch literal 877 zcmV-z1CsoSP)Px&CrLy>R9HvNS4(IVK@fd4W@kW95EMbPv+-bd1_FK#eh5Y{-U32E1&?0*CZdEu zFeI8N1VRK^|DabBJ&534h(^?l3X;smgV`R<#hh}RS)7uY&4y%mdp?^z*f6K5diA=x zs`@n{!J2DH?e#pR1I&9slm*~_{>pjB0wIZZLNONJrT( z|F=Q(Mgiwq3+`-~PbdK^quv6e8^Gq6fh*0HK*$*dcR=PZC1B~=6u?L73|!$x?+oE| z)WWJsz|yrp0B>zf@G=T58p7FDiCIO!($${;T9O23VAvGykfp090lWzDoi~KLYxVy% z1T0YWsnE9S*7ya2#bN$Gq_Wxy?0I)j(Z^01mPRci@4zNO>;sggU zW(c=WW;>f{It)*lAc7tTk32p|`LuSGiSI-@Fh&g99h3%dZaNBuCJD4X5^LFjn68nP zR-b}!Hq42c@0)hNfF}vq zm?(H)Ow&FA>DVREldN#g$msrGGOF)7j>trk>)7APvI0&d zNSLYDw4L#)*375_U`PuVm4c)UP>&KOpg$|z(K1Fpqh0c^YvtOz))7W z!!v31v_kN;fMiuGV~H$Ju8d=}ag`ztIyvca)D^u$0N08Fa;I>-Na{_$_d(+up#m_NnA~5*}E5cdosTz+*00000NkvXXu0mjf DOizh@ literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/right.png b/CatApp_android_frontEnd/app/src/main/res/drawable/right.png new file mode 100644 index 0000000000000000000000000000000000000000..03bbd9259cceb6f129dbdce1abaabd7444c04702 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}t2|vCLn7SY zPP@z1pup4m^{i0M8^^tojwYR_{9cx*mRaAitop-3Bb$!Oi?j38P+~~#Ij1-p=sid8?h5s$oHk*Z_8pUYCZh( my1tTO>Vy^cr>z-FnYdj!jwybaYjPUsY6eeNKbLh*2~7aS)?63> literal 0 HcmV?d00001 diff --git a/CatApp_android_frontEnd/app/src/main/res/drawable/rightrow.png b/CatApp_android_frontEnd/app/src/main/res/drawable/rightrow.png new file mode 100644 index 0000000000000000000000000000000000000000..610d3596a6b624351646cd47975c28d117039826 GIT binary patch literal 811 zcmV+`1JwM9P)Px%5 zMNuJ!s428JsRaK3i3Ze0g~08mF}J5_OqK5TV4v(=Hr#D)cV_bg95^_b_rC9&nYVAg zA!HZ}ZMnliV0DA}5QsVeguigOV0J^fDMJYxI7|tkiQF;Ep#+)Vrjug`X z&Ln{{_)@1=or>m*1u;g9I~hgHD9`U%+n4CiYQf!21Y-=UvOgA|ccgd>;ASQfgt4eF zYdcW;)EHk9tDX6yDpyY?krWHLXT)?ZgNPN2a6J4(YXY2t{SwTVH2^)z^Jfx8$lN%A z28=}zy;7x0Z(V>Ce*o+@NKO^uNUU#Lza~1?;&?@?kHRI)i5ax)9i#jMc@l2 zcogt4a`X08CVp;`&=8X^Sa;`^XWTbQkaal< zpgj&(iiZr`PR6FWP{3x}uBIl$eFE;a7D3C~F2I#yo`C~t0=Df4bgdl-k6@dMP)`nE zwFn0Q9?w{W=?$qMhQN5B$D}J%_j&YPAG{W!A-8XU`H2ahW$}@y6?=w$PuB(e3H-u@ z96(ulzTC>o=pun$8Fp`mcoik3b z - + + android:layout_gravity="center" + android:layout_marginTop="5dp" /> @@ -24,9 +27,11 @@ android:id="@+id/category_product_price" android:layout_width="wrap_content" android:layout_height="30dp" + android:layout_toRightOf="@+id/category_product_name" android:layout_gravity="center" - android:layout_marginTop="2dp" + android:layout_marginLeft="100dp" + android:layout_marginTop="25dp" android:gravity="center" android:textColor="#050505" android:textSize="16sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/content_product.xml b/CatApp_android_frontEnd/app/src/main/res/layout/content_product.xml index f1d4ba8..e93dc0d 100644 --- a/CatApp_android_frontEnd/app/src/main/res/layout/content_product.xml +++ b/CatApp_android_frontEnd/app/src/main/res/layout/content_product.xml @@ -23,6 +23,6 @@ android:verticalSpacing="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" - android:numColumns="2"/> + android:numColumns="1"/> \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/index_famous.xml b/CatApp_android_frontEnd/app/src/main/res/layout/index_famous.xml index 44eda4c..095ed67 100644 --- a/CatApp_android_frontEnd/app/src/main/res/layout/index_famous.xml +++ b/CatApp_android_frontEnd/app/src/main/res/layout/index_famous.xml @@ -16,6 +16,7 @@ android:orientation="horizontal"> + android:numColumns="1" /> diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_detail_content.xml b/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_detail_content.xml new file mode 100644 index 0000000..8b29034 --- /dev/null +++ b/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_detail_content.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_title.xml b/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_title.xml index 508d207..4750c80 100644 --- a/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_title.xml +++ b/CatApp_android_frontEnd/app/src/main/res/layout/shoppingcart_title.xml @@ -17,7 +17,17 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/arrow_left" /> - + =4" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, "node_modules/eslint/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -6136,12 +6124,6 @@ "node": ">=4" } }, - "node_modules/eslint/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, "node_modules/eslint/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -6164,12 +6146,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "node_modules/eslint/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6552,9 +6528,9 @@ ] }, "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", "dev": true }, "node_modules/fast-json-stable-stringify": { @@ -6646,6 +6622,22 @@ "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/file-loader/node_modules/ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -6655,6 +6647,18 @@ "ajv": "^6.9.1" } }, + "node_modules/file-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/file-loader/node_modules/schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -7970,6 +7974,34 @@ "node": ">=6" } }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -10207,9 +10239,9 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", "dev": true }, "node_modules/json-stable-stringify": { @@ -13355,6 +13387,22 @@ "node": ">= 4" } }, + "node_modules/postcss-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/postcss-loader/node_modules/ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -13364,6 +13412,18 @@ "ajv": "^6.9.1" } }, + "node_modules/postcss-loader/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/postcss-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/postcss-loader/node_modules/schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -16937,30 +16997,6 @@ "node": ">= 4.3 < 5.0.0 || >= 5.10" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "node_modules/schema-utils/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -18100,30 +18136,6 @@ "string-width": "^2.1.1" } }, - "node_modules/table/node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "node_modules/table/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "node_modules/tapable": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", @@ -18541,6 +18553,22 @@ "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, + "node_modules/uglifyjs-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/uglifyjs-webpack-plugin/node_modules/ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -18556,6 +18584,18 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "node_modules/uglifyjs-webpack-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/uglifyjs-webpack-plugin/node_modules/schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -18720,9 +18760,9 @@ "dev": true }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { "punycode": "^2.1.0" @@ -19409,6 +19449,22 @@ "source-map": "~0.6.1" } }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -19438,6 +19494,12 @@ "wordwrap": "0.0.2" } }, + "node_modules/webpack/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "node_modules/webpack/node_modules/has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -19459,6 +19521,12 @@ "node": ">=0.10.0" } }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/webpack/node_modules/load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -20245,15 +20313,15 @@ } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -24882,18 +24950,6 @@ "text-table": "~0.2.0" }, "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -24915,12 +24971,6 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -24937,12 +24987,6 @@ "esprima": "^4.0.0" } }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -25480,9 +25524,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", "dev": true }, "fast-json-stable-stringify": { @@ -25559,6 +25603,18 @@ "schema-utils": "^0.4.5" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -25566,6 +25622,18 @@ "dev": true, "requires": {} }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -25861,24 +25929,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "bundled": true, "dev": true, "optional": true }, "aproba": { "version": "1.2.0", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "bundled": true, "dev": true, "optional": true, @@ -25889,12 +25961,14 @@ }, "balanced-match": { "version": "1.0.0", + "integrity": "sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==", "bundled": true, "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "bundled": true, "dev": true, "optional": true, @@ -25905,36 +25979,42 @@ }, "chownr": { "version": "1.1.1", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "bundled": true, "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "bundled": true, "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "bundled": true, "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "bundled": true, "dev": true, "optional": true }, "debug": { "version": "4.1.1", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "bundled": true, "dev": true, "optional": true, @@ -25944,24 +26024,28 @@ }, "deep-extend": { "version": "0.6.0", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "bundled": true, "dev": true, "optional": true, @@ -25971,12 +26055,14 @@ }, "fs.realpath": { "version": "1.0.0", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "bundled": true, "dev": true, "optional": true, @@ -25993,6 +26079,7 @@ }, "glob": { "version": "7.1.3", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "bundled": true, "dev": true, "optional": true, @@ -26007,12 +26094,14 @@ }, "has-unicode": { "version": "2.0.1", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "bundled": true, "dev": true, "optional": true, @@ -26022,6 +26111,7 @@ }, "ignore-walk": { "version": "3.0.1", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "bundled": true, "dev": true, "optional": true, @@ -26031,6 +26121,7 @@ }, "inflight": { "version": "1.0.6", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "bundled": true, "dev": true, "optional": true, @@ -26041,18 +26132,21 @@ }, "inherits": { "version": "2.0.3", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "bundled": true, "dev": true, "optional": true }, "ini": { "version": "1.3.5", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "bundled": true, "dev": true, "optional": true, @@ -26062,12 +26156,14 @@ }, "isarray": { "version": "1.0.0", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "bundled": true, "dev": true, "optional": true, @@ -26077,12 +26173,14 @@ }, "minimist": { "version": "0.0.8", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", "bundled": true, "dev": true, "optional": true }, "minipass": { "version": "2.3.5", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "bundled": true, "dev": true, "optional": true, @@ -26093,6 +26191,7 @@ }, "minizlib": { "version": "1.2.1", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "bundled": true, "dev": true, "optional": true, @@ -26102,6 +26201,7 @@ }, "mkdirp": { "version": "0.5.1", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", "bundled": true, "dev": true, "optional": true, @@ -26111,12 +26211,14 @@ }, "ms": { "version": "2.1.1", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.3.0", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "bundled": true, "dev": true, "optional": true, @@ -26128,6 +26230,7 @@ }, "node-pre-gyp": { "version": "0.12.0", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "bundled": true, "dev": true, "optional": true, @@ -26146,6 +26249,7 @@ }, "nopt": { "version": "4.0.1", + "integrity": "sha512-+5XZFpQZEY0cg5JaxLwGxDlKNKYxuXwGt8/Oi3UXm5/4ymrJve9d2CURituxv3rSrVCGZj4m1U1JlHTdcKt2Ng==", "bundled": true, "dev": true, "optional": true, @@ -26156,12 +26260,14 @@ }, "npm-bundled": { "version": "1.0.6", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "bundled": true, "dev": true, "optional": true, @@ -26172,6 +26278,7 @@ }, "npmlog": { "version": "4.1.2", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "bundled": true, "dev": true, "optional": true, @@ -26184,18 +26291,21 @@ }, "number-is-nan": { "version": "1.0.1", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "bundled": true, "dev": true, "optional": true, @@ -26205,18 +26315,21 @@ }, "os-homedir": { "version": "1.0.2", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "bundled": true, "dev": true, "optional": true, @@ -26227,18 +26340,21 @@ }, "path-is-absolute": { "version": "1.0.1", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.8", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "bundled": true, "dev": true, "optional": true, @@ -26251,6 +26367,7 @@ "dependencies": { "minimist": { "version": "1.2.0", + "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==", "bundled": true, "dev": true, "optional": true @@ -26259,6 +26376,7 @@ }, "readable-stream": { "version": "2.3.6", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "bundled": true, "dev": true, "optional": true, @@ -26274,6 +26392,7 @@ }, "rimraf": { "version": "2.6.3", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "bundled": true, "dev": true, "optional": true, @@ -26283,42 +26402,49 @@ }, "safe-buffer": { "version": "5.1.2", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "bundled": true, "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.7.0", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", + "integrity": "sha512-meQNNykwecVxdu1RlYMKpQx4+wefIYpmxi6gexo/KAbwquJrBUrBmKYJrE8KFkVQAAVWEnwNdu21PgrD77J3xA==", "bundled": true, "dev": true, "optional": true }, "string_decoder": { "version": "1.1.1", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "bundled": true, "dev": true, "optional": true, @@ -26328,6 +26454,7 @@ }, "string-width": { "version": "1.0.2", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "bundled": true, "dev": true, "optional": true, @@ -26339,6 +26466,7 @@ }, "strip-ansi": { "version": "3.0.1", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "bundled": true, "dev": true, "optional": true, @@ -26348,12 +26476,14 @@ }, "strip-json-comments": { "version": "2.0.1", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.8", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "bundled": true, "dev": true, "optional": true, @@ -26369,12 +26499,14 @@ }, "util-deprecate": { "version": "1.0.2", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "bundled": true, "dev": true, "optional": true, @@ -26384,12 +26516,14 @@ }, "wrappy": { "version": "1.0.2", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "bundled": true, "dev": true, "optional": true }, "yallist": { "version": "3.0.3", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "bundled": true, "dev": true, "optional": true @@ -26617,6 +26751,32 @@ "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } } }, "has": { @@ -28514,9 +28674,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", "dev": true }, "json-stable-stringify": { @@ -31145,6 +31305,18 @@ "schema-utils": "^0.4.0" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -31152,6 +31324,18 @@ "dev": true, "requires": {} }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -34060,32 +34244,6 @@ "dev": true, "requires": { "ajv": "^5.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } } }, "select-hose": { @@ -35037,32 +35195,6 @@ "lodash": "^4.17.4", "slice-ansi": "1.0.0", "string-width": "^2.1.1" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } } }, "tapable": { @@ -35422,6 +35554,18 @@ "worker-farm": "^1.5.2" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -35435,6 +35579,18 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "schema-utils": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", @@ -35570,9 +35726,9 @@ "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -35973,6 +36129,18 @@ "yargs": "^8.0.2" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", @@ -35997,6 +36165,12 @@ "wordwrap": "0.0.2" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -36012,6 +36186,12 @@ "number-is-nan": "^1.0.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",