Przeglądaj źródła

fix: chart dashboard

rodzic
commit
9c3bee4ce3

+ 20
- 6
app/Http/Controllers/DashboardController.php Wyświetl plik

@@ -8,6 +8,7 @@ use App\Models\Product;
8 8
 use App\Models\Transaction;
9 9
 use App\Services\ExpenseService;
10 10
 use App\Services\TransactionService;
11
+use Carbon\Carbon;
11 12
 use Illuminate\Http\Request;
12 13
 use Inertia\Inertia;
13 14
 
@@ -26,30 +27,39 @@ class DashboardController extends Controller
26 27
         $laundries = Laundry::get();
27 28
         $products = Product::get();
28 29
 
30
+        $transactionChartStatistic = Transaction::get()->groupBy([
31
+            fn($transaction) => Carbon::parse($transaction->getRawOriginal('created_at'))->format('Y'),
32
+            fn($transaction) => Carbon::parse($transaction->getRawOriginal('created_at'))->format('M'),
33
+        ]);
34
+        $expenseChartStatistic = Expense::get()->groupBy([
35
+            fn($expense) => Carbon::parse($expense->getRawOriginal('created_at'))->format('Y'),
36
+            fn($expense) => Carbon::parse($expense->getRawOriginal('created_at'))->format('M'),
37
+        ]);
38
+
29 39
         return inertia('home/Index', [
30 40
             'cardStatistics' => [
31 41
                 [
32
-                    'label' => __('words.transaction'),
42
+                    'title' => __('words.transaction'),
33 43
                     'icon' => 'pi pi-shopping-cart',
34 44
                     'amount' => $transactions->count(),
35 45
                     'amountLabel' => __('words.today'),
36 46
                     'value' => (new TransactionService)->totalPriceGroupAsString($transactions),
37 47
                 ],
38 48
                 [
39
-                    'label' => __('words.expense'),
49
+                    'title' => __('words.expense'),
40 50
                     'icon' => 'pi pi-wallet',
41 51
                     'amount' => $expenses->count(),
42 52
                     'amountLabel' => __('words.today'),
43 53
                     'value' => (new ExpenseService)->totalPriceAsString($expenses),
44 54
                 ],
45 55
                 [
46
-                    'label' => __('words.laundry_type'),
56
+                    'title' => __('words.laundry_type'),
47 57
                     'icon' => 'pi pi-table',
48 58
                     'amountLabel' => __('words.total'),
49 59
                     'amount' => $laundries->count(),
50 60
                 ],
51 61
                 [
52
-                    'label' => __('words.product_type'),
62
+                    'title' => __('words.product_type'),
53 63
                     'icon' => 'pi pi-table',
54 64
                     'amountLabel' => __('words.total'),
55 65
                     'amount' => $products->count(),
@@ -57,8 +67,12 @@ class DashboardController extends Controller
57 67
             ],
58 68
             'chartStatistics' => [
59 69
                 [
60
-                    'label' => __('words.transaction_statistic'),
61
-                    'data' => $transactions->groupBy([])
70
+                    'title' => __('words.transaction_statistic'),
71
+                    'data' => (new TransactionService)->statisticData($transactionChartStatistic),
72
+                ],
73
+                [
74
+                    'title' => __('words.expense_statistic'),
75
+                    'data' => (new ExpenseService)->statisticData($expenseChartStatistic),
62 76
                 ],
63 77
             ],
64 78
         ]);

+ 16
- 3
app/Services/ExpenseService.php Wyświetl plik

@@ -2,17 +2,30 @@
2 2
 
3 3
 namespace App\Services;
4 4
 
5
-use Illuminate\Database\Eloquent\Collection;
5
+use Illuminate\Database\Eloquent\Collection as EloquentCollection;
6
+use Illuminate\Support\Collection as SupportCollection;
6 7
 
7 8
 class ExpenseService extends CurrencyFormatService
8 9
 {
9
-    public function totalPrice(Collection $collections)
10
+    public function totalPrice(EloquentCollection $collections)
10 11
     {
11 12
         return $collections->sum(fn($collection) => $collection->getRawOriginal('amount'));
12 13
     }
13 14
 
14
-    public function totalPriceAsString(Collection $collection)
15
+    public function totalPriceAsString(EloquentCollection $collection)
15 16
     {
16 17
         return (new CurrencyFormatService)->setRupiahFormat($this->totalPrice($collection), true);
17 18
     }
19
+
20
+    public function totalPerMonth(EloquentCollection $collections)
21
+    {
22
+        return $collections->transform(fn($collection) => $collection->count());
23
+    }
24
+
25
+    public function statisticData(SupportCollection $collections)
26
+    {
27
+        $collections = $collections->take(-2);
28
+        $collections->transform(fn($collections) => $this->totalPerMonth($collections));
29
+        return $collections;
30
+    }
18 31
 }

+ 17
- 4
app/Services/TransactionService.php Wyświetl plik

@@ -3,8 +3,9 @@
3 3
 namespace App\Services;
4 4
 
5 5
 use App\Services\CurrencyFormatService;
6
-use Illuminate\Database\Eloquent\Collection;
6
+use Illuminate\Database\Eloquent\Collection as EloquentCollection;
7 7
 use Illuminate\Pagination\LengthAwarePaginator;
8
+use Illuminate\Support\Collection as SupportCollection;
8 9
 
9 10
 class TransactionService
10 11
 {
@@ -22,18 +23,30 @@ class TransactionService
22 23
         ]);
23 24
     }
24 25
 
25
-    public function totalPrice(Collection $collections)
26
+    public function totalPrice(EloquentCollection $collections)
26 27
     {
27 28
         return $collections->transform(fn($transactions) => $transactions->totalPrice());
28 29
     }
29 30
 
30
-    public function totalPriceGroup(Collection $collections)
31
+    public function totalPriceGroup(EloquentCollection $collections)
31 32
     {
32 33
         return $this->totalPrice($collections)->sum();
33 34
     }
34 35
 
35
-    public function totalPriceGroupAsString(Collection $collections)
36
+    public function totalPriceGroupAsString(EloquentCollection $collections)
36 37
     {
37 38
         return (new CurrencyFormatService)->setRupiahFormat($this->totalPriceGroup($collections), true);
38 39
     }
40
+
41
+    public function totalPerMonth(EloquentCollection $collections)
42
+    {
43
+        return $collections->transform(fn($collection) => $collection->count());
44
+    }
45
+
46
+    public function statisticData(SupportCollection $collections)
47
+    {
48
+        $collections = $collections->take(-2);
49
+        $collections->transform(fn($collections) => $this->totalPerMonth($collections));
50
+        return $collections;
51
+    }
39 52
 }

+ 22
- 22
composer.lock Wyświetl plik

@@ -1719,16 +1719,16 @@
1719 1719
         },
1720 1720
         {
1721 1721
             "name": "laravel/framework",
1722
-            "version": "v9.7.0",
1722
+            "version": "v9.8.1",
1723 1723
             "source": {
1724 1724
                 "type": "git",
1725 1725
                 "url": "https://github.com/laravel/framework.git",
1726
-                "reference": "54c9696ee3e558ab29317ed6e0cb16bb9db5aad4"
1726
+                "reference": "9f468689964ac80b674a2fe71a56baa7e9e20493"
1727 1727
             },
1728 1728
             "dist": {
1729 1729
                 "type": "zip",
1730
-                "url": "https://api.github.com/repos/laravel/framework/zipball/54c9696ee3e558ab29317ed6e0cb16bb9db5aad4",
1731
-                "reference": "54c9696ee3e558ab29317ed6e0cb16bb9db5aad4",
1730
+                "url": "https://api.github.com/repos/laravel/framework/zipball/9f468689964ac80b674a2fe71a56baa7e9e20493",
1731
+                "reference": "9f468689964ac80b674a2fe71a56baa7e9e20493",
1732 1732
                 "shasum": ""
1733 1733
             },
1734 1734
             "require": {
@@ -1894,20 +1894,20 @@
1894 1894
                 "issues": "https://github.com/laravel/framework/issues",
1895 1895
                 "source": "https://github.com/laravel/framework"
1896 1896
             },
1897
-            "time": "2022-04-05T15:07:51+00:00"
1897
+            "time": "2022-04-12T15:43:03+00:00"
1898 1898
         },
1899 1899
         {
1900 1900
             "name": "laravel/sanctum",
1901
-            "version": "v2.15.0",
1901
+            "version": "v2.15.1",
1902 1902
             "source": {
1903 1903
                 "type": "git",
1904 1904
                 "url": "https://github.com/laravel/sanctum.git",
1905
-                "reference": "5be160413b6f37dcf8758663edeab12d0e806f56"
1905
+                "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473"
1906 1906
             },
1907 1907
             "dist": {
1908 1908
                 "type": "zip",
1909
-                "url": "https://api.github.com/repos/laravel/sanctum/zipball/5be160413b6f37dcf8758663edeab12d0e806f56",
1910
-                "reference": "5be160413b6f37dcf8758663edeab12d0e806f56",
1909
+                "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473",
1910
+                "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473",
1911 1911
                 "shasum": ""
1912 1912
             },
1913 1913
             "require": {
@@ -1959,7 +1959,7 @@
1959 1959
                 "issues": "https://github.com/laravel/sanctum/issues",
1960 1960
                 "source": "https://github.com/laravel/sanctum"
1961 1961
             },
1962
-            "time": "2022-03-28T13:53:05+00:00"
1962
+            "time": "2022-04-08T13:39:49+00:00"
1963 1963
         },
