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.
Files changed (113) hide show
  1. package/dist/index.css +107 -104
  2. package/es/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
  3. package/es/components/src/base/autocomplete/autocomplete.d.ts +1 -1
  4. package/es/components/src/base/autocomplete/index.d.ts +7 -7
  5. package/es/components/src/base/input/Input.vue.d.ts +3 -3
  6. package/es/components/src/base/input/index.d.ts +7 -7
  7. package/es/components/src/base/input/input.d.ts +1 -1
  8. package/es/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
  9. package/es/components/src/base/inputNumber/index.d.ts +7 -7
  10. package/es/components/src/base/inputNumber/inputNumber.d.ts +1 -1
  11. package/es/components/src/base/mention/Mention.vue.d.ts +3 -3
  12. package/es/components/src/base/mention/index.d.ts +7 -7
  13. package/es/components/src/base/mention/mention.d.ts +1 -1
  14. package/es/components/src/base/upload/Upload.vue.d.ts +1 -1
  15. package/es/components/src/base/upload/index.d.ts +3 -3
  16. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +4 -1
  17. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  18. package/es/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
  19. package/es/components/src/business/uploadItem/index.d.ts +3 -3
  20. package/es/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
  21. package/es/components/src/business/uploadPro/index.d.ts +3 -3
  22. package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs +2 -1
  23. package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs.map +1 -1
  24. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
  25. package/es/components/src/composite/uploadFile/index.d.ts +3 -3
  26. package/es/giime/index.mjs +4 -2
  27. package/es/giime/index.mjs.map +1 -1
  28. package/es/giime/version.d.ts +1 -1
  29. package/es/giime/version.mjs +1 -1
  30. package/es/giime/version.mjs.map +1 -1
  31. package/es/index.css +107 -104
  32. package/es/utils/__tests__/crypto/base64.test.d.ts +1 -0
  33. package/es/utils/__tests__/vue/router.test.d.ts +1 -0
  34. package/es/utils/index.mjs +4 -2
  35. package/es/utils/index.mjs.map +1 -1
  36. package/es/utils/src/crypto/base64.d.ts +42 -0
  37. package/es/utils/src/crypto/base64.mjs +44 -0
  38. package/es/utils/src/crypto/base64.mjs.map +1 -0
  39. package/es/utils/src/crypto/index.d.ts +1 -0
  40. package/es/utils/src/crypto/index.mjs +1 -0
  41. package/es/utils/src/crypto/index.mjs.map +1 -1
  42. package/es/utils/src/http/createAxios.mjs +8 -0
  43. package/es/utils/src/http/createAxios.mjs.map +1 -1
  44. package/es/utils/src/http/index.mjs +1 -1
  45. package/es/utils/src/http/url.d.ts +9 -0
  46. package/es/utils/src/http/url.mjs +6 -1
  47. package/es/utils/src/http/url.mjs.map +1 -1
  48. package/es/utils/src/is.d.ts +22 -0
  49. package/es/utils/src/is.mjs +16 -1
  50. package/es/utils/src/is.mjs.map +1 -1
  51. package/es/utils/src/vue/index.d.ts +1 -0
  52. package/es/utils/src/vue/index.mjs +1 -0
  53. package/es/utils/src/vue/index.mjs.map +1 -1
  54. package/es/utils/src/vue/router.d.ts +30 -0
  55. package/es/utils/src/vue/router.mjs +28 -0
  56. package/es/utils/src/vue/router.mjs.map +1 -0
  57. package/lib/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
  58. package/lib/components/src/base/autocomplete/autocomplete.d.ts +1 -1
  59. package/lib/components/src/base/autocomplete/index.d.ts +7 -7
  60. package/lib/components/src/base/input/Input.vue.d.ts +3 -3
  61. package/lib/components/src/base/input/index.d.ts +7 -7
  62. package/lib/components/src/base/input/input.d.ts +1 -1
  63. package/lib/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
  64. package/lib/components/src/base/inputNumber/index.d.ts +7 -7
  65. package/lib/components/src/base/inputNumber/inputNumber.d.ts +1 -1
  66. package/lib/components/src/base/mention/Mention.vue.d.ts +3 -3
  67. package/lib/components/src/base/mention/index.d.ts +7 -7
  68. package/lib/components/src/base/mention/mention.d.ts +1 -1
  69. package/lib/components/src/base/upload/Upload.vue.d.ts +1 -1
  70. package/lib/components/src/base/upload/index.d.ts +3 -3
  71. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +3 -0
  72. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  73. package/lib/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
  74. package/lib/components/src/business/uploadItem/index.d.ts +3 -3
  75. package/lib/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
  76. package/lib/components/src/business/uploadPro/index.d.ts +3 -3
  77. package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js +2 -1
  78. package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js.map +1 -1
  79. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
  80. package/lib/components/src/composite/uploadFile/index.d.ts +3 -3
  81. package/lib/giime/index.js +16 -0
  82. package/lib/giime/index.js.map +1 -1
  83. package/lib/giime/version.d.ts +1 -1
  84. package/lib/giime/version.js +1 -1
  85. package/lib/giime/version.js.map +1 -1
  86. package/lib/index.css +107 -104
  87. package/lib/utils/__tests__/crypto/base64.test.d.ts +1 -0
  88. package/lib/utils/__tests__/vue/router.test.d.ts +1 -0
  89. package/lib/utils/index.js +16 -0
  90. package/lib/utils/index.js.map +1 -1
  91. package/lib/utils/src/crypto/base64.d.ts +42 -0
  92. package/lib/utils/src/crypto/base64.js +51 -0
  93. package/lib/utils/src/crypto/base64.js.map +1 -0
  94. package/lib/utils/src/crypto/index.d.ts +1 -0
  95. package/lib/utils/src/crypto/index.js +7 -0
  96. package/lib/utils/src/crypto/index.js.map +1 -1
  97. package/lib/utils/src/http/createAxios.js +8 -0
  98. package/lib/utils/src/http/createAxios.js.map +1 -1
  99. package/lib/utils/src/http/index.js +1 -0
  100. package/lib/utils/src/http/index.js.map +1 -1
  101. package/lib/utils/src/http/url.d.ts +9 -0
  102. package/lib/utils/src/http/url.js +6 -0
  103. package/lib/utils/src/http/url.js.map +1 -1
  104. package/lib/utils/src/is.d.ts +22 -0
  105. package/lib/utils/src/is.js +20 -0
  106. package/lib/utils/src/is.js.map +1 -1
  107. package/lib/utils/src/vue/index.d.ts +1 -0
  108. package/lib/utils/src/vue/index.js +3 -0
  109. package/lib/utils/src/vue/index.js.map +1 -1
  110. package/lib/utils/src/vue/router.d.ts +30 -0
  111. package/lib/utils/src/vue/router.js +31 -0
  112. package/lib/utils/src/vue/router.js.map +1 -0
  113. 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-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
884
- padding: 0;
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-range-number .el-form-item[data-v-1ae16d96] {
931
- margin: 0;
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
- .gm-upload-file {
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: normal;
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
- .gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
1001
- padding: 0;
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-98c2e804] .gmTableNoBorder.el-table--border:after {
1055
- height: 0;
1003
+ .pagination-container[data-v-47d35e7b] {
1004
+ background: #fff;
1005
+ padding-top: 12px;
1056
1006
  }
1057
-
1058
- [data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
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 {};
@@ -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;
@@ -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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"}
@@ -1,2 +1,3 @@
1
1
  export * from './md5';
2
2
  export * from './sha1';
3
+ export * from './base64';
@@ -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":"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"}
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":"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"}
@@ -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;;;;;;"}
@@ -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;