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",