1964 1964
         {
1965 1965
             "name": "laravel/serializable-closure",
@@ -2278,16 +2278,16 @@
2278 2278
         },
2279 2279
         {
2280 2280
             "name": "league/flysystem",
2281
-            "version": "3.0.15",
2281
+            "version": "3.0.16",
2282 2282
             "source": {
2283 2283
                 "type": "git",
2284 2284
                 "url": "https://github.com/thephpleague/flysystem.git",
2285
-                "reference": "3b71cd136dc0331ee87b636b25f4ee339368c718"
2285
+                "reference": "dea729954c596bdb6cdaecba6f73df9f3e2c4255"
2286 2286
             },
2287 2287
             "dist": {
2288 2288
                 "type": "zip",
2289
-                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3b71cd136dc0331ee87b636b25f4ee339368c718",
2290
-                "reference": "3b71cd136dc0331ee87b636b25f4ee339368c718",
2289
+                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dea729954c596bdb6cdaecba6f73df9f3e2c4255",
2290
+                "reference": "dea729954c596bdb6cdaecba6f73df9f3e2c4255",
2291 2291
                 "shasum": ""
2292 2292
             },
2293 2293
             "require": {
@@ -2348,7 +2348,7 @@
2348 2348
             ],
2349 2349
             "support": {
2350 2350
                 "issues": "https://github.com/thephpleague/flysystem/issues",
2351
-                "source": "https://github.com/thephpleague/flysystem/tree/3.0.15"
2351
+                "source": "https://github.com/thephpleague/flysystem/tree/3.0.16"
2352 2352
             },
2353 2353
             "funding": [
2354 2354
                 {
@@ -2364,20 +2364,20 @@
2364 2364
                     "type": "tidelift"
2365 2365
                 }
2366 2366
             ],
2367
-            "time": "2022-04-08T18:36:06+00:00"
2367
+            "time": "2022-04-11T13:32:22+00:00"
2368 2368
         },
2369 2369
         {
2370 2370
             "name": "league/mime-type-detection",
2371
-            "version": "1.9.0",
2371
+            "version": "1.10.0",
2372 2372
             "source": {
2373 2373
                 "type": "git",
2374 2374
                 "url": "https://github.com/thephpleague/mime-type-detection.git",
2375
-                "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69"
2375
+                "reference": "3e4a35d756eedc67096f30240a68a3149120dae7"
2376 2376
             },
2377 2377
             "dist": {
2378 2378
                 "type": "zip",
2379
-                "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69",
2380
-                "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69",
2379
+                "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3e4a35d756eedc67096f30240a68a3149120dae7",
2380
+                "reference": "3e4a35d756eedc67096f30240a68a3149120dae7",
2381 2381
                 "shasum": ""
2382 2382
             },
2383 2383
             "require": {
@@ -2408,7 +2408,7 @@
2408 2408
             "description": "Mime-type detection for Flysystem",
2409 2409
             "support": {
2410 2410
                 "issues": "https://github.com/thephpleague/mime-type-detection/issues",
2411
-                "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0"
2411
+                "source": "https://github.com/thephpleague/mime-type-detection/tree/1.10.0"
2412 2412
             },
2413 2413
             "funding": [
2414 2414
                 {
@@ -2420,7 +2420,7 @@
2420 2420
                     "type": "tidelift"
2421 2421
                 }
2422 2422
             ],
2423
-            "time": "2021-11-21T11:48:40+00:00"
2423
+            "time": "2022-04-11T12:49:04+00:00"
2424 2424
         },
2425 2425
         {
2426 2426
             "name": "maatwebsite/excel",

+ 64
- 32
public/js/resources_js_pages_home_Index_vue.js Wyświetl plik

@@ -333,20 +333,46 @@ __webpack_require__.r(__webpack_exports__);
333 333
   setup: function setup(__props, _ref) {
334 334
     var expose = _ref.expose;
335 335
     expose();
336
-    var basicData = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)({
337
-      labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
338
-      datasets: [{
339
-        label: 'My First dataset',
340
-        backgroundColor: '#42A5F5',
341
-        data: [65, 59, 80, 81, 56, 55, 40]
342
-      }, {
343
-        label: 'My Second dataset',
344
-        backgroundColor: '#FFA726',
345
-        data: [28, 48, 40, 19, 86, 27, 90]
346
-      }]
336
+
337
+    var chartData = function chartData(_chartData) {
338
+      var colors = ['#42A5F5', '#FFA726'];
339
+      var data = {
340
+        datasets: []
341
+      };
342
+      var id = 0;
343
+
344
+      for (var key in _chartData) {
345
+        data.datasets.push({
346
+          label: key,
347
+          backgroundColor: colors[id],
348
+          data: _chartData[key]
349
+        });
350
+        id++;
351
+      }
352
+
353
+      return data;
354
+    };
355
+
356
+    var chartOptions = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)({
357
+      responsive: true,
358
+      maintainAspectRatio: false,
359
+      datasetFill: false,
360
+      scales: {
361
+        y: {
362
+          ticks: {
363
+            beginAtZero: true,
364
+            callback: function callback(label) {
365
+              if (Math.floor(label) === label) {
366
+                return label;
367
+              }
368
+            }
369
+          }
370
+        }
371
+      }
347 372
     });
348 373
     var __returned__ = {
349
-      basicData: basicData,
374
+      chartData: chartData,
375
+      chartOptions: chartOptions,
350 376
       ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,
351 377
       Head: _inertiajs_inertia_vue3__WEBPACK_IMPORTED_MODULE_1__.Head,
352 378
       AppLayout: _layouts_AppLayout_vue__WEBPACK_IMPORTED_MODULE_2__["default"]
@@ -886,9 +912,6 @@ var _hoisted_8 = {
886 912
 var _hoisted_9 = {
887 913
   "class": "col-12 md:col-6"
888 914
 };
889
-
890
-var _hoisted_10 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)("Statistik Transaksi");
891
-
892 915
 function render(_ctx, _cache, $props, $setup, $data, $options) {
893 916
   var _component_Card = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Card");
894 917
 
@@ -903,7 +926,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
903 926
           "class": "h-full"
904 927
         }, {
905 928
           content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
906
-            return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(cardStatistic.label), 1
929
+            return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(cardStatistic.title), 1
907 930
             /* TEXT */
908 931
             ), cardStatistic.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(cardStatistic.value), 1
909 932
             /* TEXT */
@@ -925,22 +948,31 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
925 948
         )]);
926 949
       }), 256
927 950
       /* UNKEYED_FRAGMENT */
928
-      )), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
929
-        title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
930
-          return [_hoisted_10];
931
-        }),
932
-        content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
933
-          return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Chart, {
934
-            type: "bar",
935
-            data: $setup.basicData
936
-          }, null, 8
937
-          /* PROPS */
938
-          , ["data"])];
939
-        }),
940
-        _: 1
941
-        /* STABLE */
942
-
943
-      })])])];
951
+      )), ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($props.chartStatistics, function (chartStatistic) {
952
+        return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Card, null, {
953
+          title: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
954
+            return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(chartStatistic.title), 1
955
+            /* TEXT */
956
+            )];
957
+          }),
958
+          content: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(function () {
959
+            return [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Chart, {
960
+              type: "bar",
961
+              data: $setup.chartData(chartStatistic.data),
962
+              options: $setup.chartOptions
963
+            }, null, 8
964
+            /* PROPS */
965
+            , ["data", "options"])];
966
+          }),
967
+          _: 2
968
+          /* DYNAMIC */
969
+
970
+        }, 1024
971
+        /* DYNAMIC_SLOTS */
972
+        )]);
973
+      }), 256
974
+      /* UNKEYED_FRAGMENT */
975
+      ))])];
944 976
     }),
945 977
     _: 1
946 978
     /* STABLE */

+ 52
- 20
public/js/vue.js Wyświetl plik

@@ -8679,8 +8679,17 @@ function warn(msg, ...args) {
8679 8679
 let activeEffectScope;
8680 8680
 class EffectScope {
8681 8681
     constructor(detached = false) {
8682
+        /**
8683
+         * @internal
8684
+         */
8682 8685
         this.active = true;
8686
+        /**
8687
+         * @internal
8688
+         */
8683 8689
         this.effects = [];
8690
+        /**
8691
+         * @internal
8692
+         */
8684 8693
         this.cleanups = [];
8685 8694
         if (!detached && activeEffectScope) {
8686 8695
             this.parent = activeEffectScope;
@@ -8690,21 +8699,30 @@ class EffectScope {
8690 8699
     }
8691 8700
     run(fn) {
8692 8701
         if (this.active) {
8702
+            const currentEffectScope = activeEffectScope;
8693 8703
             try {
8694 8704
                 activeEffectScope = this;
8695 8705
                 return fn();
8696 8706
             }
8697 8707
             finally {
8698
-                activeEffectScope = this.parent;
8708
+                activeEffectScope = currentEffectScope;
8699 8709
             }
8700 8710
         }
8701 8711
         else if ((true)) {
8702 8712
             warn(`cannot run an inactive effect scope.`);
8703 8713
         }
8704 8714
     }
8715
+    /**
8716
+     * This should only be called on non-detached scopes
8717
+     * @internal
8718
+     */
8705 8719
     on() {
8706 8720
         activeEffectScope = this;
8707 8721
     }
8722
+    /**
8723
+     * This should only be called on non-detached scopes
8724
+     * @internal
8725
+     */
8708 8726
     off() {
8709 8727
         activeEffectScope = this.parent;
8710 8728
     }
@@ -8933,9 +8951,7 @@ function trackEffects(dep, debuggerEventExtraInfo) {
8933 8951
         dep.add(activeEffect);
8934 8952
         activeEffect.deps.push(dep);
8935 8953
         if (( true) && activeEffect.onTrack) {
8936
-            activeEffect.onTrack(Object.assign({
8937
-                effect: activeEffect
8938
-            }, debuggerEventExtraInfo));
8954
+            activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));
8939 8955
         }
8940 8956
     }
8941 8957
 }
@@ -11654,13 +11670,11 @@ function watchEffect(effect, options) {
11654 11670
 }
11655 11671
 function watchPostEffect(effect, options) {
11656 11672
     return doWatch(effect, null, (( true)
11657
-        ? Object.assign(options || {}, { flush: 'post' })
11658
-        : 0));
11673
+        ? Object.assign(Object.assign({}, options), { flush: 'post' }) : 0));
11659 11674
 }
