diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..f3dbc7f
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+node_modules/
+coverage/
+*.snap.ts
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..9713dfd
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,7 @@
+{
+ "extends": "vtex",
+ "root": true,
+ "env": {
+ "node": true
+ }
+}
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..320bc0c
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1 @@
+"@vtex/prettier-config"
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 427819a..a54d382 100644
--- a/manifest.json
+++ b/manifest.json
@@ -28,7 +28,7 @@
"vtex.list-context": "0.x",
"vtex.product-list-context": "0.x",
"vtex.flex-layout": "0.x",
- "vtex.pixel-manager": "1.x"
+ "vtex.pixel-manager": "1.x",
"vtex.apps-graphql": "2.x"
},
"settingsSchema": {
diff --git a/messages/context.json b/messages/context.json
index 8e84516..398384a 100644
--- a/messages/context.json
+++ b/messages/context.json
@@ -1,51 +1,51 @@
-{
- "admin/editor.product-summary-row.title":"Comparison row",
- "admin/editor.product-summary-row.description":"",
- "editor.countdown.title": "Countdown",
- "editor.countdown.description": "Countdown component",
- "admin/editor.comparison-grid.title": "Comparison Grid",
- "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
- "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
- "admin/editor.comparison-grid-row.description": "Row meta data for grid",
- "admin/editor.comparison-grid-row.field.title": "Field",
- "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
- "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
- "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
- "admin/editor.comparison-grid-row.field.name.title": "Field Name",
- "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
- "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
- "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
- "admin/editor.comparison-grid-row.styles.title": "Cell styles",
- "admin/editor.comparison-grid-row.styles.width.title": "Width",
- "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
- "admin/editor.comparison-grid.titleText.title": "Title",
- "store/product-comparison.product-selector.product": "Product:",
- "store/product-comparison.product-selector.product-added": "added to compare",
- "store/product-comparison.product-selector.product-removed": "removed from compare",
- "store/product-comparison.product-selector.compare": "Compare",
- "store/product-comparison.drawer.products": "Products",
- "store/product-comparison.drawer.compare": "Compare",
- "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
- "store/product-comparison.drawer.remove-all": "Remove All",
- "store/product-comparison.drawer.hide": "hide",
- "store/product-comparison.drawer.show": "show",
- "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
- "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
- "store/product-comparison.drawer.max-items-message-2": "products at a time",
- "store/product-comparison.main-page.back-to-products": "Back to products list",
- "store/product-comparison.main-page.sort-by": "Sort by",
- "store/product-comparison.main-page.order-added": "Order added",
- "store/product-comparison.main-page.title": "Compare {productsLength} products",
- "store/product-comparison.product-summary-row.show-differences": "Show only differences",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
- "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
-}
+{
+ "admin/editor.product-summary-row.title": "Comparison row",
+ "admin/editor.product-summary-row.description": "",
+ "editor.countdown.title": "Countdown",
+ "editor.countdown.description": "Countdown component",
+ "admin/editor.comparison-grid.title": "Comparison Grid",
+ "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
+ "admin/editor.comparison-grid-row.description": "Row meta data for grid",
+ "admin/editor.comparison-grid-row.field.title": "Field",
+ "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
+ "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
+ "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
+ "admin/editor.comparison-grid-row.field.name.title": "Field Name",
+ "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
+ "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
+ "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
+ "admin/editor.comparison-grid-row.styles.title": "Cell styles",
+ "admin/editor.comparison-grid-row.styles.width.title": "Width",
+ "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
+ "admin/editor.comparison-grid.titleText.title": "Title",
+ "store/product-comparison.product-selector.product": "Product:",
+ "store/product-comparison.product-selector.product-added": "added to compare",
+ "store/product-comparison.product-selector.product-removed": "removed from compare",
+ "store/product-comparison.product-selector.compare": "Compare",
+ "store/product-comparison.drawer.products": "Products",
+ "store/product-comparison.drawer.compare": "Compare",
+ "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
+ "store/product-comparison.drawer.remove-all": "Remove All",
+ "store/product-comparison.drawer.hide": "hide",
+ "store/product-comparison.drawer.show": "show",
+ "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
+ "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
+ "store/product-comparison.drawer.max-items-message-2": "products at a time",
+ "store/product-comparison.main-page.back-to-products": "Back to products list",
+ "store/product-comparison.main-page.sort-by": "Sort by",
+ "store/product-comparison.main-page.order-added": "Order added",
+ "store/product-comparison.main-page.title": "Compare {productsLength} products",
+ "store/product-comparison.product-summary-row.show-differences": "Show only differences",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
+ "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
+}
diff --git a/messages/en.json b/messages/en.json
index 7d9034a..dc4fb03 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -1,49 +1,49 @@
-{
- "editor.countdown.title": "Countdown",
- "editor.countdown.description": "Countdown component",
- "admin/editor.comparison-grid.title": "Comparison Grid",
- "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
- "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
- "admin/editor.comparison-grid-row.description": "Row meta data for grid",
- "admin/editor.comparison-grid-row.field.title": "Field",
- "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
- "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
- "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
- "admin/editor.comparison-grid-row.field.name.title": "Field Name",
- "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
- "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
- "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
- "admin/editor.comparison-grid-row.styles.title": "Cell styles",
- "admin/editor.comparison-grid-row.styles.width.title": "Width",
- "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
- "admin/editor.comparison-grid.titleText.title": "Title",
- "store/product-comparison.product-selector.product": "Product:",
- "store/product-comparison.product-selector.product-added": "added to compare",
- "store/product-comparison.product-selector.product-removed": "removed from compare",
- "store/product-comparison.product-selector.compare": "Compare",
- "store/product-comparison.drawer.products": "Products",
- "store/product-comparison.drawer.compare": "Compare",
- "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
- "store/product-comparison.drawer.remove-all": "Remove All",
- "store/product-comparison.drawer.hide": "hide",
- "store/product-comparison.drawer.show": "show",
- "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
- "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
- "store/product-comparison.drawer.max-items-message-2": "products at a time",
- "store/product-comparison.main-page.back-to-products": "Back to products list",
- "store/product-comparison.main-page.sort-by": "Sort by",
- "store/product-comparison.main-page.order-added": "Order added",
- "store/product-comparison.main-page.title": "Compare {productsLength} products",
- "store/product-comparison.product-summary-row.show-differences": "Show only differences",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
- "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
-}
+{
+ "editor.countdown.title": "Countdown",
+ "editor.countdown.description": "Countdown component",
+ "admin/editor.comparison-grid.title": "Comparison Grid",
+ "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
+ "admin/editor.comparison-grid-row.description": "Row meta data for grid",
+ "admin/editor.comparison-grid-row.field.title": "Field",
+ "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
+ "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
+ "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
+ "admin/editor.comparison-grid-row.field.name.title": "Field Name",
+ "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
+ "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
+ "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
+ "admin/editor.comparison-grid-row.styles.title": "Cell styles",
+ "admin/editor.comparison-grid-row.styles.width.title": "Width",
+ "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
+ "admin/editor.comparison-grid.titleText.title": "Title",
+ "store/product-comparison.product-selector.product": "Product:",
+ "store/product-comparison.product-selector.product-added": "added to compare",
+ "store/product-comparison.product-selector.product-removed": "removed from compare",
+ "store/product-comparison.product-selector.compare": "Compare",
+ "store/product-comparison.drawer.products": "Products",
+ "store/product-comparison.drawer.compare": "Compare",
+ "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
+ "store/product-comparison.drawer.remove-all": "Remove All",
+ "store/product-comparison.drawer.hide": "hide",
+ "store/product-comparison.drawer.show": "show",
+ "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
+ "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
+ "store/product-comparison.drawer.max-items-message-2": "products at a time",
+ "store/product-comparison.main-page.back-to-products": "Back to products list",
+ "store/product-comparison.main-page.sort-by": "Sort by",
+ "store/product-comparison.main-page.order-added": "Order added",
+ "store/product-comparison.main-page.title": "Compare {productsLength} products",
+ "store/product-comparison.product-summary-row.show-differences": "Show only differences",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
+ "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
+}
diff --git a/messages/es.json b/messages/es.json
index 7d9034a..dc4fb03 100644
--- a/messages/es.json
+++ b/messages/es.json
@@ -1,49 +1,49 @@
-{
- "editor.countdown.title": "Countdown",
- "editor.countdown.description": "Countdown component",
- "admin/editor.comparison-grid.title": "Comparison Grid",
- "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
- "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
- "admin/editor.comparison-grid-row.description": "Row meta data for grid",
- "admin/editor.comparison-grid-row.field.title": "Field",
- "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
- "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
- "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
- "admin/editor.comparison-grid-row.field.name.title": "Field Name",
- "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
- "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
- "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
- "admin/editor.comparison-grid-row.styles.title": "Cell styles",
- "admin/editor.comparison-grid-row.styles.width.title": "Width",
- "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
- "admin/editor.comparison-grid.titleText.title": "Title",
- "store/product-comparison.product-selector.product": "Product:",
- "store/product-comparison.product-selector.product-added": "added to compare",
- "store/product-comparison.product-selector.product-removed": "removed from compare",
- "store/product-comparison.product-selector.compare": "Compare",
- "store/product-comparison.drawer.products": "Products",
- "store/product-comparison.drawer.compare": "Compare",
- "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
- "store/product-comparison.drawer.remove-all": "Remove All",
- "store/product-comparison.drawer.hide": "hide",
- "store/product-comparison.drawer.show": "show",
- "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
- "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
- "store/product-comparison.drawer.max-items-message-2": "products at a time",
- "store/product-comparison.main-page.back-to-products": "Back to products list",
- "store/product-comparison.main-page.sort-by": "Sort by",
- "store/product-comparison.main-page.order-added": "Order added",
- "store/product-comparison.main-page.title": "Compare {productsLength} products",
- "store/product-comparison.product-summary-row.show-differences": "Show only differences",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
- "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
-}
+{
+ "editor.countdown.title": "Countdown",
+ "editor.countdown.description": "Countdown component",
+ "admin/editor.comparison-grid.title": "Comparison Grid",
+ "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
+ "admin/editor.comparison-grid-row.description": "Row meta data for grid",
+ "admin/editor.comparison-grid-row.field.title": "Field",
+ "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
+ "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
+ "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
+ "admin/editor.comparison-grid-row.field.name.title": "Field Name",
+ "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
+ "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
+ "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
+ "admin/editor.comparison-grid-row.styles.title": "Cell styles",
+ "admin/editor.comparison-grid-row.styles.width.title": "Width",
+ "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
+ "admin/editor.comparison-grid.titleText.title": "Title",
+ "store/product-comparison.product-selector.product": "Product:",
+ "store/product-comparison.product-selector.product-added": "added to compare",
+ "store/product-comparison.product-selector.product-removed": "removed from compare",
+ "store/product-comparison.product-selector.compare": "Compare",
+ "store/product-comparison.drawer.products": "Products",
+ "store/product-comparison.drawer.compare": "Compare",
+ "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
+ "store/product-comparison.drawer.remove-all": "Remove All",
+ "store/product-comparison.drawer.hide": "hide",
+ "store/product-comparison.drawer.show": "show",
+ "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
+ "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
+ "store/product-comparison.drawer.max-items-message-2": "products at a time",
+ "store/product-comparison.main-page.back-to-products": "Back to products list",
+ "store/product-comparison.main-page.sort-by": "Sort by",
+ "store/product-comparison.main-page.order-added": "Order added",
+ "store/product-comparison.main-page.title": "Compare {productsLength} products",
+ "store/product-comparison.product-summary-row.show-differences": "Show only differences",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
+ "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
+}
diff --git a/messages/pt.json b/messages/pt.json
index 7d9034a..dc4fb03 100644
--- a/messages/pt.json
+++ b/messages/pt.json
@@ -1,49 +1,49 @@
-{
- "editor.countdown.title": "Countdown",
- "editor.countdown.description": "Countdown component",
- "admin/editor.comparison-grid.title": "Comparison Grid",
- "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
- "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
- "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
- "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
- "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
- "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
- "admin/editor.comparison-grid-row.description": "Row meta data for grid",
- "admin/editor.comparison-grid-row.field.title": "Field",
- "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
- "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
- "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
- "admin/editor.comparison-grid-row.field.name.title": "Field Name",
- "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
- "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
- "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
- "admin/editor.comparison-grid-row.styles.title": "Cell styles",
- "admin/editor.comparison-grid-row.styles.width.title": "Width",
- "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
- "admin/editor.comparison-grid.titleText.title": "Title",
- "store/product-comparison.product-selector.product": "Product:",
- "store/product-comparison.product-selector.product-added": "added to compare",
- "store/product-comparison.product-selector.product-removed": "removed from compare",
- "store/product-comparison.product-selector.compare": "Compare",
- "store/product-comparison.drawer.products": "Products",
- "store/product-comparison.drawer.compare": "Compare",
- "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
- "store/product-comparison.drawer.remove-all": "Remove All",
- "store/product-comparison.drawer.hide": "hide",
- "store/product-comparison.drawer.show": "show",
- "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
- "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
- "store/product-comparison.drawer.max-items-message-2": "products at a time",
- "store/product-comparison.main-page.back-to-products": "Back to products list",
- "store/product-comparison.main-page.sort-by": "Sort by",
- "store/product-comparison.main-page.order-added": "Order added",
- "store/product-comparison.main-page.title": "Compare {productsLength} products",
- "store/product-comparison.product-summary-row.show-differences": "Show only differences",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
- "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
- "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
-}
+{
+ "editor.countdown.title": "Countdown",
+ "editor.countdown.description": "Countdown component",
+ "admin/editor.comparison-grid.title": "Comparison Grid",
+ "admin/editor.comparison-grid.description": "Product Comparison Grid Row Collect information",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.title": "Hide Product Specifications",
+ "admin/editor.comparison-grid.product-specifications-to-be-removed.description": "Names of product specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.title": "Hide SKU Specifications",
+ "admin/editor.comparison-grid.sku-specifications-to-be-removed.description": "Names of sku specifications which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.title": "Hide product fields",
+ "admin/editor.comparison-grid.product-fields-to-be-removed.description": "Product fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.title": "Hide sku fields",
+ "admin/editor.comparison-grid.sku-fields-to-be-removed.description": "Sku fields which needs to be hidden in comparison page (separate them by comma `,`)",
+ "admin/editor.comparison-grid-row.title": "Comparison Grid Row",
+ "admin/editor.comparison-grid-row.description": "Row meta data for grid",
+ "admin/editor.comparison-grid-row.field.title": "Field",
+ "admin/editor.comparison-grid-row.field.description": "This is the field we need to add to comparison detail page",
+ "admin/editor.comparison-grid-row.field.fieldType.title": "Field type",
+ "admin/editor.comparison-grid-row.field.fieldType.description": "Field type of the row",
+ "admin/editor.comparison-grid-row.field.name.title": "Field Name",
+ "admin/editor.comparison-grid-row.field.name.description": "Comparison field name (name of the product field, name of product specification or sku specification)",
+ "admin/editor.comparison-grid-row.field.display-value.title": "Display Name",
+ "admin/editor.comparison-grid-row.field.display-value.description": "Display name of the field in comparison page",
+ "admin/editor.comparison-grid-row.styles.title": "Cell styles",
+ "admin/editor.comparison-grid-row.styles.width.title": "Width",
+ "admin/editor.comparison-grid-row.styles.width.description": "Width of the cell as a percentage",
+ "admin/editor.comparison-grid.titleText.title": "Title",
+ "store/product-comparison.product-selector.product": "Product:",
+ "store/product-comparison.product-selector.product-added": "added to compare",
+ "store/product-comparison.product-selector.product-removed": "removed from compare",
+ "store/product-comparison.product-selector.compare": "Compare",
+ "store/product-comparison.drawer.products": "Products",
+ "store/product-comparison.drawer.compare": "Compare",
+ "store/product-comparison.drawer.remove-all-message": "All products removed from comparison",
+ "store/product-comparison.drawer.remove-all": "Remove All",
+ "store/product-comparison.drawer.hide": "hide",
+ "store/product-comparison.drawer.show": "show",
+ "store/product-comparison.drawer.min-items-message": "You need to add at least two products to compare",
+ "store/product-comparison.drawer.max-items-message-1": "You can compare up to",
+ "store/product-comparison.drawer.max-items-message-2": "products at a time",
+ "store/product-comparison.main-page.back-to-products": "Back to products list",
+ "store/product-comparison.main-page.sort-by": "Sort by",
+ "store/product-comparison.main-page.order-added": "Order added",
+ "store/product-comparison.main-page.title": "Compare {productsLength} products",
+ "store/product-comparison.product-summary-row.show-differences": "Show only differences",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.title": "Hide Product Specification Group",
+ "admin/editor.comparison-grid.product-specification-groups-to-be-removed.description": "Names of product specification groups which needs to be hidden in comparison page (separate them by comma `,`)",
+ "store/product-comparison.product-selector.upper-limit-exceeded": "Can't add this item to compare, bucket size exceeded"
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ef8bea2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "product-comparison",
+ "private": true,
+ "license": "UNLICENSED",
+ "scripts": {
+ "lint": "eslint --ext js,jsx,ts,tsx .",
+ "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{ts,js,tsx,jsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ],
+ "*.{json,graphql,gql}": [
+ "prettier --write"
+ ]
+ },
+ "devDependencies": {
+ "@vtex/prettier-config": "^0.1.4",
+ "eslint": "^7.12.1",
+ "eslint-config-vtex": "^12.3.2",
+ "eslint-config-vtex-react": "^6.3.2",
+ "husky": "^4.2.3",
+ "lint-staged": "^10.1.1",
+ "prettier": "^2.0.2",
+ "typescript": "^3.8.3"
+ }
+}
\ No newline at end of file
diff --git a/react/ComparisonPage.tsx b/react/ComparisonPage.tsx
index b80c3db..f5e4735 100644
--- a/react/ComparisonPage.tsx
+++ b/react/ComparisonPage.tsx
@@ -1,4 +1,5 @@
-import React, { ReactChild, ReactChildren } from 'react'
+import type { ReactChild, ReactChildren } from 'react'
+import React from 'react'
import { isEmpty, pathOr } from 'ramda'
import { useCssHandles } from 'vtex.css-handles'
import {
@@ -9,8 +10,10 @@ import {
Spinner,
withToast,
} from 'vtex.styleguide'
+import type { InjectedIntlProps } from 'react-intl'
+import { defineMessages, injectIntl } from 'react-intl'
+
import ComparisonContext from './ProductComparisonContext'
-import { defineMessages, InjectedIntlProps, injectIntl } from 'react-intl'
import './global.css'
const CSS_HANDLES = ['pageContainer', 'sortBy', 'removeAllItemsButtonWrapper']
@@ -66,7 +69,7 @@ const ComparisonPage = ({ children, intl, showToast }: Props) => {
const showMessage = (message: string) => {
if (showToast) {
showToast({
- message: message,
+ message,
})
}
}
@@ -84,7 +87,7 @@ const ComparisonPage = ({ children, intl, showToast }: Props) => {
}
return isEmpty(comparisonProducts) ? (
-
+
) : (
@@ -94,7 +97,7 @@ const ComparisonPage = ({ children, intl, showToast }: Props) => {
pageHeader={
{
switch (action.type) {
case 'ADD_ALL_PRODUCTS': {
const products = pathOr([], ['args', 'products'], action)
+
return {
...state,
products: [...products],
}
}
+
case 'ADD_PRODUCT': {
const { product } = action.args
const newProductList = [...state.products, product]
+
return {
...state,
products: newProductList,
}
}
+
case 'REMOVE_ALL_PRODUCTS': {
return {
...state,
products: [],
}
}
+
case 'REMOVE_PRODUCT': {
const { product } = action.args
const remaining = reject(
@@ -68,8 +67,10 @@ const listReducer = (state: State, action: ReducerActions): State => {
)(state.products)
localStorage.setItem('PRODUCTS_TO_COMPARE', JSON.stringify(remaining))
+
return { ...state, products: remaining }
}
+
default: {
throw new Error(`Unhandled action type on product-list-context`)
}
@@ -81,7 +82,7 @@ const DEFAULT_STATE: State = {
}
const ComparisonProductContext = createContext(DEFAULT_STATE)
-const ComparisonProductDispatchContext = createContext(action => {
+const ComparisonProductDispatchContext = createContext((action) => {
console.error('error in dispatch ', action)
})
@@ -99,7 +100,7 @@ const ComparisonProductProvider = ({ products, children }: Props) => {
useEffect(() => {
if (products && products.length > 0) {
- dispatch({ type: 'ADD_ALL_PRODUCTS', args: { products: products } })
+ dispatch({ type: 'ADD_ALL_PRODUCTS', args: { products } })
}
}, [products])
diff --git a/react/ComparisonProductWrapper.tsx b/react/ComparisonProductWrapper.tsx
index 95d3df2..12356a1 100644
--- a/react/ComparisonProductWrapper.tsx
+++ b/react/ComparisonProductWrapper.tsx
@@ -1,8 +1,10 @@
-import React, { useEffect, useState, ReactChildren, ReactChild } from 'react'
+import type { ReactChildren, ReactChild } from 'react'
+import React, { useEffect, useState } from 'react'
import { pathOr } from 'ramda'
// import { pathOr, propEq, find } from 'ramda'
import productsQuery from 'vtex.store-resources/QueryProduct'
import { useApolloClient } from 'react-apollo'
+
import ComparisonContext from './ProductComparisonContext'
import ComparisonProductContext from './ComparisonProductContext'
// import { mapCatalogProductToProductSummary } from './components/utils/normalize'
@@ -37,7 +39,7 @@ const ComparisonProductWrapper = ({ children }: Props) => {
},
})
})
- ).then((productsList: { data: { product: Product } }[]) => {
+ ).then((productsList: Array<{ data: { product: Product } }>) => {
const responseProducts: Product[] = productsList.map(
(productResponse: { data: { product: Product } }) =>
// eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
diff --git a/react/ProductComparisonContext.tsx b/react/ProductComparisonContext.tsx
index 882b241..ac6d0a3 100644
--- a/react/ProductComparisonContext.tsx
+++ b/react/ProductComparisonContext.tsx
@@ -1,13 +1,8 @@
-import React, {
- ReactChildren,
- ReactChild,
- useReducer,
- useContext,
- createContext,
- useEffect,
-} from 'react'
+import type { ReactChildren, ReactChild } from 'react'
+import React, { useReducer, useContext, createContext, useEffect } from 'react'
import { pathOr, reject, propEq, allPass } from 'ramda'
import { useQuery } from 'react-apollo'
+
import AppSettings from './queries/AppSettings.graphql'
export interface State {
@@ -76,11 +71,13 @@ const listReducer = (state: State, action: ReducerActions): State => {
0,
state.maxNumberOfItemsToCompare
)
+
return {
...state,
products: productsToCompare,
}
}
+
case 'ADD_MULTIPLE': {
const products = pathOr([], ['args', 'products'], action)
@@ -102,33 +99,40 @@ const listReducer = (state: State, action: ReducerActions): State => {
'PRODUCTS_TO_COMPARE',
JSON.stringify(newProductList)
)
+
return {
...state,
products: newProductList,
}
}
+
case 'ADD': {
const { product } = action.args
const newProductList = [...state.products, product].slice(
0,
state.maxNumberOfItemsToCompare
)
+
localStorage.setItem(
'PRODUCTS_TO_COMPARE',
JSON.stringify(newProductList)
)
+
return {
...state,
products: newProductList,
}
}
+
case 'REMOVE_ALL': {
localStorage.setItem('PRODUCTS_TO_COMPARE', JSON.stringify([]))
+
return {
...state,
products: [],
}
}
+
case 'REMOVE': {
const { product } = action.args
const remaining = reject(
@@ -139,26 +143,31 @@ const listReducer = (state: State, action: ReducerActions): State => {
)(state.products)
localStorage.setItem('PRODUCTS_TO_COMPARE', JSON.stringify(remaining))
+
return { ...state, products: remaining }
}
+
case 'SET_SHOW_DIFFERENCES': {
return {
...state,
...{ showDifferences: action.args.showDifferences },
}
}
+
case 'IS_DRAWER_COLLAPSED': {
return {
...state,
isDrawerCollapsed: action.args.isDrawerCollapsed,
}
}
+
case 'SET_MAX_LIMIT': {
return {
...state,
maxNumberOfItemsToCompare: action.args.maxLimit,
}
}
+
default: {
throw new Error(`Unhandled action type on product-list-context`)
}
@@ -175,7 +184,7 @@ const DEFAULT_STATE: State = {
}
const ComparisonContext = createContext(DEFAULT_STATE)
-const ComparisonDispatchContext = createContext(action => {
+const ComparisonDispatchContext = createContext((action) => {
console.error('error in dispatch ', action)
})
@@ -223,6 +232,7 @@ const ProductComparisonProvider = ({ children }: Props) => {
const productsToCompare = (initialProducts
? JSON.parse(initialProducts)
: []) as ProductToCompare[]
+
dispatch({ type: 'ADD_ALL', args: { products: productsToCompare } })
}, [])
diff --git a/react/ProductComparisonWrapper.tsx b/react/ProductComparisonWrapper.tsx
index 844b1e2..950f495 100644
--- a/react/ProductComparisonWrapper.tsx
+++ b/react/ProductComparisonWrapper.tsx
@@ -1,7 +1,9 @@
-import React, { ReactChildren, ReactChild } from 'react'
+import type { ReactChildren, ReactChild } from 'react'
+import React from 'react'
+import { ToastProvider } from 'vtex.styleguide'
+
import ComparisonContext from './ProductComparisonContext'
import ComparisonProductWrapper from './ComparisonProductWrapper'
-import { ToastProvider } from 'vtex.styleguide'
interface Props {
children: ReactChildren | ReactChild
diff --git a/react/components/comparisonFields/GroupedProductSpecifications.tsx b/react/components/comparisonFields/GroupedProductSpecifications.tsx
index 4cd9fb0..7c4097c 100644
--- a/react/components/comparisonFields/GroupedProductSpecifications.tsx
+++ b/react/components/comparisonFields/GroupedProductSpecifications.tsx
@@ -1,10 +1,11 @@
import React, { useMemo } from 'react'
-import { contains, pathOr, keys, findLast, propEq, sort, uniq } from 'ramda' //, findLast, propEq, sort, uniq,
+import { contains, pathOr, keys, findLast, propEq, sort, uniq } from 'ramda' // , findLast, propEq, sort, uniq,
+import { useCssHandles } from 'vtex.css-handles'
+
import ComparisonFieldRow from '../comparisonPageRow/ComparisonFieldRow'
import ComparisonProductContext from '../../ComparisonProductContext'
import ComparisonContext from '../../ProductComparisonContext'
import { splitString } from '../utils/fieldUtils'
-import { useCssHandles } from 'vtex.css-handles'
import './fieldGroup.css'
const CSS_HANDLES = ['title']
@@ -34,7 +35,7 @@ const GroupedProductSpecifications = ({
const allProductSpecificationsList: GroupedComparisonFields = useMemo(() => {
const allProductSpecificationGroups: ProductSpecificationGroup[][] = products.map(
- product => {
+ (product) => {
return pathOr([], ['specificationGroups'], product)
}
)
@@ -68,14 +69,16 @@ const GroupedProductSpecifications = ({
const isExists = groupedSpecifications.find(
(s: ProductSpecification) => s.name == specification.name
)
+
if (
!isExists &&
!contains(specification.name, specificationsToHide)
) {
const gSpec: ProductSpecification = {
...specification,
- ...{ groupName: groupName },
+ ...{ groupName },
}
+
groupedSpecifications.push(gSpec)
}
})
@@ -87,6 +90,7 @@ const GroupedProductSpecifications = ({
}
}
)
+
return accumulator
},
{}
@@ -106,6 +110,7 @@ const GroupedProductSpecifications = ({
showOnSite: true,
})
)
+
return {
...accumulator,
...{ [currentValue]: fields },
@@ -146,6 +151,7 @@ const GroupedProductSpecifications = ({
)(specifications)
const specs = pathOr([], ['values'], selectedSpecification)
+
return sort(
(a: string, b: string) => a.localeCompare(b),
specs
@@ -154,10 +160,12 @@ const GroupedProductSpecifications = ({
)
const uniqueSpecifications = uniq(specificationFieldValues)
+
if (uniqueSpecifications.length !== 1) {
differentFields.push(field)
}
})
+
return {
...accumulator,
...{ [currentValue]: differentFields },
@@ -165,6 +173,7 @@ const GroupedProductSpecifications = ({
},
{}
)
+
return differentComparisonFields
}
@@ -185,6 +194,7 @@ const GroupedProductSpecifications = ({
[groupName],
allProductSpecificationsList
)
+
return (
specifications.length > 0 && (
diff --git a/react/components/comparisonFields/ProductSpecifications.tsx b/react/components/comparisonFields/ProductSpecifications.tsx
index a1a3efd..def5abd 100644
--- a/react/components/comparisonFields/ProductSpecifications.tsx
+++ b/react/components/comparisonFields/ProductSpecifications.tsx
@@ -1,10 +1,11 @@
import React, { useMemo } from 'react'
import { pathOr, findLast, propEq, sort, uniq } from 'ramda'
+import { useCssHandles } from 'vtex.css-handles'
+
import ComparisonFieldRow from '../comparisonPageRow/ComparisonFieldRow'
import ComparisonProductContext from '../../ComparisonProductContext'
import ComparisonContext from '../../ProductComparisonContext'
import { getProductSpecificationFields } from '../utils/fieldUtils'
-import { useCssHandles } from 'vtex.css-handles'
import './fieldGroup.css'
const CSS_HANDLES = ['title']
@@ -28,20 +29,22 @@ const ProductSpecifications = ({
const allProductSpecificationsList: ComparisonField[] = useMemo(() => {
const allProductSpecificationsList: ProductSpecification[][] = products.map(
- product => {
+ (product) => {
const groups = pathOr([], ['specificationGroups'], product)
const allSpecifications = findLast(propEq('name', 'allSpecifications'))(
groups
)
+
return pathOr([], ['specifications'], allSpecifications)
}
)
let specificationsList: string[] = allProductSpecificationsList.reduce(
(accumulator: string[], currentValue: ProductSpecification[]) => {
- const current = currentValue.map(specification =>
+ const current = currentValue.map((specification) =>
pathOr('', ['name'], specification)
)
+
return [...new Set([...accumulator, ...current])]
},
[] as string[]
@@ -53,7 +56,7 @@ const ProductSpecifications = ({
)
const productSpecificationFields = specificationsList.map(
- specificationName => ({
+ (specificationName) => ({
fieldType: 'ProductSpecificationField',
name: specificationName,
displayValue: specificationName,
@@ -62,21 +65,24 @@ const ProductSpecifications = ({
)
if (comparisonData.showDifferences) {
- return productSpecificationFields.map(field => {
+ return productSpecificationFields.map((field) => {
const specifications = allProductSpecificationsList.map(
- specifications => {
+ (specifications) => {
return findLast(propEq('name', field.name))(specifications)
}
)
+
const specificationValues = specifications.map(
(specification: ProductSpecification) => {
const specs = pathOr([], ['values'], specification)
+
return sort(
(a: string, b: string) => a.localeCompare(b),
specs
).join(',')
}
)
+
const uniqueSpecifications = uniq(specificationValues)
return {
diff --git a/react/components/comparisonFields/SkuSpecifications.tsx b/react/components/comparisonFields/SkuSpecifications.tsx
index 0c09473..15a4cc0 100644
--- a/react/components/comparisonFields/SkuSpecifications.tsx
+++ b/react/components/comparisonFields/SkuSpecifications.tsx
@@ -1,10 +1,11 @@
import React, { useMemo } from 'react'
import { pathOr, find, findLast, propEq, sort, uniq } from 'ramda'
+import { useCssHandles } from 'vtex.css-handles'
+
import ComparisonFieldRow from '../comparisonPageRow/ComparisonFieldRow'
import ComparisonProductContext from '../../ComparisonProductContext'
import ComparisonContext from '../../ProductComparisonContext'
import { getSkuSpecificationFields } from '../utils/fieldUtils'
-import { useCssHandles } from 'vtex.css-handles'
import './fieldGroup.css'
const CSS_HANDLES = ['title']
@@ -24,7 +25,7 @@ const SkuSpecifications = ({ skuSpecificationsToHide, titleText }: Props) => {
const products = pathOr([] as ProductToCompare[], ['products'], productData)
const skuSpecificationFields: ComparisonField[] = useMemo(() => {
- const allSkuSpecificationsList: string[][] = products.map(product => {
+ const allSkuSpecificationsList: string[][] = products.map((product) => {
const skuSpecificationsList = pathOr([], ['skuSpecifications'], product)
const skuSpecificationNamesList: string[] = skuSpecificationsList.reduce(
(accumulator: string[], currentValue) => {
@@ -38,7 +39,7 @@ const SkuSpecifications = ({ skuSpecificationsToHide, titleText }: Props) => {
[] as string[]
)
- return skuSpecificationNamesList.filter(name => name !== '')
+ return skuSpecificationNamesList.filter((name) => name !== '')
})
let specificationsList: string[] = allSkuSpecificationsList.reduce(
@@ -54,7 +55,7 @@ const SkuSpecifications = ({ skuSpecificationsToHide, titleText }: Props) => {
)
const skuSpecificationFieldsList = specificationsList.map(
- specificationName => ({
+ (specificationName) => ({
fieldType: 'SkuSpecificationField',
name: specificationName,
displayValue: specificationName,
@@ -64,10 +65,11 @@ const SkuSpecifications = ({ skuSpecificationsToHide, titleText }: Props) => {
if (comparisonData.products && comparisonData.showDifferences) {
const allVariations: Variation[][] = comparisonData.products.map(
- comparisonItem => {
+ (comparisonItem) => {
const selectedProduct = find(
propEq('productId', comparisonItem.productId)
)(products)
+
const selectedSku = find(propEq('itemId', comparisonItem.skuId))(
pathOr([], ['items'], selectedProduct)
)
@@ -76,19 +78,22 @@ const SkuSpecifications = ({ skuSpecificationsToHide, titleText }: Props) => {
}
)
- return skuSpecificationFieldsList.map(field => {
- const specifications = allVariations.map(variations => {
+ return skuSpecificationFieldsList.map((field) => {
+ const specifications = allVariations.map((variations) => {
return findLast(propEq('name', field.name))(variations)
})
+
const specificationValues = specifications.map(
(specification: ProductSpecification) => {
const specs = pathOr([], ['values'], specification)
+
return sort(
(a: string, b: string) => a.localeCompare(b),
specs
).join(',')
}
)
+
const uniqueSpecifications = uniq(specificationValues)
return {
diff --git a/react/components/comparisonPageRow/ComparisonFieldRow.tsx b/react/components/comparisonPageRow/ComparisonFieldRow.tsx
index cb8b9d5..bbe60b8 100644
--- a/react/components/comparisonPageRow/ComparisonFieldRow.tsx
+++ b/react/components/comparisonPageRow/ComparisonFieldRow.tsx
@@ -26,4 +26,5 @@ const ComparisonFieldRow: StorefrontFunctionComponent
= ({
) : null
}
+
export default ComparisonFieldRow
diff --git a/react/components/comparisonPageRow/ComparisonFieldValue.tsx b/react/components/comparisonPageRow/ComparisonFieldValue.tsx
index 0b1fe3a..f13f7fc 100644
--- a/react/components/comparisonPageRow/ComparisonFieldValue.tsx
+++ b/react/components/comparisonPageRow/ComparisonFieldValue.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import { pathOr, find, propEq, findLast } from 'ramda'
-import ComparisonProductContext from '../../ComparisonProductContext'
import { useCssHandles } from 'vtex.css-handles'
+
+import ComparisonProductContext from '../../ComparisonProductContext'
import './row.css'
const CSS_HANDLES = [
@@ -26,6 +27,7 @@ const ComparisonFieldValue = ({ field, productToCompare }: Props) => {
const selectedProduct = find(propEq('productId', productToCompare.productId))(
products
)
+
const selectedSku = find(propEq('itemId', productToCompare.skuId))(
pathOr([], ['items'], selectedProduct)
)
@@ -51,6 +53,7 @@ const ComparisonFieldValue = ({ field, productToCompare }: Props) => {
const allSpecifications = findLast(propEq('name', 'allSpecifications'))(
groups
)
+
const specifications = pathOr([], ['specifications'], allSpecifications)
const values = pathOr(
@@ -58,11 +61,12 @@ const ComparisonFieldValue = ({ field, productToCompare }: Props) => {
['values'],
find(propEq('name', field.name))(specifications)
)
+
return (
- {values.map(value => {
+ {values.map((value) => {
return (
{
['values'],
find(propEq('name', field.name))(skuSpecifications)
)
+
return (
- {values.map(value => {
+ {values.map((value) => {
return (
{
)
}
+
if (field.fieldType === 'GroupedSpecification') {
const groups = pathOr([], ['specificationGroups'], selectedProduct)
const groupedSpecification = findLast(propEq('name', field.groupName))(
groups
)
+
const specifications = pathOr([], ['specifications'], groupedSpecification)
const values = pathOr(
@@ -110,11 +117,12 @@ const ComparisonFieldValue = ({ field, productToCompare }: Props) => {
['values'],
find(propEq('name', field.name))(specifications)
)
+
return (
- {values.map(value => {
+ {values.map((value) => {
return (
{
)
}
- return
+ return
}
export default ComparisonFieldValue
diff --git a/react/components/comparisonPageRow/ComparisonGridRowContent.tsx b/react/components/comparisonPageRow/ComparisonGridRowContent.tsx
index 7a5ea72..fd87fc7 100644
--- a/react/components/comparisonPageRow/ComparisonGridRowContent.tsx
+++ b/react/components/comparisonPageRow/ComparisonGridRowContent.tsx
@@ -1,12 +1,14 @@
-import React, { useMemo, ReactChildren, ReactChild } from 'react'
+import type { ReactChildren, ReactChild } from 'react'
+import React, { useMemo } from 'react'
import { pathOr } from 'ramda'
import { useListContext, ListContextProvider } from 'vtex.list-context'
import { ProductListContext } from 'vtex.product-list-context'
+import { useCssHandles } from 'vtex.css-handles'
+
import ProductSummeryListEventCaller from '../productSummaryList/ProductSummeryListEventCaller'
import ComparisonContext from '../../ProductComparisonContext'
import ComparisonProductContext from '../../ComparisonProductContext'
import ComparisonFieldValue from './ComparisonFieldValue'
-import { useCssHandles } from 'vtex.css-handles'
import './row.css'
const CSS_HANDLES = ['comparisonCol']
@@ -25,7 +27,7 @@ const List = ({ children, comparisonProducts, field }: Props) => {
const newListContextValue = useMemo(() => {
const componentList =
comparisonProducts &&
- comparisonProducts.map(comparisonProduct => {
+ comparisonProducts.map((comparisonProduct) => {
return (
{
['products'],
comparisonData
)
+
const products = pathOr([] as ProductToCompare[], ['products'], productData)
return (
-
+
{
+const setShowDifferenceFirstTime = (
+ isShowDifferenceDefault: boolean,
+ dispatchComparison: Dispatch
+) => {
dispatchComparison({
args: {
showDifferences: isShowDifferenceDefault,
@@ -35,11 +43,16 @@ const messages = defineMessages({
},
})
-
-const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowProps) => {
+const ProductSummaryRow = ({
+ isShowDifferenceDefault,
+ intl,
+}: ProductSummaryRowProps) => {
const cssHandles = useCssHandles(CSS_HANDLES)
-
- const [isShowDifferenceByDefault, changesChecked] = useState(isShowDifferenceDefault)
+
+ const [isShowDifferenceByDefault, changesChecked] = useState(
+ isShowDifferenceDefault
+ )
+
const [showDifferences, setShowDifferences] = useState(false)
const {
useProductComparisonState,
@@ -57,10 +70,11 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
['products'],
comparisonData
)
+
const products = pathOr([] as ProductToCompare[], ['products'], productData)
-
- useEffect(() =>{
- setShowDifferenceFirstTime(isShowDifferenceByDefault,dispatchComparison)
+
+ useEffect(() => {
+ setShowDifferenceFirstTime(isShowDifferenceByDefault, dispatchComparison)
}, [])
const { push } = usePixel()
@@ -74,6 +88,7 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
})
}
}
+
useEffect(() => {
pixelEvent(comparisonData.products, comparisonData.products.length)
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -83,6 +98,7 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
comparisonData.products &&
comparisonData.products.length > 1 &&
comparisonData.showDifferences
+
setShowDifferences(showDifferences)
}, [comparisonData])
@@ -95,6 +111,7 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
type: 'SET_SHOW_DIFFERENCES',
})
}
+
return isEmpty(comparisonProducts) ? (
) : (
@@ -106,9 +123,9 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
@@ -121,17 +138,18 @@ const ProductSummaryRow = ({ isShowDifferenceDefault, intl }: ProductSummaryRowP
)
}
+
ProductSummaryRow.schema = {
title: 'editor.product-summary-row.title',
description: 'editor.product-summary-row.description',
type: 'object',
properties: {
- isShowDifferenceDefault:{
- title:'Show difference',
- description:'',
- default:false,
- type:'boolean'
- }
- }
+ isShowDifferenceDefault: {
+ title: 'Show difference',
+ description: '',
+ default: false,
+ type: 'boolean',
+ },
+ },
}
-export default injectIntl(ProductSummaryRow)
\ No newline at end of file
+export default injectIntl(ProductSummaryRow)
diff --git a/react/components/drawer/ComparisonDrawer.tsx b/react/components/drawer/ComparisonDrawer.tsx
index f255990..647fe8a 100644
--- a/react/components/drawer/ComparisonDrawer.tsx
+++ b/react/components/drawer/ComparisonDrawer.tsx
@@ -2,12 +2,13 @@
/* eslint-disable jsx-a11y/no-static-element-interactions */
import React from 'react'
import { pathOr, isEmpty } from 'ramda'
-import ComparisonContext from '../../ProductComparisonContext'
import { Button, Collapsible, withToast } from 'vtex.styleguide'
-import { ExtensionPoint } from 'vtex.render-runtime'
+import { ExtensionPoint, useRuntime } from 'vtex.render-runtime'
import { useCssHandles } from 'vtex.css-handles'
-import { InjectedIntlProps, injectIntl, defineMessages } from 'react-intl'
-import { useRuntime } from 'vtex.render-runtime'
+import type { InjectedIntlProps } from 'react-intl'
+import { injectIntl, defineMessages } from 'react-intl'
+
+import ComparisonContext from '../../ProductComparisonContext'
import './drawer.css'
const CSS_HANDLES = [
@@ -82,12 +83,13 @@ const ComparisonDrawer = ({ showToast, intl, comparisonPageUrl }: Props) => {
['products'],
comparisonData
)
+
const isCollapsed = pathOr(false, ['isDrawerCollapsed'], comparisonData)
const showMessage = (message: string) => {
if (showToast) {
showToast({
- message: message,
+ message,
})
}
}
@@ -128,9 +130,8 @@ const ComparisonDrawer = ({ showToast, intl, comparisonPageUrl }: Props) => {
const url =
comparisonProducts.length < 2
? '#'
- : comparisonPageUrl
- ? comparisonPageUrl
- : '/product-comparison'
+ : comparisonPageUrl || '/product-comparison'
+
navigate({ to: url })
}
diff --git a/react/components/productRemover/RemoveButton.tsx b/react/components/productRemover/RemoveButton.tsx
index bd417b8..7e91188 100644
--- a/react/components/productRemover/RemoveButton.tsx
+++ b/react/components/productRemover/RemoveButton.tsx
@@ -1,11 +1,14 @@
-import React, { MouseEvent } from 'react'
+import type { MouseEvent } from 'react'
+import React from 'react'
import { pathOr } from 'ramda'
-import ComparisonContext from '../../ProductComparisonContext'
import { useProductSummary } from 'vtex.product-summary-context/ProductSummaryContext'
import { useCssHandles } from 'vtex.css-handles'
import { withToast } from 'vtex.styleguide'
import { IconClose } from 'vtex.store-icons'
-import { InjectedIntlProps, injectIntl, defineMessages } from 'react-intl'
+import type { InjectedIntlProps } from 'react-intl'
+import { injectIntl, defineMessages } from 'react-intl'
+
+import ComparisonContext from '../../ProductComparisonContext'
import './remove.css'
const CSS_HANDLES = ['closeButton', 'closeButtonContainer']
@@ -32,6 +35,7 @@ const RemoveButton = ({ showToast, intl }: Props) => {
useProductComparisonState,
useProductComparisonDispatch,
} = ComparisonContext
+
const dispatchComparison = useProductComparisonDispatch()
const valuesFromContext = useProductSummary()
const productId = pathOr('', ['product', 'productId'], valuesFromContext)
@@ -41,10 +45,10 @@ const RemoveButton = ({ showToast, intl }: Props) => {
const comparisonData = useProductComparisonState()
const isDrawerCollapsed = pathOr(false, ['isDrawerCollapsed'], comparisonData)
- const showMessage = (message: string, show: boolean = true) => {
+ const showMessage = (message: string, show = true) => {
if (showToast && show) {
showToast({
- message: message,
+ message,
})
}
}
@@ -56,7 +60,7 @@ const RemoveButton = ({ showToast, intl }: Props) => {
dispatchComparison({
args: {
product: {
- productId: productId,
+ productId,
skuId: itemId,
},
},
diff --git a/react/components/productSelector/ProductSelector.tsx b/react/components/productSelector/ProductSelector.tsx
index dcd3715..47c0035 100644
--- a/react/components/productSelector/ProductSelector.tsx
+++ b/react/components/productSelector/ProductSelector.tsx
@@ -1,11 +1,14 @@
/* eslint-disable jsx-a11y/no-static-element-interactions */
-import React, { useState, useEffect, MouseEvent } from 'react'
+import type { MouseEvent } from 'react'
+import React, { useState, useEffect } from 'react'
import { pathOr, find, propEq, allPass, isEmpty } from 'ramda'
import { Checkbox, withToast } from 'vtex.styleguide'
import { useCssHandles } from 'vtex.css-handles'
-import ComparisonContext from '../../ProductComparisonContext'
import { useProductSummary } from 'vtex.product-summary-context/ProductSummaryContext'
-import { InjectedIntlProps, injectIntl, defineMessages } from 'react-intl'
+import type { InjectedIntlProps } from 'react-intl'
+import { injectIntl, defineMessages } from 'react-intl'
+
+import ComparisonContext from '../../ProductComparisonContext'
const CSS_HANDLES = ['productSelectorContainer']
@@ -29,7 +32,7 @@ const messages = defineMessages({
comparisonUpperLimit: {
defaultMessage: '',
id: 'store/product-comparison.product-selector.upper-limit-exceeded',
- }
+ },
})
interface Props extends InjectedIntlProps {
@@ -67,13 +70,14 @@ const ProductSelector = ({ showToast, intl }: Props) => {
allPass([propEq('productId', productId), propEq('skuId', itemId)])
)(productsSelected)
: []
+
setIsChecked(selectedProducts && !isEmpty(selectedProducts))
}, [productsSelected, itemId, productId])
- const showMessage = (message: string, show: boolean = true) => {
+ const showMessage = (message: string, show = true) => {
if (showToast && show) {
showToast({
- message: message,
+ message,
})
}
}
@@ -85,7 +89,7 @@ const ProductSelector = ({ showToast, intl }: Props) => {
} else if (e.target.checked) {
dispatchComparison({
args: {
- product: { productId: productId, skuId: itemId },
+ product: { productId, skuId: itemId },
},
type: 'ADD',
})
@@ -98,7 +102,7 @@ const ProductSelector = ({ showToast, intl }: Props) => {
} else {
dispatchComparison({
args: {
- product: { productId: productId, skuId: itemId },
+ product: { productId, skuId: itemId },
},
type: 'REMOVE',
})
diff --git a/react/components/productSummaryList/ProductSummaryList.tsx b/react/components/productSummaryList/ProductSummaryList.tsx
index 400a2c9..f3520da 100644
--- a/react/components/productSummaryList/ProductSummaryList.tsx
+++ b/react/components/productSummaryList/ProductSummaryList.tsx
@@ -1,8 +1,11 @@
-import React, { useMemo, ReactChildren, ReactChild } from 'react'
+// eslint-disable-next-line prettier/prettier
+import type { ReactChildren, ReactChild } from 'react'
+import React, { useMemo } from 'react'
import { pathOr, propEq, find } from 'ramda'
import { ExtensionPoint, useTreePath } from 'vtex.render-runtime'
import { useListContext, ListContextProvider } from 'vtex.list-context'
import { ProductListContext } from 'vtex.product-list-context'
+
import { mapCatalogProductToProductSummary } from '../utils/normalize'
import ProductSummeryListEventCaller from './ProductSummeryListEventCaller'
import ComparisonContext from '../../ProductComparisonContext'
@@ -23,7 +26,7 @@ const List = ({ children, products, comparisonProducts }: Props) => {
comparisonProducts &&
products &&
comparisonProducts
- .map(comparisonProduct => {
+ .map((comparisonProduct) => {
const selectedProduct = find(
propEq('productId', comparisonProduct.productId)
)(products)
@@ -33,8 +36,8 @@ const List = ({ children, products, comparisonProducts }: Props) => {
comparisonProduct.skuId
)
})
- .filter(product => pathOr('', ['productId'], product) !== '')
- .map(normalizedProduct => {
+ .filter((product) => pathOr('', ['productId'], product) !== '')
+ .map((normalizedProduct) => {
return (
{
['products'],
comparisonData
)
+
const products = pathOr([] as ProductToCompare[], ['products'], productData)
return (
-
+
{children}
diff --git a/react/components/utils/fieldUtils.ts b/react/components/utils/fieldUtils.ts
index ffd5df1..6daba94 100644
--- a/react/components/utils/fieldUtils.ts
+++ b/react/components/utils/fieldUtils.ts
@@ -6,8 +6,8 @@ export const splitString = (text?: string) => {
}
return split(',', text)
- .filter(str => str !== null && str !== '')
- .map(str => trim(str))
+ .filter((str) => str !== null && str !== '')
+ .map((str) => trim(str))
}
export const getProductSpecificationFields = (
@@ -15,6 +15,7 @@ export const getProductSpecificationFields = (
fieldsToHide?: string
) => {
const removeList = splitString(fieldsToHide)
+
return without(removeList, existing)
}
@@ -23,6 +24,7 @@ export const getSkuSpecificationFields = (
fieldsToHide?: string
) => {
const removeList = splitString(fieldsToHide)
+
return without(removeList, existing)
}
@@ -31,7 +33,7 @@ export const getProductFields = (fieldsToHide?: string) => {
const removeList = splitString(fieldsToHide)
const fieldsSelected = without(removeList, fieldNames)
- const fields = fieldsSelected.map(fieldName => {
+ const fields = fieldsSelected.map((fieldName) => {
let value = {}
switch (fieldName) {
@@ -43,6 +45,7 @@ export const getProductFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
case 'brand':
value = {
fieldType: 'ProductField',
@@ -51,6 +54,7 @@ export const getProductFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
case 'description':
value = {
fieldType: 'ProductField',
@@ -59,6 +63,7 @@ export const getProductFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
case 'productReference':
value = {
fieldType: 'ProductField',
@@ -67,6 +72,7 @@ export const getProductFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
default:
value = {
fieldType: '',
@@ -76,6 +82,7 @@ export const getProductFields = (fieldsToHide?: string) => {
}
break
}
+
return value as ComparisonField
})
@@ -87,8 +94,9 @@ export const getSkuFields = (fieldsToHide?: string) => {
const removeList = splitString(fieldsToHide)
const fieldsSelected = without(removeList, fieldNames)
- const fields = fieldsSelected.map(fieldName => {
+ const fields = fieldsSelected.map((fieldName) => {
let value = {}
+
switch (fieldName) {
case 'name':
value = {
@@ -98,6 +106,7 @@ export const getSkuFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
case 'ean':
value = {
fieldType: 'SkuField',
@@ -106,6 +115,7 @@ export const getSkuFields = (fieldsToHide?: string) => {
showOnSite: true,
}
break
+
default:
value = {
fieldType: '',
@@ -115,6 +125,7 @@ export const getSkuFields = (fieldsToHide?: string) => {
}
break
}
+
return value as ComparisonField
})
diff --git a/react/components/utils/normalize.ts b/react/components/utils/normalize.ts
index fcc0338..d3545e1 100644
--- a/react/components/utils/normalize.ts
+++ b/react/components/utils/normalize.ts
@@ -75,7 +75,7 @@ const resizeImage = (url: string, imageSize: number) =>
export const mapCatalogProductToProductSummary = (
product: Product,
skuId: string,
- imageSize: number = 500
+ imageSize = 500
) => {
// eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
if (!product) return {} as Product
@@ -87,7 +87,7 @@ export const mapCatalogProductToProductSummary = (
const [seller = defaultSeller] = pathOr([], ['sellers'], sku)
const [referenceId = defaultReference] = pathOr([], ['referenceId'], sku)
const catalogImages: SkuImage[] = pathOr([], ['images'], sku)
- const normalizedImages = catalogImages.map(image => ({
+ const normalizedImages = catalogImages.map((image) => ({
...image,
imageUrl: resizeImage(image.imageUrl, imageSize),
}))
diff --git a/react/graphQLTypes.ts b/react/graphQLTypes.ts
new file mode 100644
index 0000000..57af277
--- /dev/null
+++ b/react/graphQLTypes.ts
@@ -0,0 +1,25 @@
+/* tslint:disable */
+/* eslint-disable */
+// @generated
+// This file was automatically generated and should not be edited.
+
+//==============================================================
+// START Enums and Input Objects
+//==============================================================
+
+export enum ProductUniqueIdentifierField {
+ ean = 'ean',
+ id = 'id',
+ reference = 'reference',
+ sku = 'sku',
+ slug = 'slug',
+}
+
+export interface ProductUniqueIdentifier {
+ field: ProductUniqueIdentifierField
+ value: string
+}
+
+//==============================================================
+// END Enums and Input Objects
+//==============================================================
diff --git a/react/package.json b/react/package.json
index 225f248..f8395f8 100644
--- a/react/package.json
+++ b/react/package.json
@@ -24,7 +24,21 @@
"eslint-config-vtex-react": "^4.1.0",
"prettier": "^1.18.2",
"tslint-eslint-rules": "^5.4.0",
- "typescript": "3.9.7"
+ "typescript": "3.9.7",
+ "vtex.apps-graphql": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.apps-graphql@2.8.0/public/@types/vtex.apps-graphql",
+ "vtex.css-handles": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.css-handles@0.4.4/public/@types/vtex.css-handles",
+ "vtex.flex-layout": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.flex-layout@0.16.0/public/@types/vtex.flex-layout",
+ "vtex.list-context": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.list-context@0.2.0/public/@types/vtex.list-context",
+ "vtex.pixel-manager": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.pixel-manager@1.8.0/public/@types/vtex.pixel-manager",
+ "vtex.product-list-context": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-list-context@0.3.1/public/@types/vtex.product-list-context",
+ "vtex.product-summary": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary@2.71.2/public/@types/vtex.product-summary",
+ "vtex.product-summary-context": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary-context@0.7.0/public/@types/vtex.product-summary-context",
+ "vtex.render-runtime": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.render-runtime@8.128.3/public/@types/vtex.render-runtime",
+ "vtex.slider-layout": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.slider-layout@0.18.0/public/@types/vtex.slider-layout",
+ "vtex.store-graphql": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-graphql@2.140.0/public/@types/vtex.store-graphql",
+ "vtex.store-icons": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-icons@0.18.0/public/@types/vtex.store-icons",
+ "vtex.store-resources": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-resources@0.79.0/public/@types/vtex.store-resources",
+ "vtex.styleguide": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.styleguide@9.138.2/public/@types/vtex.styleguide"
},
"version": "0.9.2"
}
diff --git a/react/queries/__generated__/Product.ts b/react/queries/__generated__/Product.ts
new file mode 100644
index 0000000..e7c718c
--- /dev/null
+++ b/react/queries/__generated__/Product.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+// @generated
+// This file was automatically generated and should not be edited.
+
+import { ProductUniqueIdentifier } from './../../graphQLTypes'
+
+// ====================================================
+// GraphQL query operation: Product
+// ====================================================
+
+export interface Product_product_categoryTree {
+ /**
+ * Category ID
+ */
+ id: number | null
+ /**
+ * Category name
+ */
+ name: string | null
+ /**
+ * URI of category
+ */
+ href: string | null
+}
+
+export interface Product_product_items_images {
+ imageId: string | null
+ imageLabel: string | null
+ imageUrl: string | null
+ imageText: string | null
+}
+
+export interface Product_product_items {
+ itemId: string | null
+ name: string | null
+ nameComplete: string | null
+ images: (Product_product_items_images | null)[] | null
+}
+
+export interface Product_product {
+ /**
+ * linkText is used as cacheId
+ */
+ cacheId: string | null
+ /**
+ * Product name
+ */
+ productName: string | null
+ /**
+ * Product ID
+ */
+ productId: string | null
+ /**
+ * Product's categories
+ */
+ categoryTree: (Product_product_categoryTree | null)[] | null
+ /**
+ * SKU objects of the product
+ */
+ items: (Product_product_items | null)[] | null
+}
+
+export interface Product {
+ /**
+ * Returns a specified product
+ */
+ product: Product_product | null
+}
+
+export interface ProductVariables {
+ slug?: string | null
+ identifier?: ProductUniqueIdentifier | null
+ skipCategoryTree?: boolean | null
+}
diff --git a/react/queries/__generated__/productsByIdentifier.ts b/react/queries/__generated__/productsByIdentifier.ts
new file mode 100644
index 0000000..b70882b
--- /dev/null
+++ b/react/queries/__generated__/productsByIdentifier.ts
@@ -0,0 +1,127 @@
+/* tslint:disable */
+/* eslint-disable */
+// @generated
+// This file was automatically generated and should not be edited.
+
+// ====================================================
+// GraphQL query operation: productsByIdentifier
+// ====================================================
+
+export interface productsByIdentifier_productsByIdentifier_categoryTree {
+ /**
+ * Category name
+ */
+ name: string | null
+ /**
+ * URI of category
+ */
+ href: string | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items_referenceId {
+ Value: string | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items_images {
+ imageUrl: string | null
+ imageTag: string | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items_sellers_commertialOffer_Installments {
+ Value: number | null
+ InterestRate: number | null
+ TotalValuePlusInterestRate: number | null
+ NumberOfInstallments: number | null
+ Name: string | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items_sellers_commertialOffer {
+ Installments:
+ | (productsByIdentifier_productsByIdentifier_items_sellers_commertialOffer_Installments | null)[]
+ | null
+ AvailableQuantity: number | null
+ Price: number | null
+ ListPrice: number | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items_sellers {
+ sellerId: string | null
+ commertialOffer: productsByIdentifier_productsByIdentifier_items_sellers_commertialOffer | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_items {
+ name: string | null
+ itemId: string | null
+ referenceId:
+ | (productsByIdentifier_productsByIdentifier_items_referenceId | null)[]
+ | null
+ images:
+ | (productsByIdentifier_productsByIdentifier_items_images | null)[]
+ | null
+ sellers:
+ | (productsByIdentifier_productsByIdentifier_items_sellers | null)[]
+ | null
+}
+
+export interface productsByIdentifier_productsByIdentifier_productClusters {
+ id: string | null
+ name: string | null
+}
+
+export interface productsByIdentifier_productsByIdentifier {
+ /**
+ * linkText is used as cacheId
+ */
+ cacheId: string | null
+ /**
+ * Product ID
+ */
+ productId: string | null
+ /**
+ * Product name
+ */
+ productName: string | null
+ /**
+ * Product description
+ */
+ description: string | null
+ /**
+ * Categories of the product
+ */
+ categories: (string | null)[] | null
+ /**
+ * Product's categories
+ */
+ categoryTree:
+ | (productsByIdentifier_productsByIdentifier_categoryTree | null)[]
+ | null
+ /**
+ * Product URL
+ */
+ link: string | null
+ /**
+ * Product slug
+ */
+ linkText: string | null
+ /**
+ * Brand of the product
+ */
+ brand: string | null
+ /**
+ * SKU objects of the product
+ */
+ items: (productsByIdentifier_productsByIdentifier_items | null)[] | null
+ productClusters:
+ | (productsByIdentifier_productsByIdentifier_productClusters | null)[]
+ | null
+}
+
+export interface productsByIdentifier {
+ productsByIdentifier:
+ | (productsByIdentifier_productsByIdentifier | null)[]
+ | null
+}
+
+export interface productsByIdentifierVariables {
+ ids?: string[] | null
+}
diff --git a/react/tsconfig.json b/react/tsconfig.json
index 0e1fa04..de0902e 100644
--- a/react/tsconfig.json
+++ b/react/tsconfig.json
@@ -3,8 +3,12 @@
"alwaysStrict": true,
"esModuleInterop": true,
"jsx": "react",
- "lib": ["es2017", "dom", "es2018.promise"],
- "module": "es6",
+ "lib": [
+ "es2017",
+ "dom",
+ "es2018.promise"
+ ],
+ "module": "esnext",
"moduleResolution": "node",
"noImplicitAny": true,
"noImplicitReturns": true,
@@ -17,12 +21,25 @@
"strictNullChecks": true,
"strictPropertyInitialization": true,
"target": "es2017",
- "typeRoots": ["node_modules/@types"],
- "types": ["node", "jest", "graphql"]
+ "typeRoots": [
+ "node_modules/@types"
+ ],
+ "types": [
+ "node",
+ "jest",
+ "graphql"
+ ]
},
- "exclude": ["node_modules"],
- "include": ["./typings/*.d.ts", "./**/*.tsx", "./**/*.ts", "__mocks__/vtex.pixel-manager.js"],
+ "exclude": [
+ "node_modules"
+ ],
+ "include": [
+ "./typings/*.d.ts",
+ "./**/*.tsx",
+ "./**/*.ts",
+ "__mocks__/vtex.pixel-manager.js"
+ ],
"typeAcquisition": {
"enable": false
}
-}
+}
\ No newline at end of file
diff --git a/react/typings/graphql.d.ts b/react/typings/graphql.d.ts
index ba891a0..5d76398 100644
--- a/react/typings/graphql.d.ts
+++ b/react/typings/graphql.d.ts
@@ -1,5 +1,5 @@
declare module '*.graphql' {
- import { DocumentNode } from 'graphql'
+ import type { DocumentNode } from 'graphql'
const value: DocumentNode
export default value
diff --git a/react/typings/productSummaryContext.d.ts b/react/typings/productSummaryContext.d.ts
index d9d60af..8ce1882 100644
--- a/react/typings/productSummaryContext.d.ts
+++ b/react/typings/productSummaryContext.d.ts
@@ -1,5 +1,5 @@
declare module 'vtex.product-summary-context*' {
- import { Context } from 'react'
+ import type { Context } from 'react'
export const useProductSummary: Context
}
diff --git a/react/typings/storefront.d.ts b/react/typings/storefront.d.ts
index 5033033..e1bb853 100644
--- a/react/typings/storefront.d.ts
+++ b/react/typings/storefront.d.ts
@@ -1,4 +1,4 @@
-import { FunctionComponent } from 'react'
+import type { FunctionComponent } from 'react'
declare global {
interface StorefrontFunctionComponent extends FunctionComponent
{
diff --git a/react/typings/vtex.list-context.d.ts b/react/typings/vtex.list-context.d.ts
index f09deeb..8adfab6 100644
--- a/react/typings/vtex.list-context.d.ts
+++ b/react/typings/vtex.list-context.d.ts
@@ -1,5 +1,5 @@
declare module 'vtex.list-context*' {
- import { Context, Provider } from 'react'
+ import type { Context, Provider } from 'react'
export const useListContext: Context
export const ListContextProvider: Provider
diff --git a/react/typings/vtex.product-list-context.d.ts b/react/typings/vtex.product-list-context.d.ts
index 28a7a56..8d4e0ec 100644
--- a/react/typings/vtex.product-list-context.d.ts
+++ b/react/typings/vtex.product-list-context.d.ts
@@ -1,5 +1,5 @@
declare module 'vtex.product-list-context*' {
- import { Context, Provider } from 'react'
+ import type { Context, Provider } from 'react'
export const ProductListContext: Context
export const useProductImpression: Provider
diff --git a/react/typings/vtex.render-runtime.d.ts b/react/typings/vtex.render-runtime.d.ts
index 4150e45..eb860ba 100644
--- a/react/typings/vtex.render-runtime.d.ts
+++ b/react/typings/vtex.render-runtime.d.ts
@@ -1,7 +1,8 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* Typings for `render-runtime` */
declare module 'vtex.render-runtime' {
- import { Component, ComponentType, ReactElement, ReactType } from 'react'
+ import type { ComponentType, ReactElement, ReactType } from 'react'
+ import { Component } from 'react'
export interface NavigationOptions {
page: string
@@ -27,7 +28,7 @@ declare module 'vtex.render-runtime' {
}
export const ChildBlock: ComponentType
- export const useChildBlock = function({ id: string }): object {}
+ export const useChildBlock = function ({ id: string }): object {}
export const Helmet: ReactElement
export const Link: ReactType
diff --git a/react/typings/vtex.store-icons.d.ts b/react/typings/vtex.store-icons.d.ts
index 6d5206a..a731571 100644
--- a/react/typings/vtex.store-icons.d.ts
+++ b/react/typings/vtex.store-icons.d.ts
@@ -1,5 +1,6 @@
declare module 'vtex.store-icons' {
- import { ComponentType } from 'react'
+ import type { ComponentType } from 'react'
+
interface Props {
size: number
viewBox?: string
diff --git a/react/typings/vtex.store-resources.d.ts b/react/typings/vtex.store-resources.d.ts
index 9d30870..ae564d5 100644
--- a/react/typings/vtex.store-resources.d.ts
+++ b/react/typings/vtex.store-resources.d.ts
@@ -1,11 +1,11 @@
declare module 'vtex.store-resources/Queries' {
- import { DocumentNode } from 'graphql'
+ import type { DocumentNode } from 'graphql'
export const orderForm: DocumentNode
}
declare module 'vtex.store-resources/QueryProduct' {
- import { DocumentNode } from 'graphql'
+ import type { DocumentNode } from 'graphql'
const document: DocumentNode
export = document
diff --git a/react/typings/vtex.styleguide.d.ts b/react/typings/vtex.styleguide.d.ts
index 27f73e1..c5b3b05 100644
--- a/react/typings/vtex.styleguide.d.ts
+++ b/react/typings/vtex.styleguide.d.ts
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
declare module 'vtex.styleguide' {
- import { ComponentType } from 'react'
+ import type { ComponentType } from 'react'
export const Input: ComponentType
export const Checkbox: ComponentType
diff --git a/react/yarn.lock b/react/yarn.lock
index 63cc9f4..e559fcd 100644
--- a/react/yarn.lock
+++ b/react/yarn.lock
@@ -5363,6 +5363,62 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
+"vtex.apps-graphql@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.apps-graphql@2.8.0/public/@types/vtex.apps-graphql":
+ version "2.8.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.apps-graphql@2.8.0/public/@types/vtex.apps-graphql#4fd47b1281c4d36e8abb1cfa4daea83bc739eca1"
+
+"vtex.css-handles@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.css-handles@0.4.4/public/@types/vtex.css-handles":
+ version "0.4.4"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.css-handles@0.4.4/public/@types/vtex.css-handles#8c45c6decf9acd2b944e07261686decff93d6422"
+
+"vtex.flex-layout@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.flex-layout@0.16.0/public/@types/vtex.flex-layout":
+ version "0.16.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.flex-layout@0.16.0/public/@types/vtex.flex-layout#06e825f6709de8d4d86b74b1940ca28a8fd319c2"
+
+"vtex.list-context@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.list-context@0.2.0/public/@types/vtex.list-context":
+ version "0.2.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.list-context@0.2.0/public/@types/vtex.list-context#935b748d394851ced7f3b06bbedf59f4ee3ca8a6"
+
+"vtex.pixel-manager@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.pixel-manager@1.8.0/public/@types/vtex.pixel-manager":
+ version "1.8.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.pixel-manager@1.8.0/public/@types/vtex.pixel-manager#3ccfcb1927614984a5f7a3e5650c8c8d2bd3c0f4"
+
+"vtex.product-list-context@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-list-context@0.3.1/public/@types/vtex.product-list-context":
+ version "0.3.1"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-list-context@0.3.1/public/@types/vtex.product-list-context#8c81ffc81bd8aa0900aea16b658884f3ec7daf61"
+
+"vtex.product-summary-context@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary-context@0.7.0/public/@types/vtex.product-summary-context":
+ version "0.7.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary-context@0.7.0/public/@types/vtex.product-summary-context#e4e8d6a83c4bc99ceaac9d93ec360d40c619a190"
+
+"vtex.product-summary@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary@2.71.2/public/@types/vtex.product-summary":
+ version "2.71.2"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-summary@2.71.2/public/@types/vtex.product-summary#73406cac42f705f742dd61c0f5b6c9cba526f825"
+
+"vtex.render-runtime@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.render-runtime@8.128.3/public/@types/vtex.render-runtime":
+ version "8.128.3"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.render-runtime@8.128.3/public/@types/vtex.render-runtime#2e7f819a42b5923f57137156f876deac854a359e"
+
+"vtex.slider-layout@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.slider-layout@0.18.0/public/@types/vtex.slider-layout":
+ version "0.18.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.slider-layout@0.18.0/public/@types/vtex.slider-layout#b9b62e5cb1505e776358aa28e463a1bff76ce5e5"
+
+"vtex.store-graphql@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-graphql@2.140.0/public/@types/vtex.store-graphql":
+ version "2.140.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-graphql@2.140.0/public/@types/vtex.store-graphql#28a441a55796281ee57a4bfe5dc59516ac5b8f19"
+
+"vtex.store-icons@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-icons@0.18.0/public/@types/vtex.store-icons":
+ version "0.18.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-icons@0.18.0/public/@types/vtex.store-icons#0ee94d549aa283ce3a13ab987c13eac4fdfd1bba"
+
+"vtex.store-resources@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-resources@0.79.0/public/@types/vtex.store-resources":
+ version "0.79.0"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-resources@0.79.0/public/@types/vtex.store-resources#ed18285ed23b1a7a0b0bba055a0237be6a4db93e"
+
+"vtex.styleguide@http://vtex.vtexassets.com/_v/public/typings/v1/vtex.styleguide@9.138.2/public/@types/vtex.styleguide":
+ version "9.138.2"
+ resolved "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.styleguide@9.138.2/public/@types/vtex.styleguide#8cb6b8e7f06d1a2357f3fe117708fa03188267ea"
+
w3c-hr-time@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..3326bb5
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,2162 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
+ dependencies:
+ "@babel/highlight" "^7.12.13"
+
+"@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
+ integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.12.18"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.18.tgz#e5663237e5658e4c09586995d2dd6d2c8cfd6fc0"
+ integrity sha512-ngR7yhNTjDxxe1VYmhqQqqXZWujGb6g0IoA4qeG6MxNGRnIw2Zo8ImY8HfaQ7l3T6GklWhdNfyhWk0C0iocdVA==
+ dependencies:
+ core-js-pure "^3.0.0"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2":
+ version "7.12.18"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b"
+ integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@eslint/eslintrc@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
+ integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ lodash "^4.17.20"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@nodelib/fs.scandir@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.4"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.4"
+ fastq "^1.6.0"
+
+"@types/json-schema@^7.0.3":
+ version "7.0.7"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
+ integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@typescript-eslint/eslint-plugin@^4.14.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz#835f64aa0a403e5e9e64c10ceaf8d05c3f015180"
+ integrity sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.15.1"
+ "@typescript-eslint/scope-manager" "4.15.1"
+ debug "^4.1.1"
+ functional-red-black-tree "^1.0.1"
+ lodash "^4.17.15"
+ regexpp "^3.0.0"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@4.15.1", "@typescript-eslint/experimental-utils@^4.0.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz#d744d1ac40570a84b447f7aa1b526368afd17eec"
+ integrity sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/scope-manager" "4.15.1"
+ "@typescript-eslint/types" "4.15.1"
+ "@typescript-eslint/typescript-estree" "4.15.1"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/parser@^4.14.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.1.tgz#4c91a0602733db63507e1dbf13187d6c71a153c4"
+ integrity sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.15.1"
+ "@typescript-eslint/types" "4.15.1"
+ "@typescript-eslint/typescript-estree" "4.15.1"
+ debug "^4.1.1"
+
+"@typescript-eslint/scope-manager@4.15.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz#f6511eb38def2a8a6be600c530c243bbb56ac135"
+ integrity sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA==
+ dependencies:
+ "@typescript-eslint/types" "4.15.1"
+ "@typescript-eslint/visitor-keys" "4.15.1"
+
+"@typescript-eslint/types@4.15.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.1.tgz#da702f544ef1afae4bc98da699eaecd49cf31c8c"
+ integrity sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw==
+
+"@typescript-eslint/typescript-estree@4.15.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz#fa9a9ff88b4a04d901ddbe5b248bc0a00cd610be"
+ integrity sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw==
+ dependencies:
+ "@typescript-eslint/types" "4.15.1"
+ "@typescript-eslint/visitor-keys" "4.15.1"
+ debug "^4.1.1"
+ globby "^11.0.1"
+ is-glob "^4.0.1"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@4.15.1":
+ version "4.15.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz#c76abbf2a3be8a70ed760f0e5756bf62de5865dd"
+ integrity sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww==
+ dependencies:
+ "@typescript-eslint/types" "4.15.1"
+ eslint-visitor-keys "^2.0.0"
+
+"@vtex/prettier-config@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@vtex/prettier-config/-/prettier-config-0.1.4.tgz#dc7633c5b511e42673830503d88adde7da17f40a"
+ integrity sha512-/rNzJ7R7KZmmcrCS3GFbVhfQRKFYFsDvCyO3Mv+atyILi0dkiELLVHUrbeAV/VaCgEMAGgWB9rdCQRasI3Yy/w==
+
+acorn-jsx@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
+ integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+
+acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv@^6.10.0, ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ 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"
+
+ajv@^7.0.2:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84"
+ integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
+ integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
+ dependencies:
+ type-fest "^0.11.0"
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+aria-query@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
+array-includes@^3.1.1, array-includes@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
+ integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ get-intrinsic "^1.0.1"
+ is-string "^1.0.5"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array.prototype.flat@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
+ integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+
+array.prototype.flatmap@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
+ integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ function-bind "^1.1.1"
+
+ast-types-flow@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+axe-core@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.2.tgz#7cf783331320098bfbef620df3b3c770147bc224"
+ integrity sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==
+
+axobject-query@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
+ integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0, chalk@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+ dependencies:
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+commander@^6.2.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+
+compare-versions@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+ integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+confusing-browser-globals@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
+ integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+core-js-pure@^3.0.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.0.tgz#326cc74e1fef8b7443a6a793ddb0adfcd81f9efb"
+ integrity sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg==
+
+cosmiconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
+ integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+damerau-levenshtein@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791"
+ integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==
+
+debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^4.0.1, debug@^4.1.1, debug@^4.2.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-is@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.0.0:
+ version "9.2.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.1.tgz#c9b25604256bb3428964bead3ab63069d736f7ee"
+ integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg==
+
+end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enquirer@^2.3.5, enquirer@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.18.0-next.1:
+ version "1.18.0-next.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
+ integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.2"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.1"
+ object-inspect "^1.9.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.3"
+ string.prototype.trimstart "^1.0.3"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+eslint-config-prettier@^6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
+ integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
+ dependencies:
+ get-stdin "^6.0.0"
+
+eslint-config-vtex-react@^6.3.2:
+ version "6.9.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-vtex-react/-/eslint-config-vtex-react-6.9.4.tgz#0a1518f0496a52d64704de28baff8366966c089b"
+ integrity sha512-kH74cWXleZNUQKgV3Kk29csjmN8n6Gwfu8dcy+50YJ38urAhIoJ9nCWNQZBcbhO7Z9T+RR9kmI8oXlMePT8j9Q==
+ dependencies:
+ eslint-config-vtex "^12.9.4"
+ eslint-plugin-jsx-a11y "^6.3.1"
+ eslint-plugin-react "^7.20.6"
+ eslint-plugin-react-hooks "^4.1.0"
+
+eslint-config-vtex@^12.3.2, eslint-config-vtex@^12.9.4:
+ version "12.9.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-vtex/-/eslint-config-vtex-12.9.4.tgz#0cfe86fdd98cb1d00c870fce909057e5b8a06085"
+ integrity sha512-D1wwqCJ4LQYaFYk7YcX/Rigqe8bwbs8XSPEHK9NpFoJcFexy0k8mhP7dORcntKfqkfmlPv5cfk+UZws9sNByEA==
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "^4.14.1"
+ "@typescript-eslint/parser" "^4.14.1"
+ confusing-browser-globals "^1.0.9"
+ eslint-config-prettier "^6.15.0"
+ eslint-plugin-cypress "^2.11.2"
+ eslint-plugin-import "^2.22.1"
+ eslint-plugin-jest "^24.1.3"
+ eslint-plugin-prettier "^3.1.4"
+ eslint-plugin-vtex "^2.0.10"
+
+eslint-import-resolver-node@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
+ integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.13.1"
+
+eslint-module-utils@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
+ integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
+ dependencies:
+ debug "^2.6.9"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-cypress@^2.11.2:
+ version "2.11.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0"
+ integrity sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA==
+ dependencies:
+ globals "^11.12.0"
+
+eslint-plugin-import@^2.22.1:
+ version "2.22.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
+ integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
+ dependencies:
+ array-includes "^3.1.1"
+ array.prototype.flat "^1.2.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.4"
+ eslint-module-utils "^2.6.0"
+ has "^1.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.1"
+ read-pkg-up "^2.0.0"
+ resolve "^1.17.0"
+ tsconfig-paths "^3.9.0"
+
+eslint-plugin-jest@^24.1.3:
+ version "24.1.5"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz#1e866a9f0deac587d0a3d5d7cefe99815a580de2"
+ integrity sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "^4.0.1"
+
+eslint-plugin-jsx-a11y@^6.3.1:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
+ integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ aria-query "^4.2.2"
+ array-includes "^3.1.1"
+ ast-types-flow "^0.0.7"
+ axe-core "^4.0.2"
+ axobject-query "^2.2.0"
+ damerau-levenshtein "^1.0.6"
+ emoji-regex "^9.0.0"
+ has "^1.0.3"
+ jsx-ast-utils "^3.1.0"
+ language-tags "^1.0.5"
+
+eslint-plugin-prettier@^3.1.4:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7"
+ integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-plugin-react-hooks@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556"
+ integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==
+
+eslint-plugin-react@^7.20.6:
+ version "7.22.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269"
+ integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==
+ dependencies:
+ array-includes "^3.1.1"
+ array.prototype.flatmap "^1.2.3"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ object.entries "^1.1.2"
+ object.fromentries "^2.0.2"
+ object.values "^1.1.1"
+ prop-types "^15.7.2"
+ resolve "^1.18.1"
+ string.prototype.matchall "^4.0.2"
+
+eslint-plugin-vtex@^2.0.10:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vtex/-/eslint-plugin-vtex-2.0.10.tgz#52c2f3d10ac68283dd037b6c46cfca30c5d14508"
+ integrity sha512-khYy7u7OO12oGEx1mXe7Iy0rJsIrp/DBrI+qsWKzLUDqlDGopnNnrthlH2B66MwKo74tsEorKjQOEn914Sh2ww==
+
+eslint-scope@^5.0.0, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.0.0, eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
+ integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
+
+eslint@^7.12.1:
+ version "7.20.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7"
+ integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.3.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ file-entry-cache "^6.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash "^4.17.20"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.4"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+execa@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
+fast-glob@^3.1.1:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastq@^1.6.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e"
+ integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==
+ dependencies:
+ reusify "^1.0.4"
+
+figures@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
+ integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-versions@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965"
+ integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==
+ dependencies:
+ semver-regex "^3.1.2"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
+ integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+glob-parent@^5.0.0, glob-parent@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.1.3:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.12.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^11.0.1:
+ version "11.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
+ integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+graceful-fs@^4.1.2:
+ version "4.2.6"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hosted-git-info@^2.1.4:
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+husky@^4.2.3:
+ version "4.3.8"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d"
+ integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==
+ dependencies:
+ chalk "^4.0.0"
+ ci-info "^2.0.0"
+ compare-versions "^3.6.0"
+ cosmiconfig "^7.0.0"
+ find-versions "^4.0.0"
+ opencollective-postinstall "^2.0.2"
+ pkg-dir "^5.0.0"
+ please-upgrade-node "^3.2.0"
+ slash "^3.0.0"
+ which-pm-runs "^1.0.0"
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+internal-slot@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-callable@^1.1.4, is-callable@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
+ integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
+
+is-core-module@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
+ dependencies:
+ has "^1.0.3"
+
+is-date-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.0, is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negative-zero@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-regex@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
+ integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-symbols "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-string@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+ integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
+is-symbol@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
+isarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
+ integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
+ dependencies:
+ array-includes "^3.1.2"
+ object.assign "^4.1.2"
+
+language-subtag-registry@~0.3.2:
+ version "0.3.21"
+ resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
+ integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
+
+language-tags@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
+ integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
+ dependencies:
+ language-subtag-registry "~0.3.2"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lines-and-columns@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+ integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+lint-staged@^10.1.1:
+ version "10.5.4"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665"
+ integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ commander "^6.2.0"
+ cosmiconfig "^7.0.0"
+ debug "^4.2.0"
+ dedent "^0.7.0"
+ enquirer "^2.3.6"
+ execa "^4.1.0"
+ listr2 "^3.2.2"
+ log-symbols "^4.0.0"
+ micromatch "^4.0.2"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+listr2@^3.2.2:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.3.1.tgz#87b57cc0b8541fa794b814c8bcb76f1211cfbf5c"
+ integrity sha512-8Zoxe7s/8nNr4bJ8bdAduHD8uJce+exmMmUWTXlq0WuUdffnH3muisHPHPFtW2vvOfohIsq7FGCaguUxN/h3Iw==
+ dependencies:
+ chalk "^4.1.0"
+ cli-truncate "^2.1.0"
+ figures "^3.2.0"
+ indent-string "^4.0.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.3"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash@^4.17.15, lodash@^4.17.20:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
+log-symbols@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
+ integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
+ dependencies:
+ chalk "^4.0.0"
+
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ dependencies:
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
+
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.2.0:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+normalize-package-data@^2.3.2:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-inspect@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
+ integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6"
+ integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ has "^1.0.3"
+
+object.fromentries@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072"
+ integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ has "^1.0.3"
+
+object.values@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
+ integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ has "^1.0.3"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+opencollective-postinstall@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
+ integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picomatch@^2.0.5, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
+ integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
+ dependencies:
+ find-up "^5.0.0"
+
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^2.0.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
+ integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+queue-microtask@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3"
+ integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==
+
+react-is@^16.8.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+regenerator-runtime@^0.13.4:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+
+regexp.prototype.flags@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
+ integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+regexpp@^3.0.0, regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+rxjs@^6.6.3:
+ version "6.6.3"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
+ integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
+ dependencies:
+ tslib "^1.9.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+semver-regex@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807"
+ integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^7.2.1, semver@^7.3.2:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+side-channel@^1.0.3, side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
+ integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.matchall@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a"
+ integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+ has-symbols "^1.0.1"
+ internal-slot "^1.0.2"
+ regexp.prototype.flags "^1.3.0"
+ side-channel "^1.0.3"
+
+string.prototype.trimend@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
+ integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
+ integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+table@^6.0.4:
+ version "6.0.7"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
+ integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
+ dependencies:
+ ajv "^7.0.2"
+ lodash "^4.17.20"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.0"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+tsconfig-paths@^3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
+ integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.1"
+ minimist "^1.2.0"
+ strip-bom "^3.0.0"
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tsutils@^3.17.1:
+ version "3.20.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
+ integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==
+ dependencies:
+ tslib "^1.8.1"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
+ integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+typescript@^3.8.3:
+ version "3.9.9"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674"
+ integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+v8-compile-cache@^2.0.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
+ integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+which-pm-runs@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
+ integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+ integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==