giime 0.8.0-beta.4 → 0.8.1-beta.1
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.css +107 -104
- package/es/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
- package/es/components/src/base/autocomplete/autocomplete.d.ts +1 -1
- package/es/components/src/base/autocomplete/index.d.ts +7 -7
- package/es/components/src/base/input/Input.vue.d.ts +3 -3
- package/es/components/src/base/input/index.d.ts +7 -7
- package/es/components/src/base/input/input.d.ts +1 -1
- package/es/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
- package/es/components/src/base/inputNumber/index.d.ts +7 -7
- package/es/components/src/base/inputNumber/inputNumber.d.ts +1 -1
- package/es/components/src/base/mention/Mention.vue.d.ts +3 -3
- package/es/components/src/base/mention/index.d.ts +7 -7
- package/es/components/src/base/mention/mention.d.ts +1 -1
- package/es/components/src/base/upload/Upload.vue.d.ts +1 -1
- package/es/components/src/base/upload/index.d.ts +3 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +4 -1
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
- package/es/components/src/business/uploadItem/index.d.ts +3 -3
- package/es/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
- package/es/components/src/business/uploadPro/index.d.ts +3 -3
- package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs +2 -1
- package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +3 -3
- package/es/giime/index.mjs +4 -2
- package/es/giime/index.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/index.css +107 -104
- package/es/utils/__tests__/crypto/base64.test.d.ts +1 -0
- package/es/utils/__tests__/vue/router.test.d.ts +1 -0
- package/es/utils/index.mjs +4 -2
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/crypto/base64.d.ts +42 -0
- package/es/utils/src/crypto/base64.mjs +44 -0
- package/es/utils/src/crypto/base64.mjs.map +1 -0
- package/es/utils/src/crypto/index.d.ts +1 -0
- package/es/utils/src/crypto/index.mjs +1 -0
- package/es/utils/src/crypto/index.mjs.map +1 -1
- package/es/utils/src/http/createAxios.mjs +8 -0
- package/es/utils/src/http/createAxios.mjs.map +1 -1
- package/es/utils/src/http/index.mjs +1 -1
- package/es/utils/src/http/url.d.ts +9 -0
- package/es/utils/src/http/url.mjs +6 -1
- package/es/utils/src/http/url.mjs.map +1 -1
- package/es/utils/src/is.d.ts +22 -0
- package/es/utils/src/is.mjs +16 -1
- package/es/utils/src/is.mjs.map +1 -1
- package/es/utils/src/vue/index.d.ts +1 -0
- package/es/utils/src/vue/index.mjs +1 -0
- package/es/utils/src/vue/index.mjs.map +1 -1
- package/es/utils/src/vue/router.d.ts +30 -0
- package/es/utils/src/vue/router.mjs +28 -0
- package/es/utils/src/vue/router.mjs.map +1 -0
- package/lib/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
- package/lib/components/src/base/autocomplete/autocomplete.d.ts +1 -1
- package/lib/components/src/base/autocomplete/index.d.ts +7 -7
- package/lib/components/src/base/input/Input.vue.d.ts +3 -3
- package/lib/components/src/base/input/index.d.ts +7 -7
- package/lib/components/src/base/input/input.d.ts +1 -1
- package/lib/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
- package/lib/components/src/base/inputNumber/index.d.ts +7 -7
- package/lib/components/src/base/inputNumber/inputNumber.d.ts +1 -1
- package/lib/components/src/base/mention/Mention.vue.d.ts +3 -3
- package/lib/components/src/base/mention/index.d.ts +7 -7
- package/lib/components/src/base/mention/mention.d.ts +1 -1
- package/lib/components/src/base/upload/Upload.vue.d.ts +1 -1
- package/lib/components/src/base/upload/index.d.ts +3 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +3 -0
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
- package/lib/components/src/business/uploadItem/index.d.ts +3 -3
- package/lib/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
- package/lib/components/src/business/uploadPro/index.d.ts +3 -3
- package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js +2 -1
- package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +3 -3
- package/lib/giime/index.js +16 -0
- package/lib/giime/index.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/index.css +107 -104
- package/lib/utils/__tests__/crypto/base64.test.d.ts +1 -0
- package/lib/utils/__tests__/vue/router.test.d.ts +1 -0
- package/lib/utils/index.js +16 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/crypto/base64.d.ts +42 -0
- package/lib/utils/src/crypto/base64.js +51 -0
- package/lib/utils/src/crypto/base64.js.map +1 -0
- package/lib/utils/src/crypto/index.d.ts +1 -0
- package/lib/utils/src/crypto/index.js +7 -0
- package/lib/utils/src/crypto/index.js.map +1 -1
- package/lib/utils/src/http/createAxios.js +8 -0
- package/lib/utils/src/http/createAxios.js.map +1 -1
- package/lib/utils/src/http/index.js +1 -0
- package/lib/utils/src/http/index.js.map +1 -1
- package/lib/utils/src/http/url.d.ts +9 -0
- package/lib/utils/src/http/url.js +6 -0
- package/lib/utils/src/http/url.js.map +1 -1
- package/lib/utils/src/is.d.ts +22 -0
- package/lib/utils/src/is.js +20 -0
- package/lib/utils/src/is.js.map +1 -1
- package/lib/utils/src/vue/index.d.ts +1 -0
- package/lib/utils/src/vue/index.js +3 -0
- package/lib/utils/src/vue/index.js.map +1 -1
- package/lib/utils/src/vue/router.d.ts +30 -0
- package/lib/utils/src/vue/router.js +31 -0
- package/lib/utils/src/vue/router.js.map +1 -0
- package/package.json +1 -1
package/lib/index.css
CHANGED
|
@@ -695,6 +695,9 @@ video {
|
|
|
695
695
|
.gm-gap-4 {
|
|
696
696
|
gap: 1rem;
|
|
697
697
|
}
|
|
698
|
+
.gm-gap-y-2 {
|
|
699
|
+
row-gap: 0.5rem;
|
|
700
|
+
}
|
|
698
701
|
.gm-overflow-hidden {
|
|
699
702
|
overflow: hidden;
|
|
700
703
|
}
|
|
@@ -880,57 +883,13 @@ video {
|
|
|
880
883
|
.gm-group:hover .group-hover\:gm-block {
|
|
881
884
|
display: block;
|
|
882
885
|
}
|
|
883
|
-
.gm-
|
|
884
|
-
|
|
885
|
-
}
|
|
886
|
-
|
|
887
|
-
.gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload--picture-card {
|
|
888
|
-
width: auto;
|
|
889
|
-
height: auto;
|
|
890
|
-
}
|
|
891
|
-
.gm-upload-pro-file {
|
|
892
|
-
line-height: normal;
|
|
893
|
-
}
|
|
894
|
-
.gm-upload-pro-file .el-checkbox-group {
|
|
895
|
-
font-size: unset;
|
|
896
|
-
}
|
|
897
|
-
.gm-upload-pro-file .el-checkbox {
|
|
898
|
-
position: absolute;
|
|
899
|
-
left: 10px;
|
|
900
|
-
top: 0;
|
|
901
|
-
z-index: 9;
|
|
902
|
-
}
|
|
903
|
-
.gm-upload-pro-file .el-upload-list--picture-card {
|
|
904
|
-
gap: 10px;
|
|
905
|
-
}
|
|
906
|
-
.gm-upload-pro-file .el-upload-list__item {
|
|
907
|
-
margin: 0;
|
|
908
|
-
}
|
|
909
|
-
.gm-upload-pro-file .el-upload-list__item-file-name {
|
|
910
|
-
line-height: 1.7;
|
|
911
|
-
}
|
|
912
|
-
.gm-upload-pro-file .el-upload-dragger {
|
|
913
|
-
padding: 0;
|
|
914
|
-
border: none;
|
|
915
|
-
width: 100%;
|
|
916
|
-
height: 100%;
|
|
917
|
-
display: flex;
|
|
918
|
-
}
|
|
919
|
-
.gm-upload-pro-file .el-upload--picture-card {
|
|
920
|
-
border: none;
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
.gm-upload-pro-file-disabled .el-upload--picture-card {
|
|
924
|
-
display: none;
|
|
925
|
-
}
|
|
926
|
-
.gm-upload-pro-file-disabled .el-upload-list__item-status-label {
|
|
927
|
-
display: none;
|
|
886
|
+
.gm-flex-center[data-v-c17deec9] {
|
|
887
|
+
align-items: center;
|
|
928
888
|
}
|
|
929
889
|
|
|
930
|
-
.gm-
|
|
931
|
-
|
|
890
|
+
.gm-flex-justify-between[data-v-c17deec9] {
|
|
891
|
+
justify-content: space-between;
|
|
932
892
|
}
|
|
933
|
-
|
|
934
893
|
.circular[data-v-d7b04fae] {
|
|
935
894
|
animation: loading-rotate-d7b04fae 2s linear infinite;
|
|
936
895
|
}
|
|
@@ -962,55 +921,60 @@ video {
|
|
|
962
921
|
stroke-dashoffset: -120px;
|
|
963
922
|
}
|
|
964
923
|
}
|
|
965
|
-
|
|
924
|
+
|
|
925
|
+
.gm-range-number .el-form-item[data-v-1ae16d96] {
|
|
926
|
+
margin: 0;
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
.gm-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
|
|
930
|
+
padding: 0;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
.gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-80b383d8] [data-v-80b383d8] .el-upload--picture-card {
|
|
934
|
+
width: auto;
|
|
935
|
+
height: auto;
|
|
936
|
+
}
|
|
937
|
+
.gm-upload-pro-file {
|
|
966
938
|
line-height: normal;
|
|
967
939
|
}
|
|
968
|
-
.gm-upload-file .el-checkbox {
|
|
940
|
+
.gm-upload-pro-file .el-checkbox-group {
|
|
941
|
+
font-size: unset;
|
|
942
|
+
}
|
|
943
|
+
.gm-upload-pro-file .el-checkbox {
|
|
969
944
|
position: absolute;
|
|
970
945
|
left: 10px;
|
|
971
946
|
top: 0;
|
|
972
947
|
z-index: 9;
|
|
973
948
|
}
|
|
974
|
-
.gm-upload-file .el-upload-list--picture-card {
|
|
949
|
+
.gm-upload-pro-file .el-upload-list--picture-card {
|
|
975
950
|
gap: 10px;
|
|
976
951
|
}
|
|
977
|
-
.gm-upload-file .el-upload-list__item {
|
|
952
|
+
.gm-upload-pro-file .el-upload-list__item {
|
|
978
953
|
margin: 0;
|
|
979
954
|
}
|
|
980
|
-
.gm-upload-file .el-upload-list__item-file-name {
|
|
981
|
-
line-height:
|
|
955
|
+
.gm-upload-pro-file .el-upload-list__item-file-name {
|
|
956
|
+
line-height: 1.7;
|
|
982
957
|
}
|
|
983
|
-
.gm-upload-file .el-upload-dragger {
|
|
958
|
+
.gm-upload-pro-file .el-upload-dragger {
|
|
984
959
|
padding: 0;
|
|
985
960
|
border: none;
|
|
986
961
|
width: 100%;
|
|
987
962
|
height: 100%;
|
|
988
963
|
display: flex;
|
|
989
964
|
}
|
|
990
|
-
.gm-upload-file .el-upload--picture-card {
|
|
965
|
+
.gm-upload-pro-file .el-upload--picture-card {
|
|
991
966
|
border: none;
|
|
992
967
|
}
|
|
993
968
|
|
|
994
|
-
.gm-upload-file-disabled .el-upload--picture-card {
|
|
969
|
+
.gm-upload-pro-file-disabled .el-upload--picture-card {
|
|
995
970
|
display: none;
|
|
996
971
|
}
|
|
997
|
-
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
972
|
+
.gm-upload-pro-file-disabled .el-upload-list__item-status-label {
|
|
998
973
|
display: none;
|
|
999
974
|
}
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
.gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload-list__item, .gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload--picture-card {
|
|
1005
|
-
width: auto;
|
|
1006
|
-
height: auto;
|
|
1007
|
-
}
|
|
1008
|
-
.gm-flex-center[data-v-c17deec9] {
|
|
1009
|
-
align-items: center;
|
|
1010
|
-
}
|
|
1011
|
-
|
|
1012
|
-
.gm-flex-justify-between[data-v-c17deec9] {
|
|
1013
|
-
justify-content: space-between;
|
|
975
|
+
[data-v-d3111183] .gmSearchForm .el-form-item {
|
|
976
|
+
margin-right: 0;
|
|
977
|
+
margin-bottom: 4px;
|
|
1014
978
|
}
|
|
1015
979
|
[data-v-2c351ff8] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1016
980
|
border-right: none;
|
|
@@ -1035,33 +999,15 @@ video {
|
|
|
1035
999
|
[data-v-2c351ff8] .gmTableNoBorder .el-table__border-left-patch {
|
|
1036
1000
|
height: 0;
|
|
1037
1001
|
}
|
|
1038
|
-
[data-v-d3111183] .gmSearchForm .el-form-item {
|
|
1039
|
-
margin-right: 0;
|
|
1040
|
-
margin-bottom: 4px;
|
|
1041
|
-
}
|
|
1042
|
-
[data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1043
|
-
border-right: none;
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
|
-
[data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
1047
|
-
height: 0;
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
[data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
1051
|
-
height: 0;
|
|
1052
|
-
}
|
|
1053
1002
|
|
|
1054
|
-
[data-v-
|
|
1055
|
-
|
|
1003
|
+
.pagination-container[data-v-47d35e7b] {
|
|
1004
|
+
background: #fff;
|
|
1005
|
+
padding-top: 12px;
|
|
1056
1006
|
}
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
height: 0;
|
|
1007
|
+
.pagination-container.hidden[data-v-47d35e7b] {
|
|
1008
|
+
display: none;
|
|
1060
1009
|
}
|
|
1061
1010
|
|
|
1062
|
-
[data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
|
|
1063
|
-
height: 0;
|
|
1064
|
-
}
|
|
1065
1011
|
.gm-number-interval-single[data-v-4e6f4d6f] {
|
|
1066
1012
|
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
1067
1013
|
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
@@ -1080,15 +1026,6 @@ video {
|
|
|
1080
1026
|
.gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
|
|
1081
1027
|
display: flex;
|
|
1082
1028
|
}
|
|
1083
|
-
|
|
1084
|
-
.pagination-container[data-v-47d35e7b] {
|
|
1085
|
-
background: #fff;
|
|
1086
|
-
padding-top: 12px;
|
|
1087
|
-
}
|
|
1088
|
-
.pagination-container.hidden[data-v-47d35e7b] {
|
|
1089
|
-
display: none;
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
1029
|
@charset "UTF-8";
|
|
1093
1030
|
.custom-operate-drawer .el-drawer__header {
|
|
1094
1031
|
padding: 10px 15px;
|
|
@@ -1145,6 +1082,29 @@ video {
|
|
|
1145
1082
|
border-radius: 10px;
|
|
1146
1083
|
background: #eee;
|
|
1147
1084
|
}
|
|
1085
|
+
[data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1086
|
+
border-right: none;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
[data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
1090
|
+
height: 0;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
[data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
1094
|
+
height: 0;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
[data-v-98c2e804] .gmTableNoBorder.el-table--border:after {
|
|
1098
|
+
height: 0;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
[data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
|
|
1102
|
+
height: 0;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
[data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
|
|
1106
|
+
height: 0;
|
|
1107
|
+
}
|
|
1148
1108
|
@charset "UTF-8";
|
|
1149
1109
|
.table-custom-header-drawer .el-drawer__header {
|
|
1150
1110
|
padding: 10px 15px;
|
|
@@ -1200,4 +1160,47 @@ video {
|
|
|
1200
1160
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
|
|
1201
1161
|
border-radius: 10px;
|
|
1202
1162
|
background: #eee;
|
|
1163
|
+
}
|
|
1164
|
+
.gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
|
|
1165
|
+
padding: 0;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
.gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload-list__item, .gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload--picture-card {
|
|
1169
|
+
width: auto;
|
|
1170
|
+
height: auto;
|
|
1171
|
+
}
|
|
1172
|
+
.gm-upload-file {
|
|
1173
|
+
line-height: normal;
|
|
1174
|
+
}
|
|
1175
|
+
.gm-upload-file .el-checkbox {
|
|
1176
|
+
position: absolute;
|
|
1177
|
+
left: 10px;
|
|
1178
|
+
top: 0;
|
|
1179
|
+
z-index: 9;
|
|
1180
|
+
}
|
|
1181
|
+
.gm-upload-file .el-upload-list--picture-card {
|
|
1182
|
+
gap: 10px;
|
|
1183
|
+
}
|
|
1184
|
+
.gm-upload-file .el-upload-list__item {
|
|
1185
|
+
margin: 0;
|
|
1186
|
+
}
|
|
1187
|
+
.gm-upload-file .el-upload-list__item-file-name {
|
|
1188
|
+
line-height: normal;
|
|
1189
|
+
}
|
|
1190
|
+
.gm-upload-file .el-upload-dragger {
|
|
1191
|
+
padding: 0;
|
|
1192
|
+
border: none;
|
|
1193
|
+
width: 100%;
|
|
1194
|
+
height: 100%;
|
|
1195
|
+
display: flex;
|
|
1196
|
+
}
|
|
1197
|
+
.gm-upload-file .el-upload--picture-card {
|
|
1198
|
+
border: none;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.gm-upload-file-disabled .el-upload--picture-card {
|
|
1202
|
+
display: none;
|
|
1203
|
+
}
|
|
1204
|
+
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
1205
|
+
display: none;
|
|
1203
1206
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/utils/index.js
CHANGED
|
@@ -18,6 +18,7 @@ var array = require('./src/array.js');
|
|
|
18
18
|
require('./src/regexPatterns/index.js');
|
|
19
19
|
var install = require('./src/vue/install.js');
|
|
20
20
|
var resolver = require('./src/vue/resolver.js');
|
|
21
|
+
var router = require('./src/vue/router.js');
|
|
21
22
|
var event = require('./src/elementPlus/event.js');
|
|
22
23
|
var exports$1 = require('./src/elementPlus/exports.js');
|
|
23
24
|
var cascader = require('./src/elementPlus/cascader.js');
|
|
@@ -30,6 +31,7 @@ var dateShortcuts = require('./src/date/dateShortcuts.js');
|
|
|
30
31
|
var elementPlus = require('element-plus');
|
|
31
32
|
var md5 = require('./src/crypto/md5.js');
|
|
32
33
|
var sha1 = require('./src/crypto/sha1.js');
|
|
34
|
+
var base64 = require('./src/crypto/base64.js');
|
|
33
35
|
var filterTreeByName = require('./src/tree/filterTreeByName.js');
|
|
34
36
|
var findChildrenItem = require('./src/tree/findChildrenItem.js');
|
|
35
37
|
var number$1 = require('./src/regexPatterns/number.js');
|
|
@@ -37,13 +39,17 @@ var url$1 = require('./src/regexPatterns/url.js');
|
|
|
37
39
|
|
|
38
40
|
|
|
39
41
|
|
|
42
|
+
exports.DINGTALK_REGEX = is.DINGTALK_REGEX;
|
|
40
43
|
exports.FILE_EXTENSIONS = is.FILE_EXTENSIONS;
|
|
41
44
|
exports.FileType = is.FileType;
|
|
45
|
+
exports.MOBILE_DEVICE_REGEX = is.MOBILE_DEVICE_REGEX;
|
|
46
|
+
exports.TABLET_DEVICE_REGEX = is.TABLET_DEVICE_REGEX;
|
|
42
47
|
exports.getTag = is.getTag;
|
|
43
48
|
exports.isBoolean = is.isBoolean;
|
|
44
49
|
exports.isClient = is.isClient;
|
|
45
50
|
exports.isDate = is.isDate;
|
|
46
51
|
exports.isDecimal = is.isDecimal;
|
|
52
|
+
exports.isDingTalk = is.isDingTalk;
|
|
47
53
|
exports.isError = is.isError;
|
|
48
54
|
exports.isEven = is.isEven;
|
|
49
55
|
exports.isExcel = is.isExcel;
|
|
@@ -52,6 +58,7 @@ exports.isHttps = is.isHttps;
|
|
|
52
58
|
exports.isIOS = is.isIOS;
|
|
53
59
|
exports.isImageUrl = is.isImageUrl;
|
|
54
60
|
exports.isInteger = is.isInteger;
|
|
61
|
+
exports.isMobile = is.isMobile;
|
|
55
62
|
exports.isNegative = is.isNegative;
|
|
56
63
|
exports.isNil = is.isNil;
|
|
57
64
|
exports.isNull = is.isNull;
|
|
@@ -105,6 +112,8 @@ exports.withNoopInstall = install.withNoopInstall;
|
|
|
105
112
|
exports.GiimeResolver = resolver.GiimeResolver;
|
|
106
113
|
exports.bypass = resolver.bypass;
|
|
107
114
|
exports.kebabCase = resolver.kebabCase;
|
|
115
|
+
exports.getRouteParams = router.getRouteParams;
|
|
116
|
+
exports.getRouteQuery = router.getRouteQuery;
|
|
108
117
|
exports.getGmEvent = event.getGmEvent;
|
|
109
118
|
exports.getGmExports = exports$1.getGmExports;
|
|
110
119
|
exports.getGmObjExports = exports$1.getGmObjExports;
|
|
@@ -117,6 +126,7 @@ exports.res401Interceptors = interceptors.res401Interceptors;
|
|
|
117
126
|
exports.giimeDevProxy = devProxy.giimeDevProxy;
|
|
118
127
|
exports.giimeDevProxyFn = devProxy.giimeDevProxyFn;
|
|
119
128
|
exports.getDomain = url.getDomain;
|
|
129
|
+
exports.getHeaderValue = url.getHeaderValue;
|
|
120
130
|
exports.urlJoin = url.urlJoin;
|
|
121
131
|
exports.getDateShortcuts = dateShortcuts.getDateShortcuts;
|
|
122
132
|
Object.defineProperty(exports, "genFileId", {
|
|
@@ -136,6 +146,12 @@ exports.b64_hmac_sha1 = sha1.b64_hmac_sha1;
|
|
|
136
146
|
exports.b64_sha1 = sha1.b64_sha1;
|
|
137
147
|
exports.hex_hmac_sha1 = sha1.hex_hmac_sha1;
|
|
138
148
|
exports.hex_sha1 = sha1.hex_sha1;
|
|
149
|
+
exports.base64ToString = base64.base64ToString;
|
|
150
|
+
exports.base64ToUint8Array = base64.base64ToUint8Array;
|
|
151
|
+
exports.isBase64 = base64.isBase64;
|
|
152
|
+
exports.stringToBase64 = base64.stringToBase64;
|
|
153
|
+
exports.stringToBase64URI = base64.stringToBase64URI;
|
|
154
|
+
exports.uint8ArrayToBase64 = base64.uint8ArrayToBase64;
|
|
139
155
|
exports.filterTreeByName = filterTreeByName.filterTreeByName;
|
|
140
156
|
exports.findChildrenItem = findChildrenItem.findChildrenItem;
|
|
141
157
|
exports.integerPattern = number$1.integerPattern;
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base64 编解码工具
|
|
3
|
+
* 仅支持浏览器环境
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 将 UTF-8 字符串编码为 Base64
|
|
7
|
+
* @param src UTF-8 字符串
|
|
8
|
+
* @param urlsafe 是否使用 URL 安全的 Base64 编码(RFC4648 §5)
|
|
9
|
+
* @returns Base64 字符串
|
|
10
|
+
*/
|
|
11
|
+
export declare const stringToBase64: (src: string, urlsafe?: boolean) => string;
|
|
12
|
+
/**
|
|
13
|
+
* 将 Base64 字符串解码为 UTF-8 字符串
|
|
14
|
+
* @param src Base64 字符串(支持标准和 URL 安全格式)
|
|
15
|
+
* @returns UTF-8 字符串
|
|
16
|
+
*/
|
|
17
|
+
export declare const base64ToString: (src: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* 将 UTF-8 字符串编码为 URL 安全的 Base64(RFC4648 §5)
|
|
20
|
+
* @param src UTF-8 字符串
|
|
21
|
+
* @returns URL 安全的 Base64 字符串
|
|
22
|
+
*/
|
|
23
|
+
export declare const stringToBase64URI: (src: string) => string;
|
|
24
|
+
/**
|
|
25
|
+
* 检查字符串是否为有效的 Base64 格式
|
|
26
|
+
* @param src 待检查的字符串
|
|
27
|
+
* @returns 是否为有效的 Base64 字符串
|
|
28
|
+
*/
|
|
29
|
+
export declare const isBase64: (src: any) => src is string;
|
|
30
|
+
/**
|
|
31
|
+
* 将 Uint8Array 转换为 Base64 字符串
|
|
32
|
+
* @param u8a Uint8Array
|
|
33
|
+
* @param urlsafe 是否使用 URL 安全格式
|
|
34
|
+
* @returns Base64 字符串
|
|
35
|
+
*/
|
|
36
|
+
export declare const uint8ArrayToBase64: (u8a: Uint8Array, urlsafe?: boolean) => string;
|
|
37
|
+
/**
|
|
38
|
+
* 将 Base64 字符串转换为 Uint8Array
|
|
39
|
+
* @param src Base64 字符串
|
|
40
|
+
* @returns Uint8Array
|
|
41
|
+
*/
|
|
42
|
+
export declare const base64ToUint8Array: (src: string) => Uint8Array;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const _fromCC = String.fromCharCode.bind(String);
|
|
4
|
+
const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, "");
|
|
5
|
+
const _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 === "+" ? "-" : "_");
|
|
6
|
+
const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 === "-" ? "+" : "/"));
|
|
7
|
+
const _TD = new TextDecoder();
|
|
8
|
+
const _TE = new TextEncoder();
|
|
9
|
+
const _fromUint8Array = (u8a) => {
|
|
10
|
+
const maxargs = 4096;
|
|
11
|
+
const strs = [];
|
|
12
|
+
for (let i = 0, l = u8a.length; i < l; i += maxargs) {
|
|
13
|
+
strs.push(_fromCC(...Array.from(u8a.subarray(i, i + maxargs))));
|
|
14
|
+
}
|
|
15
|
+
return btoa(strs.join(""));
|
|
16
|
+
};
|
|
17
|
+
const _toUint8Array = (a) => {
|
|
18
|
+
return Uint8Array.from(
|
|
19
|
+
atob(a).split("").map((c) => c.charCodeAt(0))
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
const stringToBase64 = (src, urlsafe = false) => {
|
|
23
|
+
const encoded = _fromUint8Array(_TE.encode(src));
|
|
24
|
+
return urlsafe ? _mkUriSafe(encoded) : encoded;
|
|
25
|
+
};
|
|
26
|
+
const base64ToString = (src) => {
|
|
27
|
+
return _TD.decode(_toUint8Array(_unURI(src)));
|
|
28
|
+
};
|
|
29
|
+
const stringToBase64URI = (src) => {
|
|
30
|
+
return stringToBase64(src, true);
|
|
31
|
+
};
|
|
32
|
+
const isBase64 = (src) => {
|
|
33
|
+
if (typeof src !== "string") return false;
|
|
34
|
+
const s = src.replace(/\s+/g, "").replace(/={0,2}$/, "");
|
|
35
|
+
return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s);
|
|
36
|
+
};
|
|
37
|
+
const uint8ArrayToBase64 = (u8a, urlsafe = false) => {
|
|
38
|
+
const encoded = _fromUint8Array(u8a);
|
|
39
|
+
return urlsafe ? _mkUriSafe(encoded) : encoded;
|
|
40
|
+
};
|
|
41
|
+
const base64ToUint8Array = (src) => {
|
|
42
|
+
return _toUint8Array(_unURI(src));
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.base64ToString = base64ToString;
|
|
46
|
+
exports.base64ToUint8Array = base64ToUint8Array;
|
|
47
|
+
exports.isBase64 = isBase64;
|
|
48
|
+
exports.stringToBase64 = stringToBase64;
|
|
49
|
+
exports.stringToBase64URI = stringToBase64URI;
|
|
50
|
+
exports.uint8ArrayToBase64 = uint8ArrayToBase64;
|
|
51
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.js","sources":["../../../../../../packages/utils/src/crypto/base64.ts"],"sourcesContent":["/**\n * Base64 编解码工具\n * 仅支持浏览器环境\n */\n\n// 辅助函数\nconst _fromCC = String.fromCharCode.bind(String);\nconst _tidyB64 = (s: string) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\nconst _mkUriSafe = (src: string) => src.replace(/=/g, '').replace(/[+\\/]/g, m0 => (m0 === '+' ? '-' : '_'));\nconst _unURI = (a: string) => _tidyB64(a.replace(/[-_]/g, m0 => (m0 === '-' ? '+' : '/')));\n\n// TextEncoder/TextDecoder 实例\nconst _TD = new TextDecoder();\nconst _TE = new TextEncoder();\n\n/**\n * 将 Uint8Array 转换为 Base64 字符串\n */\nconst _fromUint8Array = (u8a: Uint8Array): string => {\n const maxargs = 0x1000;\n const strs: string[] = [];\n\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC(...Array.from(u8a.subarray(i, i + maxargs))));\n }\n\n return btoa(strs.join(''));\n};\n\n/**\n * 将 Base64 字符串转换为 Uint8Array\n */\nconst _toUint8Array = (a: string): Uint8Array => {\n return Uint8Array.from(\n atob(a)\n .split('')\n .map(c => c.charCodeAt(0)),\n );\n};\n\n/**\n * 将 UTF-8 字符串编码为 Base64\n * @param src UTF-8 字符串\n * @param urlsafe 是否使用 URL 安全的 Base64 编码(RFC4648 §5)\n * @returns Base64 字符串\n */\nexport const stringToBase64 = (src: string, urlsafe = false): string => {\n const encoded = _fromUint8Array(_TE.encode(src));\n return urlsafe ? _mkUriSafe(encoded) : encoded;\n};\n\n/**\n * 将 Base64 字符串解码为 UTF-8 字符串\n * @param src Base64 字符串(支持标准和 URL 安全格式)\n * @returns UTF-8 字符串\n */\nexport const base64ToString = (src: string): string => {\n return _TD.decode(_toUint8Array(_unURI(src)));\n};\n\n/**\n * 将 UTF-8 字符串编码为 URL 安全的 Base64(RFC4648 §5)\n * @param src UTF-8 字符串\n * @returns URL 安全的 Base64 字符串\n */\nexport const stringToBase64URI = (src: string): string => {\n return stringToBase64(src, true);\n};\n\n/**\n * 检查字符串是否为有效的 Base64 格式\n * @param src 待检查的字符串\n * @returns 是否为有效的 Base64 字符串\n */\nexport const isBase64 = (src: any): src is string => {\n if (typeof src !== 'string') return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n\n/**\n * 将 Uint8Array 转换为 Base64 字符串\n * @param u8a Uint8Array\n * @param urlsafe 是否使用 URL 安全格式\n * @returns Base64 字符串\n */\nexport const uint8ArrayToBase64 = (u8a: Uint8Array, urlsafe = false): string => {\n const encoded = _fromUint8Array(u8a);\n return urlsafe ? _mkUriSafe(encoded) : encoded;\n};\n\n/**\n * 将 Base64 字符串转换为 Uint8Array\n * @param src Base64 字符串\n * @returns Uint8Array\n */\nexport const base64ToUint8Array = (src: string): Uint8Array => {\n return _toUint8Array(_unURI(src));\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var md5 = require('./md5.js');
|
|
4
4
|
var sha1 = require('./sha1.js');
|
|
5
|
+
var base64 = require('./base64.js');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
|
|
@@ -18,4 +19,10 @@ exports.b64_hmac_sha1 = sha1.b64_hmac_sha1;
|
|
|
18
19
|
exports.b64_sha1 = sha1.b64_sha1;
|
|
19
20
|
exports.hex_hmac_sha1 = sha1.hex_hmac_sha1;
|
|
20
21
|
exports.hex_sha1 = sha1.hex_sha1;
|
|
22
|
+
exports.base64ToString = base64.base64ToString;
|
|
23
|
+
exports.base64ToUint8Array = base64.base64ToUint8Array;
|
|
24
|
+
exports.isBase64 = base64.isBase64;
|
|
25
|
+
exports.stringToBase64 = base64.stringToBase64;
|
|
26
|
+
exports.stringToBase64URI = base64.stringToBase64URI;
|
|
27
|
+
exports.uint8ArrayToBase64 = base64.uint8ArrayToBase64;
|
|
21
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,6 +7,8 @@ var index = require('../../../hooks/store/useLogin/index.js');
|
|
|
7
7
|
var is = require('../is.js');
|
|
8
8
|
var interceptors = require('./interceptors.js');
|
|
9
9
|
var errorMessage = require('./errorMessage.js');
|
|
10
|
+
var url = require('./url.js');
|
|
11
|
+
var index$1 = require('../../../hooks/base/useGlobalConfig/index.js');
|
|
10
12
|
|
|
11
13
|
function createAxios(config, options) {
|
|
12
14
|
const successCode = config.successCode ?? 0;
|
|
@@ -27,6 +29,12 @@ function createAxios(config, options) {
|
|
|
27
29
|
const logingStore = index.useLoginStore();
|
|
28
30
|
const _token = Cookies.get("token") ?? logingStore.userToken;
|
|
29
31
|
const _user = Cookies.get("sso_user_id") ?? logingStore.userId;
|
|
32
|
+
const loginEnvKey = "VITE_GIIME_LOGIN_GK_SERVICE_USER";
|
|
33
|
+
const importMetaEnv = index$1.useGlobalConfig("env");
|
|
34
|
+
const gkServiceUser = url.getHeaderValue(config2.headers, "gk-service-user");
|
|
35
|
+
if (!gkServiceUser) {
|
|
36
|
+
config2.headers["gk-service-user"] = importMetaEnv.value[loginEnvKey] || void 0;
|
|
37
|
+
}
|
|
30
38
|
if (!config2.params) {
|
|
31
39
|
config2.params = {};
|
|
32
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAxios.js","sources":["../../../../../../packages/utils/src/http/createAxios.ts"],"sourcesContent":["import axios from 'axios';\nimport { ElMessage } from 'element-plus';\nimport Cookies from 'js-cookie';\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\nimport { isNumber } from '../is';\nimport { res401Interceptors } from './interceptors';\nimport { responseErrorMessage } from './errorMessage';\nimport type { AxiosError, CreateAxiosDefaults, InternalAxiosRequestConfig } from 'axios';\nexport interface CreateAxiosConfig extends CreateAxiosDefaults {\n baseURL: string;\n /**服务器调用成功的code 一般是 0 或 200 */\n successCode: number | number[];\n // 是否隐藏Authorization\n hideAuthorization?: boolean;\n // 是否使用params传递token\n isUseParamsToken?: boolean;\n}\n\nexport function createAxios(\n config: CreateAxiosConfig,\n options?: {\n requestInterceptors?: (config: InternalAxiosRequestConfig<any>) => any;\n },\n) {\n const successCode = config.successCode ?? 0;\n const hideAuthorization = config.hideAuthorization ?? false;\n const isUseParamsToken = config.isUseParamsToken ?? false;\n const service = axios.create({\n withCredentials: true, // send cookies when cross-domain requests\n timeout: 120_000,\n headers: {\n 'content-type': 'application/json',\n Accept: '*/*',\n },\n ...config,\n });\n\n // 请求拦截器\n service.interceptors.request.use(\n async config => {\n const logingStore = useLoginStore();\n const _token = Cookies.get('token') ?? logingStore.userToken;\n const _user = Cookies.get('sso_user_id') ?? logingStore.userId;\n if (!config.params) {\n config.params = {};\n }\n // 是否隐藏Authorization\n if (!hideAuthorization) {\n // 是否使用params传递token\n if (isUseParamsToken) {\n config.params._token = _token;\n config.params._user = _user;\n }\n\n if (_token) {\n config.headers.Authorization = `Bearer ${_token}`;\n }\n }\n\n await options?.requestInterceptors?.(config);\n return config;\n },\n error => {\n console.error('请求错误', error); // for debug\n return Promise.reject(error);\n },\n );\n // 添加响应拦截器\n service.interceptors.response.use(\n async response => {\n // 对响应数据做点什么\n const res = response.data;\n const msg = (res?.comment ?? res?.message ?? res?.errMsg ?? res?.msg) || '接口请求错误';\n if (!isNumber(res?.code)) {\n return response;\n }\n // 成功情况\n else if (res.code === successCode || res.errCode === successCode) {\n return response;\n }\n // 成功情况 successCode为数组\n else if (Array.isArray(successCode) && (successCode.includes(res.code) || successCode.includes(res.errCode))) {\n return response;\n }\n // 401\n else if (res.code === 401) {\n const res = await res401Interceptors(service, response.config);\n return res;\n }\n ElMessage({\n message: msg,\n type: 'error',\n grouping: true,\n duration: 5 * 1000,\n showClose: true,\n });\n return Promise.reject(response);\n // return response;\n },\n async (err: AxiosError) => {\n console.error(err);\n if (err?.response?.status === 401 && !err.message.includes('timeout')) {\n const res = await res401Interceptors(service, err.config!);\n return res;\n } else {\n // 对响应错误做点什么\n responseErrorMessage(err);\n return Promise.reject(err);\n }\n },\n );\n\n return {\n service,\n };\n}\n"],"names":["config","useLoginStore","isNumber","res","res401Interceptors","ElMessage","responseErrorMessage"],"mappings":"
|
|
1
|
+
{"version":3,"file":"createAxios.js","sources":["../../../../../../packages/utils/src/http/createAxios.ts"],"sourcesContent":["import axios from 'axios';\nimport { ElMessage } from 'element-plus';\nimport Cookies from 'js-cookie';\nimport { useLoginStore } from '@giime/hooks/store/useLogin';\nimport { isNumber } from '../is';\nimport { res401Interceptors } from './interceptors';\nimport { responseErrorMessage } from './errorMessage';\nimport { getHeaderValue } from './url';\nimport type { AxiosError, CreateAxiosDefaults, InternalAxiosRequestConfig } from 'axios';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nexport interface CreateAxiosConfig extends CreateAxiosDefaults {\n baseURL: string;\n /**服务器调用成功的code 一般是 0 或 200 */\n successCode: number | number[];\n // 是否隐藏Authorization\n hideAuthorization?: boolean;\n // 是否使用params传递token\n isUseParamsToken?: boolean;\n}\n\nexport function createAxios(\n config: CreateAxiosConfig,\n options?: {\n requestInterceptors?: (config: InternalAxiosRequestConfig<any>) => any;\n },\n) {\n const successCode = config.successCode ?? 0;\n const hideAuthorization = config.hideAuthorization ?? false;\n const isUseParamsToken = config.isUseParamsToken ?? false;\n\n const service = axios.create({\n withCredentials: true, // send cookies when cross-domain requests\n timeout: 120_000,\n headers: {\n 'content-type': 'application/json',\n Accept: '*/*',\n },\n ...config,\n });\n\n // 请求拦截器\n service.interceptors.request.use(\n async config => {\n const logingStore = useLoginStore();\n const _token = Cookies.get('token') ?? logingStore.userToken;\n const _user = Cookies.get('sso_user_id') ?? logingStore.userId;\n\n // 获取自定义配置的登录信息\n const loginEnvKey = 'VITE_GIIME_LOGIN_GK_SERVICE_USER';\n\n const importMetaEnv = useGlobalConfig('env');\n // 检查是否已存在 gk-service-user (不区分大小写)\n const gkServiceUser = getHeaderValue(config.headers, 'gk-service-user');\n if (!gkServiceUser) {\n config.headers['gk-service-user'] = importMetaEnv.value[loginEnvKey] || undefined;\n }\n\n if (!config.params) {\n config.params = {};\n }\n // 是否隐藏Authorization\n if (!hideAuthorization) {\n // 是否使用params传递token\n if (isUseParamsToken) {\n config.params._token = _token;\n config.params._user = _user;\n }\n\n if (_token) {\n config.headers.Authorization = `Bearer ${_token}`;\n }\n }\n\n await options?.requestInterceptors?.(config);\n return config;\n },\n error => {\n console.error('请求错误', error); // for debug\n return Promise.reject(error);\n },\n );\n // 添加响应拦截器\n service.interceptors.response.use(\n async response => {\n // 对响应数据做点什么\n const res = response.data;\n const msg = (res?.comment ?? res?.message ?? res?.errMsg ?? res?.msg) || '接口请求错误';\n if (!isNumber(res?.code)) {\n return response;\n }\n // 成功情况\n else if (res.code === successCode || res.errCode === successCode) {\n return response;\n }\n // 成功情况 successCode为数组\n else if (Array.isArray(successCode) && (successCode.includes(res.code) || successCode.includes(res.errCode))) {\n return response;\n }\n // 401\n else if (res.code === 401) {\n const res = await res401Interceptors(service, response.config);\n return res;\n }\n ElMessage({\n message: msg,\n type: 'error',\n grouping: true,\n duration: 5 * 1000,\n showClose: true,\n });\n return Promise.reject(response);\n // return response;\n },\n async (err: AxiosError) => {\n console.error(err);\n if (err?.response?.status === 401 && !err.message.includes('timeout')) {\n const res = await res401Interceptors(service, err.config!);\n return res;\n } else {\n // 对响应错误做点什么\n responseErrorMessage(err);\n return Promise.reject(err);\n }\n },\n );\n\n return {\n service,\n };\n}\n"],"names":["config","useLoginStore","useGlobalConfig","getHeaderValue","isNumber","res","res401Interceptors","ElMessage","responseErrorMessage"],"mappings":";;;;;;;;;;;;AAoBO,SAAS,WAAA,CACd,QACA,OAAA,EAGA;AACA,EAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,CAAA;AAC1C,EAAA,MAAM,iBAAA,GAAoB,OAAO,iBAAA,IAAqB,KAAA;AACtD,EAAA,MAAM,gBAAA,GAAmB,OAAO,gBAAA,IAAoB,KAAA;AAEpD,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO;AAAA,IAC3B,eAAA,EAAiB,IAAA;AAAA;AAAA,IACjB,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,kBAAA;AAAA,MAChB,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AAGD,EAAA,OAAA,CAAQ,aAAa,OAAA,CAAQ,GAAA;AAAA,IAC3B,OAAMA,OAAAA,KAAU;AACd,MAAA,MAAM,cAAcC,mBAAA,EAAc;AAClC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,OAAO,KAAK,WAAA,CAAY,SAAA;AACnD,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,aAAa,KAAK,WAAA,CAAY,MAAA;AAGxD,MAAA,MAAM,WAAA,GAAc,kCAAA;AAEpB,MAAA,MAAM,aAAA,GAAgBC,wBAAgB,KAAK,CAAA;AAE3C,MAAA,MAAM,aAAA,GAAgBC,kBAAA,CAAeH,OAAAA,CAAO,OAAA,EAAS,iBAAiB,CAAA;AACtE,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAAA,QAAO,OAAA,CAAQ,iBAAiB,IAAI,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA,IAAK,KAAA,CAAA;AAAA,MAC1E;AAEA,MAAA,IAAI,CAACA,QAAO,MAAA,EAAQ;AAClB,QAAAA,OAAAA,CAAO,SAAS,EAAC;AAAA,MACnB;AAEA,MAAA,IAAI,CAAC,iBAAA,EAAmB;AAEtB,QAAA,IAAI,gBAAA,EAAkB;AACpB,UAAAA,OAAAA,CAAO,OAAO,MAAA,GAAS,MAAA;AACvB,UAAAA,OAAAA,CAAO,OAAO,KAAA,GAAQ,KAAA;AAAA,QACxB;AAEA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAAA,OAAAA,CAAO,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA;AAAA,QACjD;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,EAAS,sBAAsBA,OAAM,CAAA;AAC3C,MAAA,OAAOA,OAAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAA,KAAA,KAAS;AACP,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAAQ,KAAK,CAAA;AAC3B,MAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IAC7B;AAAA,GACF;AAEA,EAAA,OAAA,CAAQ,aAAa,QAAA,CAAS,GAAA;AAAA,IAC5B,OAAM,QAAA,KAAY;AAEhB,MAAA,MAAM,MAAM,QAAA,CAAS,IAAA;AACrB,MAAA,MAAM,GAAA,GAAA,CAAO,KAAK,OAAA,IAAW,GAAA,EAAK,WAAW,GAAA,EAAK,MAAA,IAAU,KAAK,GAAA,KAAQ,sCAAA;AACzE,MAAA,IAAI,CAACI,WAAA,CAAS,GAAA,EAAK,IAAI,CAAA,EAAG;AACxB,QAAA,OAAO,QAAA;AAAA,MACT,WAES,GAAA,CAAI,IAAA,KAAS,WAAA,IAAe,GAAA,CAAI,YAAY,WAAA,EAAa;AAChE,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAES,KAAA,CAAM,OAAA,CAAQ,WAAW,MAAM,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,IAAK,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA,CAAA,EAAI;AAC5G,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAES,GAAA,CAAI,IAAA,KAAS,GAAA,EAAK;AACzB,QAAA,MAAMC,IAAAA,GAAM,MAAMC,+BAAA,CAAmB,OAAA,EAAS,SAAS,MAAM,CAAA;AAC7D,QAAA,OAAOD,IAAAA;AAAA,MACT;AACA,MAAAE,qBAAA,CAAU;AAAA,QACR,OAAA,EAAS,GAAA;AAAA,QACT,IAAA,EAAM,OAAA;AAAA,QACN,QAAA,EAAU,IAAA;AAAA,QACV,UAAU,CAAA,GAAI,GAAA;AAAA,QACd,SAAA,EAAW;AAAA,OACZ,CAAA;AACD,MAAA,OAAO,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,IAEhC,CAAA;AAAA,IACA,OAAO,GAAA,KAAoB;AACzB,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,MAAA,IAAI,GAAA,EAAK,UAAU,MAAA,KAAW,GAAA,IAAO,CAAC,GAAA,CAAI,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,EAAG;AACrE,QAAA,MAAM,GAAA,GAAM,MAAMD,+BAAA,CAAmB,OAAA,EAAS,IAAI,MAAO,CAAA;AACzD,QAAA,OAAO,GAAA;AAAA,MACT,CAAA,MAAO;AAEL,QAAAE,iCAAA,CAAqB,GAAG,CAAA;AACxB,QAAA,OAAO,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,MAC3B;AAAA,IACF;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;;;;"}
|
|
@@ -16,5 +16,6 @@ exports.res401Interceptors = interceptors.res401Interceptors;
|
|
|
16
16
|
exports.giimeDevProxy = devProxy.giimeDevProxy;
|
|
17
17
|
exports.giimeDevProxyFn = devProxy.giimeDevProxyFn;
|
|
18
18
|
exports.getDomain = url.getDomain;
|
|
19
|
+
exports.getHeaderValue = url.getHeaderValue;
|
|
19
20
|
exports.urlJoin = url.urlJoin;
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
|
|
@@ -13,3 +13,12 @@ export declare function getDomain(): string | undefined;
|
|
|
13
13
|
* @example urlJoin('/', 'ai/copywriting/gen') => /ai/copywriting/gen
|
|
14
14
|
*/
|
|
15
15
|
export declare function urlJoin(...parts: string[]): string;
|
|
16
|
+
/**
|
|
17
|
+
* 获取 headers 中指定 key 的值(不区分大小写)
|
|
18
|
+
* @param headers - headers 对象
|
|
19
|
+
* @param key - 要查找的 key
|
|
20
|
+
* @returns 找到的 header 值,未找到返回 undefined
|
|
21
|
+
* @example getHeaderValue(headers, 'content-type') => 'application/json'
|
|
22
|
+
* @example getHeaderValue(headers, 'Content-Type') => 'application/json'
|
|
23
|
+
*/
|
|
24
|
+
export declare function getHeaderValue(headers: Record<string, any>, key: string): any;
|
|
@@ -35,7 +35,13 @@ function urlJoin(...parts) {
|
|
|
35
35
|
}).filter(Boolean).join("/");
|
|
36
36
|
return parts[0] === "/" ? "/" + result : result;
|
|
37
37
|
}
|
|
38
|
+
function getHeaderValue(headers, key) {
|
|
39
|
+
const lowerKey = key.toLowerCase();
|
|
40
|
+
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === lowerKey);
|
|
41
|
+
return foundKey ? headers[foundKey] : void 0;
|
|
42
|
+
}
|
|
38
43
|
|
|
39
44
|
exports.getDomain = getDomain;
|
|
45
|
+
exports.getHeaderValue = getHeaderValue;
|
|
40
46
|
exports.urlJoin = urlJoin;
|
|
41
47
|
//# sourceMappingURL=url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sources":["../../../../../../packages/utils/src/http/url.ts"],"sourcesContent":["/**\n * 获取当前页面的域\n * @example https://www.baidu.com/s?wd=hello&ie=utf-8 => .baidu.com\n * @example https://127.0.0.1:5000/dashboard => 127.0.0.1\n * @example http://localhost:3000/test => localhost\n */\nexport function getDomain() {\n const url = window.location.href;\n // eslint-disable-next-line no-useless-escape\n const domainPattern = /https?:\\/\\/([^\\/]+)/;\n const match = url.match(domainPattern);\n\n if (match) {\n const domain = match[1];\n // 去除端口号,只保留域名或IP部分\n const domainWithoutPort = domain.split(':')[0];\n\n // 检查是否是IP地址,如果是则直接返回IP\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(domainWithoutPort)) {\n return domainWithoutPort;\n }\n\n // 检查是否是localhost,如果是则直接返回localhost\n if (domainWithoutPort === 'localhost') {\n return 'localhost';\n }\n\n // 提取主域名部分(对于真实域名,返回 .domain.com 格式)\n const domainParts = domainWithoutPort.split('.');\n if (domainParts.length > 2) {\n return `.${domainParts.slice(-2).join('.')}`;\n } else {\n return `.${domainWithoutPort}`;\n }\n }\n\n return undefined;\n}\n\n// // 使用示例\n// console.log(getDomain());\n/**\n * 拼接 url 路径,自动处理多余的 /\n * @param {...string[]} parts 路径片段\n * @returns {string}\n * @example urlJoin('https://www.baidu.com', 's', 'wd=hello') => https://www.baidu.com/s/wd=hello\n * @example urlJoin('/', 'ai/copywriting/gen') => /ai/copywriting/gen\n */\nexport function urlJoin(...parts: string[]): string {\n if (parts.length === 0) return '';\n if (parts.length === 1) return parts[0];\n\n const result = parts\n .map((part, i) => {\n if (i === 0) {\n // 对于第一个参数,如果只是 '/',保留为空但记住它\n if (part === '/') return '';\n return part.replace(/\\/+$/, ''); // 否则去掉结尾/\n }\n if (i === parts.length - 1) return part.replace(/^\\/+/, ''); // 最后一个去掉开头/\n\n return part.replace(/^\\/+|\\/+$/g, ''); // 中间的去掉头尾/\n })\n .filter(Boolean)\n .join('/');\n\n // 如果第一个参数是 '/',在结果前加上 '/'\n return parts[0] === '/' ? '/' + result : result;\n}\n"],"names":[],"mappings":";;AAMO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,GAAA,GAAM,OAAO,QAAA,CAAS,IAAA;AAE5B,EAAA,MAAM,aAAA,GAAgB,qBAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,aAAa,CAAA;AAErC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,MAAA,GAAS,MAAM,CAAC,CAAA;AAEtB,IAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAG7C,IAAA,IAAI,yBAAA,CAA0B,IAAA,CAAK,iBAAiB,CAAA,EAAG;AACrD,MAAA,OAAO,iBAAA;AAAA,IACT;AAGA,IAAA,IAAI,sBAAsB,WAAA,EAAa;AACrC,MAAA,OAAO,WAAA;AAAA,IACT;AAGA,IAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,KAAA,CAAM,GAAG,CAAA;AAC/C,IAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,MAAA,OAAO,IAAI,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,OAAO,IAAI,iBAAiB,CAAA,CAAA;AAAA,IAC9B;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,CAAA;AACT;AAWO,SAAS,WAAW,KAAA,EAAyB;AAClD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAM,CAAC,CAAA;AAEtC,EAAA,MAAM,MAAA,GAAS,KAAA,CACZ,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AAChB,IAAA,IAAI,MAAM,CAAA,EAAG;AAEX,MAAA,IAAI,IAAA,KAAS,KAAK,OAAO,EAAA;AACzB,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAChC;AACA,IAAA,IAAI,CAAA,KAAM,MAAM,MAAA,GAAS,CAAA,SAAU,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAE1D,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAAA,EACtC,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAGX,EAAA,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,GAAM,MAAM,MAAA,GAAS,MAAA;AAC3C
|
|
1
|
+
{"version":3,"file":"url.js","sources":["../../../../../../packages/utils/src/http/url.ts"],"sourcesContent":["/**\n * 获取当前页面的域\n * @example https://www.baidu.com/s?wd=hello&ie=utf-8 => .baidu.com\n * @example https://127.0.0.1:5000/dashboard => 127.0.0.1\n * @example http://localhost:3000/test => localhost\n */\nexport function getDomain() {\n const url = window.location.href;\n // eslint-disable-next-line no-useless-escape\n const domainPattern = /https?:\\/\\/([^\\/]+)/;\n const match = url.match(domainPattern);\n\n if (match) {\n const domain = match[1];\n // 去除端口号,只保留域名或IP部分\n const domainWithoutPort = domain.split(':')[0];\n\n // 检查是否是IP地址,如果是则直接返回IP\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(domainWithoutPort)) {\n return domainWithoutPort;\n }\n\n // 检查是否是localhost,如果是则直接返回localhost\n if (domainWithoutPort === 'localhost') {\n return 'localhost';\n }\n\n // 提取主域名部分(对于真实域名,返回 .domain.com 格式)\n const domainParts = domainWithoutPort.split('.');\n if (domainParts.length > 2) {\n return `.${domainParts.slice(-2).join('.')}`;\n } else {\n return `.${domainWithoutPort}`;\n }\n }\n\n return undefined;\n}\n\n// // 使用示例\n// console.log(getDomain());\n/**\n * 拼接 url 路径,自动处理多余的 /\n * @param {...string[]} parts 路径片段\n * @returns {string}\n * @example urlJoin('https://www.baidu.com', 's', 'wd=hello') => https://www.baidu.com/s/wd=hello\n * @example urlJoin('/', 'ai/copywriting/gen') => /ai/copywriting/gen\n */\nexport function urlJoin(...parts: string[]): string {\n if (parts.length === 0) return '';\n if (parts.length === 1) return parts[0];\n\n const result = parts\n .map((part, i) => {\n if (i === 0) {\n // 对于第一个参数,如果只是 '/',保留为空但记住它\n if (part === '/') return '';\n return part.replace(/\\/+$/, ''); // 否则去掉结尾/\n }\n if (i === parts.length - 1) return part.replace(/^\\/+/, ''); // 最后一个去掉开头/\n\n return part.replace(/^\\/+|\\/+$/g, ''); // 中间的去掉头尾/\n })\n .filter(Boolean)\n .join('/');\n\n // 如果第一个参数是 '/',在结果前加上 '/'\n return parts[0] === '/' ? '/' + result : result;\n}\n\n/**\n * 获取 headers 中指定 key 的值(不区分大小写)\n * @param headers - headers 对象\n * @param key - 要查找的 key\n * @returns 找到的 header 值,未找到返回 undefined\n * @example getHeaderValue(headers, 'content-type') => 'application/json'\n * @example getHeaderValue(headers, 'Content-Type') => 'application/json'\n */\nexport function getHeaderValue(headers: Record<string, any>, key: string): any {\n const lowerKey = key.toLowerCase();\n const foundKey = Object.keys(headers).find(k => k.toLowerCase() === lowerKey);\n return foundKey ? headers[foundKey] : undefined;\n}\n"],"names":[],"mappings":";;AAMO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,GAAA,GAAM,OAAO,QAAA,CAAS,IAAA;AAE5B,EAAA,MAAM,aAAA,GAAgB,qBAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,aAAa,CAAA;AAErC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,MAAA,GAAS,MAAM,CAAC,CAAA;AAEtB,IAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAG7C,IAAA,IAAI,yBAAA,CAA0B,IAAA,CAAK,iBAAiB,CAAA,EAAG;AACrD,MAAA,OAAO,iBAAA;AAAA,IACT;AAGA,IAAA,IAAI,sBAAsB,WAAA,EAAa;AACrC,MAAA,OAAO,WAAA;AAAA,IACT;AAGA,IAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,KAAA,CAAM,GAAG,CAAA;AAC/C,IAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,MAAA,OAAO,IAAI,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,OAAO,IAAI,iBAAiB,CAAA,CAAA;AAAA,IAC9B;AAAA,EACF;AAEA,EAAA,OAAO,KAAA,CAAA;AACT;AAWO,SAAS,WAAW,KAAA,EAAyB;AAClD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAM,CAAC,CAAA;AAEtC,EAAA,MAAM,MAAA,GAAS,KAAA,CACZ,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AAChB,IAAA,IAAI,MAAM,CAAA,EAAG;AAEX,MAAA,IAAI,IAAA,KAAS,KAAK,OAAO,EAAA;AACzB,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IAChC;AACA,IAAA,IAAI,CAAA,KAAM,MAAM,MAAA,GAAS,CAAA,SAAU,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAE1D,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAAA,EACtC,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAGX,EAAA,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,GAAM,MAAM,MAAA,GAAS,MAAA;AAC3C;AAUO,SAAS,cAAA,CAAe,SAA8B,GAAA,EAAkB;AAC7E,EAAA,MAAM,QAAA,GAAW,IAAI,WAAA,EAAY;AACjC,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,WAAA,EAAY,KAAM,QAAQ,CAAA;AAC5E,EAAA,OAAO,QAAA,GAAW,OAAA,CAAQ,QAAQ,CAAA,GAAI,KAAA,CAAA;AACxC;;;;;;"}
|
package/lib/utils/src/is.d.ts
CHANGED
|
@@ -105,3 +105,25 @@ export declare const isPSD: (url: string) => boolean;
|
|
|
105
105
|
* @param url 文件链接 或 文件名
|
|
106
106
|
*/
|
|
107
107
|
export declare const isZip: (url: string) => boolean;
|
|
108
|
+
/**
|
|
109
|
+
* 移动设备正则表达式
|
|
110
|
+
*/
|
|
111
|
+
export declare const MOBILE_DEVICE_REGEX: RegExp;
|
|
112
|
+
/**
|
|
113
|
+
* 平板设备正则表达式
|
|
114
|
+
*/
|
|
115
|
+
export declare const TABLET_DEVICE_REGEX: RegExp;
|
|
116
|
+
/**
|
|
117
|
+
* 钉钉浏览器正则表达式
|
|
118
|
+
*/
|
|
119
|
+
export declare const DINGTALK_REGEX: RegExp;
|
|
120
|
+
/**
|
|
121
|
+
* 判断是否为移动设备
|
|
122
|
+
* @returns 是否为移动设备
|
|
123
|
+
*/
|
|
124
|
+
export declare const isMobile: () => boolean;
|
|
125
|
+
/**
|
|
126
|
+
* 判断是否为钉钉浏览器
|
|
127
|
+
* @returns 是否为钉钉浏览器
|
|
128
|
+
*/
|
|
129
|
+
export declare const isDingTalk: () => boolean;
|