11660 11675
 function watchSyncEffect(effect, options) {
11661 11676
     return doWatch(effect, null, (( true)
11662
-        ? Object.assign(options || {}, { flush: 'sync' })
11663
-        : 0));
11677
+        ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : 0));
11664 11678
 }
11665 11679
 // initial value for watchers to trigger on undefined initial values
11666 11680
 const INITIAL_WATCHER_VALUE = {};
@@ -11975,7 +11989,9 @@ const BaseTransitionImpl = {
11975 11989
             // check mode
11976 11990
             if (( true) &&
11977 11991
                 mode &&
11978
-                mode !== 'in-out' && mode !== 'out-in' && mode !== 'default') {
11992
+                mode !== 'in-out' &&
11993
+                mode !== 'out-in' &&
11994
+                mode !== 'default') {
11979 11995
                 warn(`invalid <transition> mode: ${mode}`);
11980 11996
             }
11981 11997
             // at this point children has a guaranteed length of 1.
@@ -12202,20 +12218,24 @@ function setTransitionHooks(vnode, hooks) {
12202 12218
         vnode.transition = hooks;
12203 12219
     }
12204 12220
 }
12205
-function getTransitionRawChildren(children, keepComment = false) {
12221
+function getTransitionRawChildren(children, keepComment = false, parentKey) {
12206 12222
     let ret = [];
12207 12223
     let keyedFragmentCount = 0;
12208 12224
     for (let i = 0; i < children.length; i++) {
12209
-        const child = children[i];
12225
+        let child = children[i];
12226
+        // #5360 inherit parent key in case of <template v-for>
12227
+        const key = parentKey == null
12228
+            ? child.key
12229
+            : String(parentKey) + String(child.key != null ? child.key : i);
12210 12230
         // handle fragment children case, e.g. v-for
12211 12231
         if (child.type === Fragment) {
12212 12232
             if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
12213 12233
                 keyedFragmentCount++;
12214
-            ret = ret.concat(getTransitionRawChildren(child.children, keepComment));
12234
+            ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
12215 12235
         }
12216 12236
         // comment placeholders should be skipped, e.g. v-if
12217 12237
         else if (keepComment || child.type !== Comment) {
12218
-            ret.push(child);
12238
+            ret.push(key != null ? cloneVNode(child, { key }) : child);
12219 12239
         }
12220 12240
     }
12221 12241
     // #1126 if a transition children list contains multiple sub fragments, these
@@ -13185,6 +13205,10 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) {
13185 13205
             const propsToUpdate = instance.vnode.dynamicProps;
13186 13206
             for (let i = 0; i < propsToUpdate.length; i++) {
13187 13207
                 let key = propsToUpdate[i];
13208
+                // skip if the prop key is a declared emit event listener
13209
+                if (isEmitListener(instance.emitsOptions, key)) {
13210
+                    continue;
13211
+                }
13188 13212
                 // PROPS flag guarantees rawProps to be non-null
13189 13213
                 const value = rawProps[key];
13190 13214
                 if (options) {
@@ -13710,7 +13734,8 @@ function withDirectives(vnode, directives) {
13710 13734
         ( true) && warn(`withDirectives can only be used inside render functions.`);
13711 13735
         return vnode;
13712 13736
     }
13713
-    const instance = internalInstance.proxy;
13737
+    const instance = getExposeProxy(internalInstance) ||
13738
+        internalInstance.proxy;
13714 13739
     const bindings = vnode.dirs || (vnode.dirs = []);
13715 13740
     for (let i = 0; i < directives.length; i++) {
13716 13741
         let [dir, value, arg, modifiers = _vue_shared__WEBPACK_IMPORTED_MODULE_1__.EMPTY_OBJ] = directives[i];
@@ -13782,6 +13807,9 @@ function createAppContext() {
13782 13807
 let uid = 0;
13783 13808
 function createAppAPI(render, hydrate) {
13784 13809
     return function createApp(rootComponent, rootProps = null) {
13810
+        if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isFunction)(rootComponent)) {
13811
+            rootComponent = Object.assign({}, rootComponent);
13812
+        }
13785 13813
         if (rootProps != null && !(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isObject)(rootProps)) {
13786 13814
             ( true) && warn(`root props passed to app.mount() must be an object.`);
13787 13815
             rootProps = null;
@@ -13979,6 +14007,9 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
13979 14007
                         if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(existing)) {
13980 14008
                             if (_isString) {
13981 14009
                                 refs[ref] = [refValue];
14010
+                                if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(setupState, ref)) {
14011
+                                    setupState[ref] = refs[ref];
14012
+                                }
13982 14013
                             }
13983 14014
                             else {
13984 14015
                                 ref.value = [refValue];
@@ -14355,7 +14386,7 @@ function startMeasure(instance, type) {
14355 14386
         perf.mark(`vue-${type}-${instance.uid}`);
14356 14387
     }
14357 14388
     if (true) {
14358
-        devtoolsPerfStart(instance, type, supported ? perf.now() : Date.now());
14389
+        devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
14359 14390
     }
14360 14391
 }
14361 14392
 function endMeasure(instance, type) {
@@ -14368,7 +14399,7 @@ function endMeasure(instance, type) {
14368 14399
         perf.clearMarks(endTag);
14369 14400
     }
14370 14401
     if (true) {
14371
-        devtoolsPerfEnd(instance, type, supported ? perf.now() : Date.now());
14402
+        devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
14372 14403
     }
14373 14404
 }
14374 14405
 function isSupported() {
@@ -16793,9 +16824,10 @@ const PublicInstanceProxyHandlers = {
16793 16824
     },
16794 16825
     defineProperty(target, key, descriptor) {
16795 16826
         if (descriptor.get != null) {
16796
-            this.set(target, key, descriptor.get(), null);
16827
+            // invalidate key cache of a getter based property #5417
16828
+            target.$.accessCache[key] = 0;
16797 16829
         }
16798
-        else if (descriptor.value != null) {
16830
+        else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(descriptor, 'value')) {
16799 16831
             this.set(target, key, descriptor.value, null);
16800 16832
         }
16801 16833
         return Reflect.defineProperty(target, key, descriptor);
@@ -17686,7 +17718,7 @@ function isMemoSame(cached, memo) {
17686 17718
 }
17687 17719
 
17688 17720
 // Core API ------------------------------------------------------------------
17689
-const version = "3.2.31";
17721
+const version = "3.2.32";
17690 17722
 const _ssrUtils = {
17691 17723
     createComponentInstance,
17692 17724
     setupComponent,
@@ -57950,7 +57982,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
57950 57982
 /******/ 		// This function allow to reference async chunks
57951 57983
 /******/ 		__webpack_require__.u = (chunkId) => {
57952 57984
 /******/ 			// return url for filenames based on template
57953
-/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_Access_vue":"a18ed856923fae52","resources_js_pages_auth_ForgotPassword_vue":"c9f401672b6f2423","resources_js_pages_auth_Login_vue":"cb0cb153b976d2c1","resources_js_pages_auth_ResetPassword_vue":"1078df5cebf2e3c6","resources_js_pages_auth_VerifyEmail_vue":"a0ee23b849c826b1","resources_js_pages_customer_Create_vue":"4eb00b7c0775dd1a","resources_js_pages_customer_Edit_vue":"407b38d3ec33b8b6","resources_js_pages_customer_Index_vue":"eafddf3436e2b29d","resources_js_pages_customer_TableHeader_js":"71be5afdca048a9c","resources_js_pages_discount_Index_vue":"327c24c11bd53001","resources_js_pages_expense_Create_vue":"9f6647ce9c66b103","resources_js_pages_expense_Index_vue":"a5e56c318045f4f1","resources_js_pages_expense_Show_vue":"0c0ebfedc527579a","resources_js_pages_expense_TableHeader_js":"72e3dee74175b1c0","resources_js_pages_home_Index_vue":"12befeb6d38abe88","resources_js_pages_laundry_Create_vue":"17d4fff3f6a0d4e0","resources_js_pages_laundry_Edit_vue":"fe0751be3876e35b","resources_js_pages_laundry_Index_vue":"25198930a0d0f20d","resources_js_pages_laundry_TableHeader_js":"494e577855bbcaf6","resources_js_pages_mutation_Report_vue":"f819d667c2cadeb7","resources_js_pages_mutation_TableHeader_js":"82c2999bd7d098a1","resources_js_pages_outlet_Create_vue":"0326fbf87091b62e","resources_js_pages_outlet_Edit_vue":"6dd0ae9ed18a73a6","resources_js_pages_outlet_Index_vue":"cb5a9b7dfa2a0b91","resources_js_pages_outlet_TableHeader_js":"498bf7e64bc0d0c4","resources_js_pages_product_Create_vue":"96daef068f670441","resources_js_pages_product_Edit_vue":"826dfb5798505c8c","resources_js_pages_product_Index_vue":"f5218c4863b86c19","resources_js_pages_product_TableHeader_js":"b8eaaa9de25a2322","resources_js_pages_transaction_Create_vue":"6008f897e5067e30","resources_js_pages_transaction_Index_vue":"19eb0dbf87a58e45","resources_js_pages_transaction_Report_vue":"ecb8a20a69a65ae7","resources_js_pages_transaction_Show_vue":"ac25925f62d145de","resources_js_pages_transaction_TableHeader_js":"be63e672e103818b","resources_js_pages_user_Create_vue":"21f3591e9d0b4199","resources_js_pages_user_Edit_vue":"76820bdf6c8bfc24","resources_js_pages_user_Index_vue":"4433ed4ee64b6df6","resources_js_pages_user_Show_vue":"b8e5b5a526f42dbd","resources_js_pages_user_TableHeader_js":"5653ecbcd70fd235"}[chunkId] + "";
57985
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"10c6b388645ceb22","resources_js_pages_Access_vue":"a18ed856923fae52","resources_js_pages_auth_ForgotPassword_vue":"c9f401672b6f2423","resources_js_pages_auth_Login_vue":"cb0cb153b976d2c1","resources_js_pages_auth_ResetPassword_vue":"1078df5cebf2e3c6","resources_js_pages_auth_VerifyEmail_vue":"a0ee23b849c826b1","resources_js_pages_customer_Create_vue":"4eb00b7c0775dd1a","resources_js_pages_customer_Edit_vue":"407b38d3ec33b8b6","resources_js_pages_customer_Index_vue":"eafddf3436e2b29d","resources_js_pages_customer_TableHeader_js":"71be5afdca048a9c","resources_js_pages_discount_Index_vue":"327c24c11bd53001","resources_js_pages_expense_Create_vue":"9f6647ce9c66b103","resources_js_pages_expense_Index_vue":"a5e56c318045f4f1","resources_js_pages_expense_Show_vue":"0c0ebfedc527579a","resources_js_pages_expense_TableHeader_js":"72e3dee74175b1c0","resources_js_pages_home_Index_vue":"566746c84bea4d9c","resources_js_pages_laundry_Create_vue":"17d4fff3f6a0d4e0","resources_js_pages_laundry_Edit_vue":"fe0751be3876e35b","resources_js_pages_laundry_Index_vue":"25198930a0d0f20d","resources_js_pages_laundry_TableHeader_js":"494e577855bbcaf6","resources_js_pages_mutation_Report_vue":"f819d667c2cadeb7","resources_js_pages_mutation_TableHeader_js":"82c2999bd7d098a1","resources_js_pages_outlet_Create_vue":"0326fbf87091b62e","resources_js_pages_outlet_Edit_vue":"6dd0ae9ed18a73a6","resources_js_pages_outlet_Index_vue":"cb5a9b7dfa2a0b91","resources_js_pages_outlet_TableHeader_js":"498bf7e64bc0d0c4","resources_js_pages_product_Create_vue":"96daef068f670441","resources_js_pages_product_Edit_vue":"826dfb5798505c8c","resources_js_pages_product_Index_vue":"f5218c4863b86c19","resources_js_pages_product_TableHeader_js":"b8eaaa9de25a2322","resources_js_pages_transaction_Create_vue":"6008f897e5067e30","resources_js_pages_transaction_Index_vue":"19eb0dbf87a58e45","resources_js_pages_transaction_Report_vue":"ecb8a20a69a65ae7","resources_js_pages_transaction_Show_vue":"ac25925f62d145de","resources_js_pages_transaction_TableHeader_js":"be63e672e103818b","resources_js_pages_user_Create_vue":"21f3591e9d0b4199","resources_js_pages_user_Edit_vue":"76820bdf6c8bfc24","resources_js_pages_user_Index_vue":"4433ed4ee64b6df6","resources_js_pages_user_Show_vue":"b8e5b5a526f42dbd","resources_js_pages_user_TableHeader_js":"5653ecbcd70fd235"}[chunkId] + "";
57954 57986
 /******/ 		};
57955 57987
 /******/ 	})();
57956 57988
 /******/ 	

+ 40
- 17
resources/js/pages/home/Index.vue Wyświetl plik

@@ -8,20 +8,43 @@ defineProps({
8 8
   chartStatistics: Object,
9 9
 })
10 10
 
11
-const basicData = ref({
12
-  labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
13
-  datasets: [
14
-    {
15
-      label: 'My First dataset',
16
-      backgroundColor: '#42A5F5',
17
-      data: [65, 59, 80, 81, 56, 55, 40],
18
-    },
19
-    {
20
-      label: 'My Second dataset',
21
-      backgroundColor: '#FFA726',
22
-      data: [28, 48, 40, 19, 86, 27, 90],
11
+const chartData = (chartData) => {
12
+  const colors = ['#42A5F5', '#FFA726']
13
+
14
+  const data = {
15
+    datasets: [],
16
+  }
17
+
18
+  let id = 0
19
+  for (const key in chartData) {
20
+    data.datasets.push({
21
+      label: key,
22
+      backgroundColor: colors[id],
23
+      data: chartData[key],
24
+    })
25
+
26
+    id++
27
+  }
28
+
29
+  return data
30
+}
31
+
32
+const chartOptions = ref({
33
+  responsive: true,
34
+  maintainAspectRatio: false,
35
+  datasetFill: false,
36
+  scales: {
37
+    y: {
38
+      ticks: {
39
+        beginAtZero: true,
40
+        callback: function (label) {
41
+          if (Math.floor(label) === label) {
42
+            return label
43
+          }
44
+        },
45
+      },
23 46
     },
24
-  ],
47
+  },
25 48
 })
26 49
 </script>
27 50
 
@@ -35,7 +58,7 @@ const basicData = ref({
35 58
           <template #content>
36 59
             <div class="flex justify-content-between mb-3">
37 60
               <div>
38
-                <span class="block text-500 font-medium mb-3">{{ cardStatistic.label }}</span>
61
+                <span class="block text-500 font-medium mb-3">{{ cardStatistic.title }}</span>
39 62
                 <div v-if="cardStatistic.value" class="text-900 font-medium text-xl">{{ cardStatistic.value }}</div>
40 63
               </div>
41 64
               <div
@@ -51,11 +74,11 @@ const basicData = ref({
51 74
         </Card>
52 75
       </div>
53 76
 
54
-      <div class="col-12 md:col-6">
77
+      <div v-for="chartStatistic in chartStatistics" class="col-12 md:col-6">
55 78
         <Card>
56
-          <template #title>Statistik Transaksi</template>
79
+          <template #title>{{ chartStatistic.title }}</template>
57 80
           <template #content>
58
-            <Chart type="bar" :data="basicData" />
81
+            <Chart type="bar" :data="chartData(chartStatistic.data)" :options="chartOptions" />
59 82
           </template>
60 83
         </Card>
61 84
       </div>

+ 196
- 298
yarn.lock Wyświetl plik

@@ -22,30 +22,30 @@
22 22
   integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==
23 23
 
24 24
 "@babel/core@^7.15.8":
25
-  version "7.17.8"
26
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
27
-  integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
25
+  version "7.17.9"
26
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe"
27
+  integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==
28 28
   dependencies:
29 29
     "@ampproject/remapping" "^2.1.0"
30 30
     "@babel/code-frame" "^7.16.7"
31
-    "@babel/generator" "^7.17.7"
31
+    "@babel/generator" "^7.17.9"
32 32
     "@babel/helper-compilation-targets" "^7.17.7"
33 33
     "@babel/helper-module-transforms" "^7.17.7"
34
-    "@babel/helpers" "^7.17.8"
35
-    "@babel/parser" "^7.17.8"
34
+    "@babel/helpers" "^7.17.9"
35
+    "@babel/parser" "^7.17.9"
36 36
     "@babel/template" "^7.16.7"
37
-    "@babel/traverse" "^7.17.3"
37
+    "@babel/traverse" "^7.17.9"
38 38
     "@babel/types" "^7.17.0"
39 39
     convert-source-map "^1.7.0"
40 40
     debug "^4.1.0"
41 41
     gensync "^1.0.0-beta.2"
42
-    json5 "^2.1.2"
42
+    json5 "^2.2.1"
43 43
     semver "^6.3.0"
44 44
 
45
-"@babel/generator@^7.17.3", "@babel/generator@^7.17.7":
46
-  version "7.17.7"
47
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad"
48
-  integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==
45
+"@babel/generator@^7.17.9":
46
+  version "7.17.9"
47
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc"
48
+  integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==
49 49
   dependencies:
50 50
     "@babel/types" "^7.17.0"
51 51
     jsesc "^2.5.1"
@@ -77,14 +77,14 @@
77 77
     semver "^6.3.0"
78 78
 
79 79
 "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6":
80
-  version "7.17.6"
81
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9"
82
-  integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==
80
+  version "7.17.9"
81
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d"
82
+  integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==
83 83
   dependencies:
84 84
     "@babel/helper-annotate-as-pure" "^7.16.7"
85 85
     "@babel/helper-environment-visitor" "^7.16.7"
86
-    "@babel/helper-function-name" "^7.16.7"
87
-    "@babel/helper-member-expression-to-functions" "^7.16.7"
86
+    "@babel/helper-function-name" "^7.17.9"
87
+    "@babel/helper-member-expression-to-functions" "^7.17.7"
88 88
     "@babel/helper-optimise-call-expression" "^7.16.7"
89 89
     "@babel/helper-replace-supers" "^7.16.7"
90 90
     "@babel/helper-split-export-declaration" "^7.16.7"
@@ -125,21 +125,13 @@
125 125
   dependencies:
126 126
     "@babel/types" "^7.16.7"
127 127
 
128
-"@babel/helper-function-name@^7.16.7":
129
-  version "7.16.7"
130
-  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
131
-  integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
128
+"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9":
129
+  version "7.17.9"
130
+  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
131
+  integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
132 132
   dependencies:
133
-    "@babel/helper-get-function-arity" "^7.16.7"
134 133
     "@babel/template" "^7.16.7"
135
-    "@babel/types" "^7.16.7"
136
-
137
-"@babel/helper-get-function-arity@^7.16.7":
138
-  version "7.16.7"
139
-  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
140
-  integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
141
-  dependencies:
142
-    "@babel/types" "^7.16.7"
134
+    "@babel/types" "^7.17.0"
143 135
 
144 136
 "@babel/helper-hoist-variables@^7.16.7":
145 137
   version "7.16.7"
@@ -148,7 +140,7 @@
148 140
   dependencies:
149 141
     "@babel/types" "^7.16.7"
150 142
 
151
-"@babel/helper-member-expression-to-functions@^7.16.7":
143
+"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7":
152 144
   version "7.17.7"
153 145
   resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4"
154 146
   integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
@@ -249,28 +241,28 @@
249 241
     "@babel/traverse" "^7.16.8"
250 242
     "@babel/types" "^7.16.8"
251 243
 
252
-"@babel/helpers@^7.17.8":
253
-  version "7.17.8"
254
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106"
255
-  integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==
244
+"@babel/helpers@^7.17.9":
245
+  version "7.17.9"
246
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a"
247
+  integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==
256 248
   dependencies:
257 249
     "@babel/template" "^7.16.7"
258
-    "@babel/traverse" "^7.17.3"
250
+    "@babel/traverse" "^7.17.9"
259 251
     "@babel/types" "^7.17.0"
260 252
 
261 253
 "@babel/highlight@^7.16.7":
262
-  version "7.16.10"
263
-  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
264
-  integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
254
+  version "7.17.9"
255
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
256
+  integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
265 257
   dependencies:
266 258
     "@babel/helper-validator-identifier" "^7.16.7"
267 259
     chalk "^2.0.0"
268 260
     js-tokens "^4.0.0"
269 261
 
270
-"@babel/parser@^7.1.0", "@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8":
271
-  version "7.17.8"
272
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240"
273
-  integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==
262
+"@babel/parser@^7.1.0", "@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
263
+  version "7.17.9"
264
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef"
265
+  integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
274 266
 
275 267
 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
276 268
   version "7.16.7"
@@ -635,9 +627,9 @@
635 627
     babel-plugin-dynamic-import-node "^2.3.3"
636 628
 
637 629
 "@babel/plugin-transform-modules-commonjs@^7.16.8":
638
-  version "7.17.7"
639
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19"
640
-  integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==
630
+  version "7.17.9"
631
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6"
632
+  integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==
641 633
   dependencies:
642 634
     "@babel/helper-module-transforms" "^7.17.7"
643 635
     "@babel/helper-plugin-utils" "^7.16.7"
@@ -700,11 +692,11 @@
700 692
     "@babel/helper-plugin-utils" "^7.16.7"
701 693
 
702 694
 "@babel/plugin-transform-regenerator@^7.16.7":
703
-  version "7.16.7"
704
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
705
-  integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
695
+  version "7.17.9"
696
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c"
697
+  integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==
706 698
   dependencies:
707
-    regenerator-transform "^0.14.2"
699
+    regenerator-transform "^0.15.0"
708 700
 
709 701
 "@babel/plugin-transform-reserved-words@^7.16.7":
710 702
   version "7.16.7"
@@ -868,9 +860,9 @@
868 860
     esutils "^2.0.2"
869 861
 
870 862
 "@babel/runtime@^7.15.4", "@babel/runtime@^7.8.4":
871
-  version "7.17.8"
872
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
873
-  integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
863
+  version "7.17.9"
864
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
865
+  integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
874 866
   dependencies:
875 867
     regenerator-runtime "^0.13.4"
876 868
 
@@ -883,18 +875,18 @@
883 875
     "@babel/parser" "^7.16.7"
884 876
     "@babel/types" "^7.16.7"
885 877
 
886
-"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3":
887
-  version "7.17.3"
888
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
889
-  integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
878
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9":
879
+  version "7.17.9"
880
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d"
881
+  integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==
890 882
   dependencies:
891 883
     "@babel/code-frame" "^7.16.7"
892
-    "@babel/generator" "^7.17.3"
884
+    "@babel/generator" "^7.17.9"
893 885
     "@babel/helper-environment-visitor" "^7.16.7"
894
-    "@babel/helper-function-name" "^7.16.7"
886
+    "@babel/helper-function-name" "^7.17.9"
895 887
     "@babel/helper-hoist-variables" "^7.16.7"
896 888
     "@babel/helper-split-export-declaration" "^7.16.7"
897
-    "@babel/parser" "^7.17.3"
889
+    "@babel/parser" "^7.17.9"
898 890
     "@babel/types" "^7.17.0"
899 891
     debug "^4.1.0"
900 892
     globals "^11.1.0"
@@ -954,6 +946,11 @@
954 946
     "@jridgewell/resolve-uri" "^3.0.3"
955 947
     "@jridgewell/sourcemap-codec" "^1.4.10"
956 948
 
949
+"@leichtgewicht/ip-codec@^2.0.1":
950
+  version "2.0.3"
951
+  resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0"
952
+  integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==
953
+
957 954
 "@nodelib/fs.scandir@2.1.5":
958 955
   version "2.1.5"
959 956
   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1234,102 +1231,102 @@
1234 1231
   resolved "https://registry.yarnpkg.com/@types/svgo/-/svgo-1.3.6.tgz#9db00a7ddf9b26ad2feb6b834bef1818677845e1"
1235 1232
   integrity sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==
1236 1233
 
1237
-"@types/ws@^8.2.2":
1234
+"@types/ws@^8.5.1":
1238 1235
   version "8.5.3"
1239 1236
   resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
1240 1237
   integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
1241 1238
   dependencies:
1242 1239
     "@types/node" "*"
1243 1240
 
1244
-"@vue/compiler-core@3.2.31":
1245
-  version "3.2.31"
1246
-  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.31.tgz#d38f06c2cf845742403b523ab4596a3fda152e89"
1247
-  integrity sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==
1241
+"@vue/compiler-core@3.2.32":
1242
+  version "3.2.32"
1243
+  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.32.tgz#a0be08214c55ae48092b413d8b552c0573e3a883"
1244
+  integrity sha512-bRQ8Rkpm/aYFElDWtKkTPHeLnX5pEkNxhPUcqu5crEJIilZH0yeFu/qUAcV4VfSE2AudNPkQSOwMZofhnuutmA==
1248 1245
   dependencies:
1249 1246
     "@babel/parser" "^7.16.4"
1250
-    "@vue/shared" "3.2.31"
1247
+    "@vue/shared" "3.2.32"
1251 1248
     estree-walker "^2.0.2"
1252 1249
     source-map "^0.6.1"
1253 1250
 
1254
-"@vue/compiler-dom@3.2.31":
1255
-  version "3.2.31"
1256
-  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz#b1b7dfad55c96c8cc2b919cd7eb5fd7e4ddbf00e"
1257
-  integrity sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==
1251
+"@vue/compiler-dom@3.2.32":
1252
+  version "3.2.32"
1253
+  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.32.tgz#8ddae1ee463c18c5c3353c4716ec7c84ee29e5ad"
1254
+  integrity sha512-maa3PNB/NxR17h2hDQfcmS02o1f9r9QIpN1y6fe8tWPrS1E4+q8MqrvDDQNhYVPd84rc3ybtyumrgm9D5Rf/kg==
1258 1255
   dependencies:
1259
-    "@vue/compiler-core" "3.2.31"
1260
-    "@vue/shared" "3.2.31"
1256
+    "@vue/compiler-core" "3.2.32"
1257
+    "@vue/shared" "3.2.32"
1261 1258
 
1262
-"@vue/compiler-sfc@3.2.31":
1263
-  version "3.2.31"
1264
-  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz#d02b29c3fe34d599a52c5ae1c6937b4d69f11c2f"
1265
-  integrity sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==
1259
+"@vue/compiler-sfc@3.2.32":
1260
+  version "3.2.32"
1261
+  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.32.tgz#63e09762812b985aa97876fb5cc3265ba8990a8a"
1262
+  integrity sha512-uO6+Gh3AVdWm72lRRCjMr8nMOEqc6ezT9lWs5dPzh1E9TNaJkMYPaRtdY9flUv/fyVQotkfjY/ponjfR+trPSg==
1266 1263
   dependencies:
1267 1264
     "@babel/parser" "^7.16.4"
1268
-    "@vue/compiler-core" "3.2.31"
1269
-    "@vue/compiler-dom" "3.2.31"
1270
-    "@vue/compiler-ssr" "3.2.31"
1271
-    "@vue/reactivity-transform" "3.2.31"
1272
-    "@vue/shared" "3.2.31"
1265
+    "@vue/compiler-core" "3.2.32"
1266
+    "@vue/compiler-dom" "3.2.32"
1267
+    "@vue/compiler-ssr" "3.2.32"
1268
+    "@vue/reactivity-transform" "3.2.32"
1269
+    "@vue/shared" "3.2.32"
1273 1270
     estree-walker "^2.0.2"
1274 1271
     magic-string "^0.25.7"
1275 1272
     postcss "^8.1.10"
1276 1273
     source-map "^0.6.1"
1277 1274
 
1278
-"@vue/compiler-ssr@3.2.31":
1279
-  version "3.2.31"
1280
-  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz#4fa00f486c9c4580b40a4177871ebbd650ecb99c"
1281
-  integrity sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==
1275
+"@vue/compiler-ssr@3.2.32":
1276
+  version "3.2.32"
1277
+  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.32.tgz#06cf7539c483ba4a25b30bd6741e440c222d4c02"
1278
+  integrity sha512-ZklVUF/SgTx6yrDUkaTaBL/JMVOtSocP+z5Xz/qIqqLdW/hWL90P+ob/jOQ0Xc/om57892Q7sRSrex0wujOL2Q==
1282 1279
   dependencies:
1283
-    "@vue/compiler-dom" "3.2.31"
1284
-    "@vue/shared" "3.2.31"
1280
+    "@vue/compiler-dom" "3.2.32"
1281
+    "@vue/shared" "3.2.32"
1285 1282
 
1286
-"@vue/reactivity-transform@3.2.31":
1287
-  version "3.2.31"
1288
-  resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz#0f5b25c24e70edab2b613d5305c465b50fc00911"
1289
-  integrity sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==
1283
+"@vue/reactivity-transform@3.2.32":
1284
+  version "3.2.32"
1285
+  resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.32.tgz#974fd2a1e682e962fbc5840be8432ac4ab8650d3"
1286
+  integrity sha512-CW1W9zaJtE275tZSWIfQKiPG0iHpdtSlmTqYBu7Y62qvtMgKG5yOxtvBs4RlrZHlaqFSE26avLAgQiTp4YHozw==
1290 1287
   dependencies:
1291 1288
     "@babel/parser" "^7.16.4"
1292
-    "@vue/compiler-core" "3.2.31"
1293
-    "@vue/shared" "3.2.31"
1289
+    "@vue/compiler-core" "3.2.32"
1290
+    "@vue/shared" "3.2.32"
1294 1291
     estree-walker "^2.0.2"
1295 1292
     magic-string "^0.25.7"
1296 1293
 
1297
-"@vue/reactivity@3.2.31":
1298
-  version "3.2.31"
1299
-  resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.31.tgz#fc90aa2cdf695418b79e534783aca90d63a46bbd"
1300
-  integrity sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==
1294
+"@vue/reactivity@3.2.32":
1295
+  version "3.2.32"
1296
+  resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.32.tgz#a859c8ab28a297d14a46cbd450bf70b3f6f87fac"
1297
+  integrity sha512-4zaDumuyDqkuhbb63hRd+YHFGopW7srFIWesLUQ2su/rJfWrSq3YUvoKAJE8Eu1EhZ2Q4c1NuwnEreKj1FkDxA==
1301 1298
   dependencies:
1302
-    "@vue/shared" "3.2.31"
1299
+    "@vue/shared" "3.2.32"
1303 1300
 
1304
-"@vue/runtime-core@3.2.31":
1305
-  version "3.2.31"
1306
-  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.31.tgz#9d284c382f5f981b7a7b5971052a1dc4ef39ac7a"
1307
-  integrity sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==
1301
+"@vue/runtime-core@3.2.32":
1302
+  version "3.2.32"
1303
+  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.32.tgz#8f8875dc032f99991bafb72070327ae5584a08dd"
1304
+  integrity sha512-uKKzK6LaCnbCJ7rcHvsK0azHLGpqs+Vi9B28CV1mfWVq1F3Bj8Okk3cX+5DtD06aUh4V2bYhS2UjjWiUUKUF0w==
1308 1305
   dependencies:
1309
-    "@vue/reactivity" "3.2.31"
1310
-    "@vue/shared" "3.2.31"
1306
+    "@vue/reactivity" "3.2.32"
1307
+    "@vue/shared" "3.2.32"
1311 1308
 
1312
-"@vue/runtime-dom@3.2.31":
1313
-  version "3.2.31"
1314
-  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz#79ce01817cb3caf2c9d923f669b738d2d7953eff"
1315
-  integrity sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==
1309
+"@vue/runtime-dom@3.2.32":
1310
+  version "3.2.32"
1311
+  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.32.tgz#53a8be5c9d72105faf4d11d10202063e9a29c39c"
1312
+  integrity sha512-AmlIg+GPqjkNoADLjHojEX5RGcAg+TsgXOOcUrtDHwKvA8mO26EnLQLB8nylDjU6AMJh2CIYn8NEgyOV5ZIScQ==
1316 1313
   dependencies:
1317
-    "@vue/runtime-core" "3.2.31"
1318
-    "@vue/shared" "3.2.31"
1314
+    "@vue/runtime-core" "3.2.32"
1315
+    "@vue/shared" "3.2.32"
1319 1316
     csstype "^2.6.8"
1320 1317
 
1321
-"@vue/server-renderer@3.2.31":
1322
-  version "3.2.31"
1323
-  resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.31.tgz#201e9d6ce735847d5989403af81ef80960da7141"
1324
-  integrity sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==
1318
+"@vue/server-renderer@3.2.32":
1319
+  version "3.2.32"
1320
+  resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.32.tgz#432e0cb766feabe3b97956ae37b8f75c239f2c37"
1321
+  integrity sha512-TYKpZZfRJpGTTiy/s6bVYwQJpAUx3G03z4G7/3O18M11oacrMTVHaHjiPuPqf3xQtY8R4LKmQ3EOT/DRCA/7Wg==
1325 1322
   dependencies:
1326
-    "@vue/compiler-ssr" "3.2.31"
1327
-    "@vue/shared" "3.2.31"
1323
+    "@vue/compiler-ssr" "3.2.32"
1324
+    "@vue/shared" "3.2.32"
1328 1325
 
1329
-"@vue/shared@3.2.31":
1330
-  version "3.2.31"
1331
-  resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.31.tgz#c90de7126d833dcd3a4c7534d534be2fb41faa4e"
1332
-  integrity sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==
1326
+"@vue/shared@3.2.32":
1327
+  version "3.2.32"
1328
+  resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.32.tgz#1ca0c3b8c03a5e24129156e171df736b2c1d645f"
1329
+  integrity sha512-bjcixPErUsAnTQRQX4Z5IQnICYjIfNCyCl8p29v1M6kfVzvwOICPw+dz48nNuWlTOOx2RHhzHdazJibE8GSnsw==
1333 1330
 
1334 1331
 "@webassemblyjs/ast@1.11.1":
1335 1332
   version "1.11.1"
@@ -1505,14 +1502,6 @@ adjust-sourcemap-loader@^4.0.0:
1505 1502
     loader-utils "^2.0.0"
1506 1503
     regex-parser "^2.2.11"
1507 1504
 
1508
-aggregate-error@^3.0.0:
1509
-  version "3.1.0"
1510
-  resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
1511
-  integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
1512
-  dependencies:
1513
-    clean-stack "^2.0.0"
1514
-    indent-string "^4.0.0"
1515
-
1516 1505
 ajv-formats@^2.1.1:
1517 1506
   version "2.1.1"
1518 1507
   resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
@@ -1567,11 +1556,6 @@ ansi-regex@^5.0.1:
1567 1556
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
1568 1557
   integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
1569 1558
 
1570
-ansi-regex@^6.0.1:
1571
-  version "6.0.1"
1572
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
1573
-  integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
1574
-
1575 1559
 ansi-styles@^2.2.1:
1576 1560
   version "2.2.1"
1577 1561
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@@ -1604,7 +1588,7 @@ array-flatten@1.1.1:
1604 1588
   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
1605 1589
   integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
1606 1590
 
1607
-array-flatten@^2.1.0:
1591
+array-flatten@^2.1.2:
1608 1592
   version "2.1.2"
1609 1593
   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
1610 1594
   integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
@@ -1777,17 +1761,15 @@ body-parser@1.19.2:
1777 1761
     raw-body "2.4.3"
1778 1762
     type-is "~1.6.18"
1779 1763
 
1780
-bonjour@^3.5.0:
1781
-  version "3.5.0"
1782
-  resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
1783
-  integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
1764
+bonjour-service@^1.0.11:
1765
+  version "1.0.11"
1766
+  resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.11.tgz#5418e5c1ac91c89a406f853a942e7892829c0d89"
1767
+  integrity sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==
1784 1768
   dependencies:
1785
-    array-flatten "^2.1.0"
1786
-    deep-equal "^1.0.1"
1769
+    array-flatten "^2.1.2"
1787 1770
     dns-equal "^1.0.0"
1788
-    dns-txt "^2.0.2"
1789
-    multicast-dns "^6.0.1"
1790
-    multicast-dns-service-types "^1.1.0"
1771
+    fast-deep-equal "^3.1.3"
1772
+    multicast-dns "^7.2.4"
1791 1773
 
1792 1774
 boolbase@^1.0.0:
1793 1775
   version "1.0.0"
@@ -1966,11 +1948,6 @@ buffer-from@^1.0.0:
1966 1948
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1967 1949
   integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
1968 1950
 
1969
-buffer-indexof@^1.0.0:
1970
-  version "1.1.1"
1971
-  resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
1972
-  integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
1973
-
1974 1951
 buffer-xor@^1.0.3:
1975 1952
   version "1.0.3"
1976 1953
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@@ -2032,9 +2009,9 @@ caniuse-api@^3.0.0:
2032 2009
     lodash.uniq "^4.5.0"
2033 2010
 
2034 2011
 caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001317:
2035
-  version "1.0.30001324"
2036
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001324.tgz#e17c3a8b34822b02d5d15639d570057550074884"
2037
-  integrity sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==
2012
+  version "1.0.30001328"
2013
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001328.tgz#0ed7a2ca65ec45872c613630201644237ba1e329"
2014
+  integrity sha512-Ue55jHkR/s4r00FLNiX+hGMMuwml/QGqqzVeMQ5thUewznU2EdULFvI3JR7JJid6OrjJNfFvHY2G2dIjmRaDDQ==
2038 2015
 
2039 2016
 chalk@^1.1.3:
2040 2017
   version "1.1.3"
@@ -2116,11 +2093,6 @@ clean-css@^5.2.4:
2116 2093
   dependencies:
2117 2094
     source-map "~0.6.0"
2118 2095
 
2119
-clean-stack@^2.0.0:
2120
-  version "2.2.0"
2121
-  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
2122
-  integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
2123
-
2124 2096
 cli-table3@^0.6.0:
2125 2097
   version "0.6.1"
2126 2098
   resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8"
@@ -2587,20 +2559,6 @@ define-properties@^1.1.3:
2587 2559
   dependencies:
2588 2560
     object-keys "^1.0.12"
2589 2561
 
2590
-del@^6.0.0:
2591
-  version "6.0.0"
2592
-  resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
2593
-  integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==
2594
-  dependencies:
2595
-    globby "^11.0.1"
2596
-    graceful-fs "^4.2.4"
2597
-    is-glob "^4.0.1"
2598
-    is-path-cwd "^2.2.0"
2599
-    is-path-inside "^3.0.2"
2600
-    p-map "^4.0.0"
2601
-    rimraf "^3.0.2"
2602
-    slash "^3.0.0"
2603
-
2604 2562
 depd@2.0.0:
2605 2563
   version "2.0.0"
2606 2564
   resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@@ -2660,25 +2618,17 @@ dns-equal@^1.0.0:
2660 2618
   resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
2661 2619
   integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
2662 2620
 
2663
-dns-packet@^1.3.1:
2664
-  version "1.3.4"
2665
-  resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
2666
-  integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
2667
-  dependencies:
2668
-    ip "^1.1.0"
2669
-    safe-buffer "^5.0.1"
2670
-
2671
-dns-txt@^2.0.2:
2672
-  version "2.0.2"
2673
-  resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
2674
-  integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
2621
+dns-packet@^5.2.2:
2622
+  version "5.3.1"
2623
+  resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d"
2624
+  integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==
2675 2625
   dependencies:
2676
-    buffer-indexof "^1.0.0"
2626
+    "@leichtgewicht/ip-codec" "^2.0.1"
2677 2627
 
2678 2628
 dom-serializer@^1.0.1:
2679
-  version "1.3.2"
2680
-  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
2681
-  integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
2629
+  version "1.4.1"
2630
+  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
2631
+  integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
2682 2632
   dependencies:
2683 2633
     domelementtype "^2.0.1"
2684 2634
     domhandler "^4.2.0"
@@ -2690,9 +2640,9 @@ domain-browser@^1.1.1:
2690 2640
   integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
2691 2641
 
2692 2642
 domelementtype@^2.0.1, domelementtype@^2.2.0:
2693
-  version "2.2.0"
2694
-  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
2695
-  integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
2643
+  version "2.3.0"
2644
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
2645
+  integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
2696 2646
 
2697 2647
 domhandler@^3.0.0:
2698 2648
   version "3.3.0"
@@ -2755,9 +2705,9 @@ ee-first@1.1.1:
2755 2705
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
2756 2706
 
2757 2707
 electron-to-chromium@^1.4.84:
2758
-  version "1.4.103"
2759
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz#abfe376a4d70fa1e1b4b353b95df5d6dfd05da3a"
2760
-  integrity sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==
2708
+  version "1.4.107"
2709
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz#564257014ab14033b4403a309c813123c58a3fb9"
2710
+  integrity sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==
2761 2711
 
2762 2712
 elliptic@^6.5.3:
2763 2713
   version "6.5.4"
@@ -2948,7 +2898,7 @@ execa@^5.0.0:
2948 2898
     signal-exit "^3.0.3"
2949 2899
     strip-final-newline "^2.0.0"
2950 2900
 
2951
-express@^4.17.1:
2901
+express@^4.17.3:
2952 2902
   version "4.17.3"
2953 2903
   resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
2954 2904
   integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
@@ -2999,7 +2949,7 @@ fast-diff@1.1.2:
2999 2949
   resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154"
3000 2950
   integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
3001 2951
 
3002
-fast-glob@^3.0.3, fast-glob@^3.2.9:
2952
+fast-glob@^3.0.3:
3003 2953
   version "3.2.11"
3004 2954
   resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
3005 2955
   integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
@@ -3222,22 +3172,10 @@ globby@^10.0.0:
3222 3172
     merge2 "^1.2.3"
3223 3173
     slash "^3.0.0"
3224 3174
 
3225
-globby@^11.0.1:
3226
-  version "11.1.0"
3227
-  resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
3228
-  integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
3229
-  dependencies:
3230
-    array-union "^2.1.0"
3231
-    dir-glob "^3.0.1"
3232
-    fast-glob "^3.2.9"
3233
-    ignore "^5.2.0"
3234
-    merge2 "^1.4.1"
3235
-    slash "^3.0.0"
3236
-
3237 3175
 graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
3238
-  version "4.2.9"
3239
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
3240
-  integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
3176
+  version "4.2.10"
3177
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
3178
+  integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
3241 3179
 
3242 3180
 growly@^1.3.0:
3243 3181
   version "1.3.0"
@@ -3421,7 +3359,7 @@ http-parser-js@>=0.5.1:
3421 3359
   resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd"
3422 3360
   integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==
3423 3361
 
3424
-http-proxy-middleware@^2.0.0:
3362
+http-proxy-middleware@^2.0.3:
3425 3363
   version "2.0.4"
3426 3364
   resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a"
3427 3365
   integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==
@@ -3468,7 +3406,7 @@ ieee754@^1.1.4:
3468 3406
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
3469 3407
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
3470 3408
 
3471
-ignore@^5.1.1, ignore@^5.2.0:
3409
+ignore@^5.1.1:
3472 3410
   version "5.2.0"
3473 3411
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
3474 3412
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
@@ -3519,11 +3457,6 @@ import-local@^3.0.2:
3519 3457
     pkg-dir "^4.2.0"
3520 3458
     resolve-cwd "^3.0.0"
3521 3459
 
3522
-indent-string@^4.0.0:
3523
-  version "4.0.0"
3524
-  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
3525
-  integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
3526
-
3527 3460
 inflight@^1.0.4:
3528 3461
   version "1.0.6"
3529 3462
   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -3552,11 +3485,6 @@ interpret@^2.2.0:
3552 3485
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
3553 3486
   integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
3554 3487
 
3555
-ip@^1.1.0:
3556
-  version "1.1.5"
3557
-  resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
3558
-  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
3559
-
3560 3488
 ipaddr.js@1.9.1:
3561 3489
   version "1.9.1"
3562 3490
   resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
@@ -3640,16 +3568,6 @@ is-number@^7.0.0:
3640 3568
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
3641 3569
   integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
3642 3570
 
3643
-is-path-cwd@^2.2.0:
3644
-  version "2.2.0"
3645
-  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
3646
-  integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
3647
-
3648
-is-path-inside@^3.0.2:
3649
-  version "3.0.3"
3650
-  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
3651
-  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
3652
-
3653 3571
 is-plain-obj@^3.0.0:
3654 3572
   version "3.0.0"
3655 3573
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
@@ -3753,7 +3671,7 @@ json5@^1.0.1:
3753 3671
   dependencies:
3754 3672
     minimist "^1.2.0"
3755 3673
 
3756
-json5@^2.1.2:
3674
+json5@^2.1.2, json5@^2.2.1:
3757 3675
   version "2.2.1"
3758 3676
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
3759 3677
   integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
@@ -3861,9 +3779,9 @@ lines-and-columns@^1.1.6:
3861 3779
   integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
3862 3780
 
3863 3781
 loader-runner@^4.2.0:
3864
-  version "4.2.0"
3865
-  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
3866
-  integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
3782
+  version "4.3.0"
3783
+  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
3784
+  integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
3867 3785
 
3868 3786
 loader-utils@^1.0.2, loader-utils@^1.1.0:
3869 3787
   version "1.4.0"
@@ -4008,7 +3926,7 @@ merge-stream@^2.0.0:
4008 3926
   resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
4009 3927
   integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
4010 3928
 
4011
-merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
3929
+merge2@^1.2.3, merge2@^1.3.0:
4012 3930
   version "1.4.1"
4013 3931
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
4014 3932
   integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -4119,17 +4037,12 @@ ms@2.1.3, ms@^2.1.1:
4119 4037
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
4120 4038
   integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
4121 4039
 
4122
-multicast-dns-service-types@^1.1.0:
4123
-  version "1.1.0"
4124
-  resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
4125
-  integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
4126
-
4127
-multicast-dns@^6.0.1:
4128
-  version "6.2.3"
4129
-  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
4130
-  integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
4040
+multicast-dns@^7.2.4:
4041
+  version "7.2.4"
4042
+  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19"
4043
+  integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==
4131 4044
   dependencies:
4132
-    dns-packet "^1.3.1"
4045
+    dns-packet "^5.2.2"
4133 4046
     thunky "^1.0.2"
4134 4047
 
4135 4048
 nanoid@^3.3.1:
@@ -4202,9 +4115,9 @@ node-notifier@^9.0.0:
4202 4115
     which "^2.0.2"
4203 4116
 
4204 4117
 node-releases@^2.0.2:
4205
-  version "2.0.2"
4206
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
4207
-  integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
4118
+  version "2.0.3"
4119
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96"
4120
+  integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==
4208 4121
 
4209 4122
 normalize-path@^3.0.0, normalize-path@~3.0.0:
4210 4123
   version "3.0.0"
@@ -4344,13 +4257,6 @@ p-locate@^4.1.0:
4344 4257
   dependencies:
4345 4258
     p-limit "^2.2.0"
4346 4259
 
4347
-p-map@^4.0.0:
4348
-  version "4.0.0"
4349
-  resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
4350
-  integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
4351
-  dependencies:
4352
-    aggregate-error "^3.0.0"
4353
-
4354 4260
 p-pipe@^3.0.0:
4355 4261
   version "3.1.0"
4356 4262
   resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e"
@@ -4992,10 +4898,10 @@ regenerator-runtime@^0.13.4:
4992 4898
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
4993 4899
   integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
4994 4900
 
4995
-regenerator-transform@^0.14.2:
4996
-  version "0.14.5"
4997
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
4998
-  integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
4901
+regenerator-transform@^0.15.0:
4902
+  version "0.15.0"
4903
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537"
4904
+  integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==
4999 4905
   dependencies:
5000 4906
     "@babel/runtime" "^7.8.4"
5001 4907
 
@@ -5174,9 +5080,9 @@ sass-loader@^12.1.0:
5174 5080
     neo-async "^2.6.2"
5175 5081
 
5176 5082
 sass@^1.49.8:
5177
-  version "1.49.11"
5178
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.11.tgz#1ffeb77faeed8b806a2a1e021d7c9fd3fc322cb7"
5179
-  integrity sha512-wvS/geXgHUGs6A/4ud5BFIWKO1nKd7wYIGimDk4q4GFkJicILActpv9ueMT4eRGSsp1BdKHuw1WwAHXbhsJELQ==
5083
+  version "1.50.0"
5084
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.50.0.tgz#3e407e2ebc53b12f1e35ce45efb226ea6063c7c8"
5085
+  integrity sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==
5180 5086
   dependencies:
5181 5087
     chokidar ">=3.0.0 <4.0.0"
5182 5088
     immutable "^4.0.0"
@@ -5215,7 +5121,7 @@ select-hose@^2.0.0:
5215 5121
   resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
5216 5122
   integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
5217 5123
 
5218
-selfsigned@^2.0.0:
5124
+selfsigned@^2.0.1:
5219 5125
   version "2.0.1"
5220 5126
   resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56"
5221 5127
   integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==
@@ -5233,9 +5139,9 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
5233 5139
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
5234 5140
 
5235 5141
 semver@^7.3.2, semver@^7.3.5:
5236
-  version "7.3.5"
5237
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
5238
-  integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
5142
+  version "7.3.7"
5143
+  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
5144
+  integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
5239 5145
   dependencies:
5240 5146
     lru-cache "^6.0.0"
5241 5147
 
@@ -5598,13 +5504,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
5598 5504
   dependencies:
5599 5505
     ansi-regex "^5.0.1"
5600 5506
 
5601
-strip-ansi@^7.0.0:
5602
-  version "7.0.1"
5603
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
5604
-  integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
5605
-  dependencies:
5606
-    ansi-regex "^6.0.1"
5607
-
5608 5507
 strip-final-newline@^2.0.0:
5609 5508
   version "2.0.0"
5610 5509
   resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
@@ -5885,15 +5784,15 @@ vue-style-loader@^4.1.3:
5885 5784
     loader-utils "^1.0.2"
5886 5785
 
5887 5786
 vue@^3.2.31:
5888
-  version "3.2.31"
5889
-  resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.31.tgz#e0c49924335e9f188352816788a4cca10f817ce6"
5890
-  integrity sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==
5787
+  version "3.2.32"
5788
+  resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.32.tgz#a09840e237384c673f421ff7280c4469714f2ac0"
5789
+  integrity sha512-6L3jKZApF042OgbCkh+HcFeAkiYi3Lovi8wNhWqIK98Pi5efAMLZzRHgi91v+60oIRxdJsGS9sTMsb+yDpY8Eg==
5891 5790
   dependencies:
5892
-    "@vue/compiler-dom" "3.2.31"
5893
-    "@vue/compiler-sfc" "3.2.31"
5894
-    "@vue/runtime-dom" "3.2.31"
5895
-    "@vue/server-renderer" "3.2.31"
5896
-    "@vue/shared" "3.2.31"
5791
+    "@vue/compiler-dom" "3.2.32"
5792
+    "@vue/compiler-sfc" "3.2.32"
5793
+    "@vue/runtime-dom" "3.2.32"
5794
+    "@vue/server-renderer" "3.2.32"
5795
+    "@vue/shared" "3.2.32"
5897 5796
 
5898 5797
 watchpack@^2.3.1:
5899 5798
   version "2.3.1"
@@ -5940,38 +5839,37 @@ webpack-dev-middleware@^5.3.1:
5940 5839
     schema-utils "^4.0.0"
5941 5840
 
5942 5841
 webpack-dev-server@^4.7.3:
5943
-  version "4.7.4"
5944
-  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945"
5945
-  integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==
5842
+  version "4.8.1"
5843
+  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz#58f9d797710d6e25fa17d6afab8708f958c11a29"
5844
+  integrity sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==
5946 5845
   dependencies:
5947 5846
     "@types/bonjour" "^3.5.9"
5948 5847
     "@types/connect-history-api-fallback" "^1.3.5"
5949 5848
     "@types/express" "^4.17.13"
5950 5849
     "@types/serve-index" "^1.9.1"
5951 5850
     "@types/sockjs" "^0.3.33"
5952
-    "@types/ws" "^8.2.2"
5851
+    "@types/ws" "^8.5.1"
5953 5852
     ansi-html-community "^0.0.8"
5954
-    bonjour "^3.5.0"
5853
+    bonjour-service "^1.0.11"
5955 5854
     chokidar "^3.5.3"
5956 5855
     colorette "^2.0.10"
5957 5856
     compression "^1.7.4"
5958 5857
     connect-history-api-fallback "^1.6.0"
5959 5858
     default-gateway "^6.0.3"
5960
-    del "^6.0.0"
5961
-    express "^4.17.1"
5859
+    express "^4.17.3"
5962 5860
     graceful-fs "^4.2.6"
5963 5861
     html-entities "^2.3.2"
5964
-    http-proxy-middleware "^2.0.0"
5862
+    http-proxy-middleware "^2.0.3"
5965 5863
     ipaddr.js "^2.0.1"
5966 5864
     open "^8.0.9"
5967 5865
     p-retry "^4.5.0"
5968 5866
     portfinder "^1.0.28"
5867
+    rimraf "^3.0.2"
5969 5868
     schema-utils "^4.0.0"
5970
-    selfsigned "^2.0.0"
5869
+    selfsigned "^2.0.1"
5971 5870
     serve-index "^1.9.1"
5972 5871
     sockjs "^0.3.21"
5973 5872
     spdy "^4.0.2"
5974
-    strip-ansi "^7.0.0"
5975 5873
     webpack-dev-middleware "^5.3.1"
5976 5874
     ws "^8.4.2"
5977 5875
 
@@ -6005,9 +5903,9 @@ webpack-sources@^3.2.3:
6005 5903
   integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
6006 5904
 
6007 5905
 webpack@^5.60.0:
6008
-  version "5.71.0"
6009
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.71.0.tgz#b01fcf379570b8c5ee06ca06c829ca168c951884"
6010
-  integrity sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==
5906
+  version "5.72.0"
5907
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28"
5908
+  integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==
6011 5909
   dependencies:
6012 5910
     "@types/eslint-scope" "^3.7.3"
6013 5911
     "@types/estree" "^0.0.51"
@@ -6143,9 +6041,9 @@ yargs@17.1.1:
6143 6041
     yargs-parser "^20.2.2"
6144 6042
 
6145 6043
 yargs@^17.2.1, yargs@^17.3.1:
6146
-  version "17.4.0"
6147
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00"
6148
-  integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==
6044
+  version "17.4.1"
6045
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284"
6046
+  integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==
6149 6047
   dependencies:
6150 6048
     cliui "^7.0.2"
6151 6049
     escalade "^3.1.1"