x-essential-lib 0.9.21 → 0.9.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.id="x-essential-lib",a.appendChild(document.createTextNode('.fade-leave-active[data-v-99c4198b]{transition:opacity .5s ease}.fade-leave-to[data-v-99c4198b]{opacity:0}.x-cont[data-v-99c4198b]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.lds-spinner[data-v-99c4198b]{color:official;display:inline-block;position:relative;width:40px;height:40px}.lds-spinner div[data-v-99c4198b]{transform-origin:20px 20px;animation:lds-spinner-99c4198b 1.2s linear infinite}.lds-spinner div[data-v-99c4198b]:after{content:" ";display:block;position:absolute;top:3px;left:18px;width:2px;height:6px;border-radius:5%;background:#9e9e9e}.lds-spinner div[data-v-99c4198b]:nth-child(1){transform:rotate(0);animation-delay:-1.1s}.lds-spinner div[data-v-99c4198b]:nth-child(2){transform:rotate(30deg);animation-delay:-1s}.lds-spinner div[data-v-99c4198b]:nth-child(3){transform:rotate(60deg);animation-delay:-.9s}.lds-spinner div[data-v-99c4198b]:nth-child(4){transform:rotate(90deg);animation-delay:-.8s}.lds-spinner div[data-v-99c4198b]:nth-child(5){transform:rotate(120deg);animation-delay:-.7s}.lds-spinner div[data-v-99c4198b]:nth-child(6){transform:rotate(150deg);animation-delay:-.6s}.lds-spinner div[data-v-99c4198b]:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}.lds-spinner div[data-v-99c4198b]:nth-child(8){transform:rotate(210deg);animation-delay:-.4s}.lds-spinner div[data-v-99c4198b]:nth-child(9){transform:rotate(240deg);animation-delay:-.3s}.lds-spinner div[data-v-99c4198b]:nth-child(10){transform:rotate(270deg);animation-delay:-.2s}.lds-spinner div[data-v-99c4198b]:nth-child(11){transform:rotate(300deg);animation-delay:-.1s}.lds-spinner div[data-v-99c4198b]:nth-child(12){transform:rotate(330deg);animation-delay:0s}@keyframes lds-spinner-99c4198b{0%{opacity:1}to{opacity:0}}.x-item[data-v-5b5f6d09]{width:600px}@media(max-width:600px){.x-item[data-v-5b5f6d09]{width:calc(100vw - 16px)}}.x-cont[data-v-b482df18]{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:9999}')),document.head.appendChild(a)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- import { computed as V, provide as U, inject as K, ref as p, watchEffect as ne, onMounted as W, onBeforeUnmount as N, onBeforeMount as De, defineComponent as $, watch as J, resolveComponent as m, createBlock as A, openBlock as q, withKeys as F, unref as E, withModifiers as I, isRef as X, withCtx as v, createVNode as h, createTextVNode as M, toDisplayString as S, Transition as Ce, createElementBlock as ee, createCommentVNode as te, normalizeStyle as se, createElementVNode as D, Fragment as je, renderList as Ve, useTemplateRef as pe } from "vue";
2
+ import { computed as V, provide as U, inject as K, ref as p, watchEffect as ne, onMounted as W, onBeforeUnmount as N, onBeforeMount as De, defineComponent as $, watch as J, resolveComponent as m, createBlock as A, openBlock as q, withKeys as F, unref as E, withModifiers as I, isRef as X, withCtx as v, createVNode as x, createTextVNode as M, toDisplayString as S, Transition as je, createElementBlock as ee, createCommentVNode as te, normalizeStyle as se, createElementVNode as D, Fragment as Ce, renderList as Ve, useTemplateRef as pe } from "vue";
3
3
  import { useI18n as z } from "vue-i18n";
4
4
  import { useTheme as _e, useDisplay as qe } from "vuetify";
5
5
  import { useRouter as de, useRoute as Oe } from "vue-router";
@@ -17,7 +17,7 @@ function Te() {
17
17
  borderColor: n
18
18
  };
19
19
  }
20
- function Ct(e) {
20
+ function jt(e) {
21
21
  const t = Se.create({
22
22
  timeout: 6e3
23
23
  });
@@ -51,7 +51,7 @@ function Ie(e, t) {
51
51
  function $e() {
52
52
  T.remove("accessToken"), T.remove("refreshToken"), T.remove("userId"), T.remove("userName"), T.remove("phone"), T.remove("activeOrg"), de().replace({ path: "/passport/login" });
53
53
  }
54
- const jt = (function() {
54
+ const Ct = (function() {
55
55
  return window.globalObjects || (window.globalObjects = {
56
56
  router: null,
57
57
  i18n: null
@@ -369,7 +369,14 @@ function Kt(e, t, a, o) {
369
369
  else
370
370
  L(e.path, t.path, o), a();
371
371
  }
372
- const Nt = ["string", "number", "boolean", "array", "object", "any"];
372
+ const Nt = [
373
+ "string",
374
+ "number",
375
+ "boolean",
376
+ "array",
377
+ "object",
378
+ "any"
379
+ ];
373
380
  function Wt(e) {
374
381
  switch (e) {
375
382
  case "string":
@@ -386,10 +393,26 @@ function Wt(e) {
386
393
  return "#9e9e9e";
387
394
  }
388
395
  }
396
+ function Xt(e) {
397
+ switch (e) {
398
+ case "string":
399
+ return "";
400
+ case "number":
401
+ return 0;
402
+ case "boolean":
403
+ return !1;
404
+ case "array":
405
+ return [];
406
+ case "object":
407
+ return {};
408
+ case "any":
409
+ return null;
410
+ }
411
+ }
389
412
  function et(e) {
390
413
  return e.value.length <= 0;
391
414
  }
392
- function Xt(e) {
415
+ function zt(e) {
393
416
  if (e.value.length > 0)
394
417
  return e.value[e.value.length - 1];
395
418
  }
@@ -407,10 +430,10 @@ function at(e, t) {
407
430
  function ot(e) {
408
431
  console.assert(e.value.length > 0), e.value.pop();
409
432
  }
410
- function zt(e) {
433
+ function Ht(e) {
411
434
  e.value = [];
412
435
  }
413
- function Ht(e, t, a, o, l, r) {
436
+ function Ft(e, t, a, o, l, r) {
414
437
  const s = Oe(), n = de(), d = Le(), c = p(!1);
415
438
  ne(() => {
416
439
  let g = !1;
@@ -451,7 +474,7 @@ function Ht(e, t, a, o, l, r) {
451
474
  });
452
475
  const f = (g) => {
453
476
  e.value = g;
454
- }, j = (g) => {
477
+ }, C = (g) => {
455
478
  t.value = g;
456
479
  }, k = (g) => {
457
480
  const R = g;
@@ -460,12 +483,12 @@ function Ht(e, t, a, o, l, r) {
460
483
  l.value = g;
461
484
  };
462
485
  De(() => {
463
- u.on("updateDark", f), u.on("updateLocale", j), u.on("updatePermission", k), u.on("updateLastAppPath", i), u.emit("syncGlobalState");
486
+ u.on("updateDark", f), u.on("updateLocale", C), u.on("updatePermission", k), u.on("updateLastAppPath", i), u.emit("syncGlobalState");
464
487
  }), N(() => {
465
- u.off("updateDark", f), u.off("updateLocale", j), u.off("updatePermission", k), u.off("updateLastAppPath", i);
488
+ u.off("updateDark", f), u.off("updateLocale", C), u.off("updatePermission", k), u.off("updateLastAppPath", i);
466
489
  });
467
490
  }
468
- function Ft() {
491
+ function Gt() {
469
492
  const e = He();
470
493
  function t(a, o) {
471
494
  return Ne(
@@ -476,7 +499,7 @@ function Ft() {
476
499
  }
477
500
  return { verifyPermission: t };
478
501
  }
479
- function Gt() {
502
+ function Jt() {
480
503
  const { locale: e, t } = z(), a = V(() => !!window.cordova), o = qe(), l = V(() => o.width.value <= 1280 ? o.width.value + "px" : o.width.value <= 1920 ? 1920 / 2.5 + "px" : 2560 / 2.5 + "px"), r = V(() => o.xs.value);
481
504
  return {
482
505
  sysBarAvail: a,
@@ -526,44 +549,44 @@ const lt = /* @__PURE__ */ $({
526
549
  };
527
550
  return J(b, (f) => {
528
551
  !f && !_ && (u.emit("confirmDlgResult" + c, !1), _ = !0);
529
- }), (f, j) => {
530
- const k = m("v-card-text"), i = m("v-btn"), g = m("v-card-actions"), R = m("v-card"), x = m("v-dialog");
531
- return q(), A(x, {
552
+ }), (f, C) => {
553
+ const k = m("v-card-text"), i = m("v-btn"), g = m("v-card-actions"), R = m("v-card"), h = m("v-dialog");
554
+ return q(), A(h, {
532
555
  modelValue: E(b),
533
- "onUpdate:modelValue": j[1] || (j[1] = (C) => X(b) ? b.value = C : null),
556
+ "onUpdate:modelValue": C[1] || (C[1] = (j) => X(b) ? b.value = j : null),
534
557
  attach: "",
535
558
  "max-width": "600px",
536
559
  transition: "dialog-top-transition",
537
560
  onKeydown: [
538
561
  F(I(y, ["stop", "prevent"]), ["enter"]),
539
- j[2] || (j[2] = F(I((C) => b.value = !1, ["stop", "prevent"]), ["esc"]))
562
+ C[2] || (C[2] = F(I((j) => b.value = !1, ["stop", "prevent"]), ["esc"]))
540
563
  ]
541
564
  }, {
542
565
  default: v(() => [
543
- h(R, {
566
+ x(R, {
544
567
  subtitle: o.value,
545
568
  title: a.value
546
569
  }, {
547
570
  default: v(() => [
548
- h(k, null, {
571
+ x(k, null, {
549
572
  default: v(() => [
550
573
  M(S(l.value), 1)
551
574
  ]),
552
575
  _: 1
553
576
  }),
554
- h(g, { class: "d-flex justify-end" }, {
577
+ x(g, { class: "d-flex justify-end" }, {
555
578
  default: v(() => [
556
- h(i, {
579
+ x(i, {
557
580
  color: r.value,
558
581
  variant: "text",
559
- onClick: j[0] || (j[0] = (C) => b.value = !1)
582
+ onClick: C[0] || (C[0] = (j) => b.value = !1)
560
583
  }, {
561
584
  default: v(() => [
562
585
  M(S(s.value), 1)
563
586
  ]),
564
587
  _: 1
565
588
  }, 8, ["color"]),
566
- h(i, {
589
+ x(i, {
567
590
  color: n.value,
568
591
  variant: "text",
569
592
  onClick: y
@@ -596,7 +619,7 @@ const lt = /* @__PURE__ */ $({
596
619
  zIndex: e.zIndex
597
620
  }));
598
621
  let o = 0;
599
- return (l, r) => (q(), A(Ce, { name: "fade" }, {
622
+ return (l, r) => (q(), A(je, { name: "fade" }, {
600
623
  default: v(() => [
601
624
  e.open ? (q(), ee("div", {
602
625
  key: X(o) ? ++o.value : ++o,
@@ -676,7 +699,7 @@ const lt = /* @__PURE__ */ $({
676
699
  D("div", {
677
700
  style: se(a.value)
678
701
  }, S(e.text), 5),
679
- h(d, {
702
+ x(d, {
680
703
  class: "mx-1",
681
704
  icon: "mdi-close",
682
705
  onClick: n[0] || (n[0] = (_) => r("timeout", e.id))
@@ -714,7 +737,7 @@ const lt = /* @__PURE__ */ $({
714
737
  onClick: d[0] || (d[0] = I(() => {
715
738
  }, ["stop"]))
716
739
  }, [
717
- (q(!0), ee(je, null, Ve(t.value, (c) => (q(), A(ct, {
740
+ (q(!0), ee(Ce, null, Ve(t.value, (c) => (q(), A(ct, {
718
741
  id: c.id,
719
742
  key: c.id,
720
743
  text: c.text,
@@ -731,13 +754,13 @@ const lt = /* @__PURE__ */ $({
731
754
  let c = 0, _ = !1;
732
755
  const w = pe("target"), b = async (k) => {
733
756
  a.value = k.title, o.value = k.subtitle ?? "", l.value = k.value, r.value = k.precision, s.value = k.min, n.value = k.max, d.value = k.step, c = k.seq, _ = !1, y.value = !0, await H(() => !!w.value), w.value.focus();
734
- }, { open: y } = Q("numberDlg", b), f = p(!1), j = () => {
757
+ }, { open: y } = Q("numberDlg", b), f = p(!1), C = () => {
735
758
  y.value = !1, _ || (u.emit(`numberDlgResult${c}`, l.value), _ = !0);
736
759
  };
737
760
  return J(y, (k) => {
738
761
  !k && !_ && (u.emit(`numberDlgResult${c}`, void 0), _ = !0);
739
762
  }), (k, i) => {
740
- const g = m("v-number-input"), R = m("v-btn"), x = m("v-card-actions"), C = m("v-form"), Y = m("v-card"), Z = m("v-dialog");
763
+ const g = m("v-number-input"), R = m("v-btn"), h = m("v-card-actions"), j = m("v-form"), Y = m("v-card"), Z = m("v-dialog");
741
764
  return q(), A(Z, {
742
765
  modelValue: E(y),
743
766
  "onUpdate:modelValue": i[3] || (i[3] = (O) => X(y) ? y.value = O : null),
@@ -747,16 +770,16 @@ const lt = /* @__PURE__ */ $({
747
770
  onKeydown: i[4] || (i[4] = F(I((O) => y.value = !1, ["stop", "prevent"]), ["esc"]))
748
771
  }, {
749
772
  default: v(() => [
750
- h(Y, { title: a.value }, {
773
+ x(Y, { title: a.value }, {
751
774
  default: v(() => [
752
- h(C, {
775
+ x(j, {
753
776
  modelValue: f.value,
754
777
  "onUpdate:modelValue": i[2] || (i[2] = (O) => f.value = O),
755
778
  class: "mx-3",
756
- onSubmit: I(j, ["prevent"])
779
+ onSubmit: I(C, ["prevent"])
757
780
  }, {
758
781
  default: v(() => [
759
- h(g, {
782
+ x(g, {
760
783
  ref_key: "target",
761
784
  ref: w,
762
785
  modelValue: l.value,
@@ -767,9 +790,9 @@ const lt = /* @__PURE__ */ $({
767
790
  precision: r.value,
768
791
  step: d.value
769
792
  }, null, 8, ["modelValue", "max", "min", "precision", "step"]),
770
- h(x, { class: "d-flex justify-end" }, {
793
+ x(h, { class: "d-flex justify-end" }, {
771
794
  default: v(() => [
772
- h(R, {
795
+ x(R, {
773
796
  color: "primary",
774
797
  variant: "text",
775
798
  onClick: i[1] || (i[1] = (O) => y.value = !1)
@@ -779,7 +802,7 @@ const lt = /* @__PURE__ */ $({
779
802
  ]),
780
803
  _: 1
781
804
  }),
782
- h(R, {
805
+ x(R, {
783
806
  color: "primary",
784
807
  disabled: !f.value,
785
808
  type: "submit",
@@ -809,25 +832,25 @@ const lt = /* @__PURE__ */ $({
809
832
  setup(e) {
810
833
  const { t } = z(), a = p(""), o = p(""), l = p(""), r = p(""), s = p(""), n = p(), d = p(""), c = p(""), _ = p(""), w = p(""), b = p("");
811
834
  let y = 0, f = !1;
812
- const j = pe("target"), k = async (x) => {
813
- a.value = x.title, o.value = x.subtitle ?? "", l.value = x.text, r.value = x.label, s.value = x.placeholder, n.value = x.rules, d.value = x.value, c.value = x.cancel?.color ?? "primary", _.value = x.cancel?.text ?? t("dlg.common.cancel"), w.value = x.confirm?.color ?? "primary", b.value = x.confirm?.text ?? t("dlg.common.confirm"), y = x.seq, f = !1, i.value = !0, await H(() => !!j.value), j.value.focus();
835
+ const C = pe("target"), k = async (h) => {
836
+ a.value = h.title, o.value = h.subtitle ?? "", l.value = h.text, r.value = h.label, s.value = h.placeholder, n.value = h.rules, d.value = h.value, c.value = h.cancel?.color ?? "primary", _.value = h.cancel?.text ?? t("dlg.common.cancel"), w.value = h.confirm?.color ?? "primary", b.value = h.confirm?.text ?? t("dlg.common.confirm"), y = h.seq, f = !1, i.value = !0, await H(() => !!C.value), C.value.focus();
814
837
  }, { open: i } = Q("promptDlg", k), g = p(!1), R = () => {
815
838
  i.value = !1, f || (u.emit("promptDlgResult" + y, d.value ?? ""), f = !0);
816
839
  };
817
- return J(i, (x) => {
818
- !x && !f && (u.emit("promptDlgResult" + y, void 0), f = !0);
819
- }), (x, C) => {
820
- const Y = m("v-card-text"), Z = m("v-text-field"), O = m("v-btn"), we = m("v-card-actions"), xe = m("v-form"), he = m("v-card"), ke = m("v-dialog");
840
+ return J(i, (h) => {
841
+ !h && !f && (u.emit("promptDlgResult" + y, void 0), f = !0);
842
+ }), (h, j) => {
843
+ const Y = m("v-card-text"), Z = m("v-text-field"), O = m("v-btn"), we = m("v-card-actions"), he = m("v-form"), xe = m("v-card"), ke = m("v-dialog");
821
844
  return q(), A(ke, {
822
845
  modelValue: E(i),
823
- "onUpdate:modelValue": C[3] || (C[3] = (B) => X(i) ? i.value = B : null),
846
+ "onUpdate:modelValue": j[3] || (j[3] = (B) => X(i) ? i.value = B : null),
824
847
  attach: "",
825
848
  "max-width": "600px",
826
849
  transition: "dialog-top-transition",
827
- onKeydown: C[4] || (C[4] = F(I((B) => i.value = !1, ["stop", "prevent"]), ["esc"]))
850
+ onKeydown: j[4] || (j[4] = F(I((B) => i.value = !1, ["stop", "prevent"]), ["esc"]))
828
851
  }, {
829
852
  default: v(() => [
830
- h(he, {
853
+ x(xe, {
831
854
  subtitle: o.value,
832
855
  title: a.value
833
856
  }, {
@@ -838,35 +861,35 @@ const lt = /* @__PURE__ */ $({
838
861
  ]),
839
862
  _: 1
840
863
  })) : te("", !0),
841
- h(xe, {
864
+ x(he, {
842
865
  modelValue: g.value,
843
- "onUpdate:modelValue": C[2] || (C[2] = (B) => g.value = B),
866
+ "onUpdate:modelValue": j[2] || (j[2] = (B) => g.value = B),
844
867
  class: "mx-3",
845
868
  onSubmit: I(R, ["prevent"])
846
869
  }, {
847
870
  default: v(() => [
848
- h(Z, {
871
+ x(Z, {
849
872
  ref_key: "target",
850
- ref: j,
873
+ ref: C,
851
874
  modelValue: d.value,
852
- "onUpdate:modelValue": C[0] || (C[0] = (B) => d.value = B),
875
+ "onUpdate:modelValue": j[0] || (j[0] = (B) => d.value = B),
853
876
  label: r.value,
854
877
  placeholder: s.value,
855
878
  rules: n.value
856
879
  }, null, 8, ["modelValue", "label", "placeholder", "rules"]),
857
- h(we, { class: "d-flex justify-end" }, {
880
+ x(we, { class: "d-flex justify-end" }, {
858
881
  default: v(() => [
859
- h(O, {
882
+ x(O, {
860
883
  color: c.value,
861
884
  variant: "text",
862
- onClick: C[1] || (C[1] = (B) => i.value = !1)
885
+ onClick: j[1] || (j[1] = (B) => i.value = !1)
863
886
  }, {
864
887
  default: v(() => [
865
888
  M(S(_.value), 1)
866
889
  ]),
867
890
  _: 1
868
891
  }, 8, ["color"]),
869
- h(O, {
892
+ x(O, {
870
893
  color: w.value,
871
894
  disabled: !g.value,
872
895
  type: "submit",
@@ -916,7 +939,7 @@ const lt = /* @__PURE__ */ $({
916
939
  }, {
917
940
  default: v(() => [
918
941
  D("div", it, [
919
- h(d, {
942
+ x(d, {
920
943
  height: "80px",
921
944
  loading: "",
922
945
  width: "300px"
@@ -942,22 +965,23 @@ const lt = /* @__PURE__ */ $({
942
965
  (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(r.bind(null, /* @__PURE__ */ new Error("Unknown variable dynamic import: " + t + (t.split("/").length !== a ? ". Note that variables only represent file names one level deep." : ""))));
943
966
  });
944
967
  };
945
- async function Jt(e) {
968
+ async function Qt(e) {
946
969
  return (await bt(/* @__PURE__ */ Object.assign({ "./locales/en/index.ts": () => import("./i18n-en.i529k39u.js"), "./locales/zhHans/index.ts": () => import("./i18n-zhHans.mx7z5jvj.js") }), `./locales/${e}/index.ts`, 4)).default;
947
970
  }
948
- const Qt = { install: mt };
971
+ const Yt = { install: mt };
949
972
  export {
950
973
  Ke as Permission,
951
974
  tt as addView,
952
975
  Ee as appAppear,
953
- zt as clearViews,
976
+ Ht as clearViews,
954
977
  Lt as closeWaitDlg,
955
- Ct as createAxios,
956
- Qt as default,
978
+ jt as createAxios,
979
+ Yt as default,
957
980
  at as delView,
958
981
  u as eventBus,
959
982
  Wt as getTypeColor,
960
- jt as globalObjects,
983
+ Xt as getTypeDefault,
984
+ Ct as globalObjects,
961
985
  ye as hasView,
962
986
  It as injectDark,
963
987
  Ut as injectLastAppPath,
@@ -967,8 +991,8 @@ export {
967
991
  Qe as injectViews,
968
992
  et as isEmpty,
969
993
  ce as isExist,
970
- Xt as lastView,
971
- Jt as loadLocaleMessageEssential,
994
+ zt as lastView,
995
+ Qt as loadLocaleMessageEssential,
972
996
  G as matchRouteMeta,
973
997
  Tt as messageError,
974
998
  At as messageInfo,
@@ -989,9 +1013,9 @@ export {
989
1013
  P as routeTransName,
990
1014
  Nt as types,
991
1015
  Te as useColor,
992
- Ht as useMicroApp,
993
- Ft as usePermission,
994
- Gt as useSystem,
1016
+ Ft as useMicroApp,
1017
+ Gt as usePermission,
1018
+ Jt as useSystem,
995
1019
  Q as useViewStack,
996
1020
  Ne as verifyPermission,
997
1021
  Vt as waitMs,
@@ -1,3 +1,4 @@
1
1
  export declare const types: readonly ["string", "number", "boolean", "array", "object", "any"];
2
2
  export type Type = (typeof types)[number];
3
3
  export declare function getTypeColor(type: Type): string;
4
+ export declare function getTypeDefault(type: Type): any;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "x-essential-lib",
3
3
  "private": false,
4
- "version": "0.9.21",
4
+ "version": "0.9.23",
5
5
  "type": "module",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -36,12 +36,12 @@
36
36
  "@eslint/js": "^9.39.2",
37
37
  "@types/js-cookie": "^3.0.6",
38
38
  "@types/lodash-es": "^4.17.12",
39
- "@types/node": "^25.0.8",
39
+ "@types/node": "^25.0.9",
40
40
  "@vitejs/plugin-vue": "^6.0.3",
41
41
  "eslint": "^9.39.2",
42
42
  "eslint-config-prettier": "^10.1.8",
43
43
  "eslint-plugin-prettier": "^5.5.5",
44
- "eslint-plugin-vue": "^10.6.2",
44
+ "eslint-plugin-vue": "^10.7.0",
45
45
  "globals": "^17.0.0",
46
46
  "husky": "^9.1.7",
47
47
  "lint-staged": "^16.2.7",