giime 0.9.3-beta.1 → 0.9.4-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 +116 -116
- package/es/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
- package/es/components/src/base/configProvider/index.d.ts +3 -3
- package/es/components/src/base/image/Image.vue.d.ts +1 -1
- package/es/components/src/base/image/index.d.ts +2 -2
- package/es/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
- package/es/components/src/base/imageViewer/index.d.ts +1 -1
- package/es/components/src/base/progress/Progress.vue.d.ts +1 -1
- package/es/components/src/base/progress/index.d.ts +3 -3
- package/es/components/src/base/space/Space.vue.d.ts +2 -2
- package/es/components/src/base/space/index.d.ts +6 -6
- package/es/components/src/base/step/Step.vue.d.ts +1 -1
- package/es/components/src/base/step/index.d.ts +3 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +6 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs +11 -9
- package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue.mjs +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs +7 -1
- package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs.map +1 -1
- package/es/giime/index.mjs +1 -0
- 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/hooks/store/common/useLangList/index.d.ts +1 -1
- package/es/hooks/store/useLineList/index.d.ts +1 -1
- package/es/index.css +116 -116
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.mjs +1 -0
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/clarity/index.d.ts +67 -0
- package/es/utils/src/clarity/index.mjs +93 -0
- package/es/utils/src/clarity/index.mjs.map +1 -0
- package/es/utils/src/http/devProxy.mjs +1 -3
- package/es/utils/src/http/devProxy.mjs.map +1 -1
- package/lib/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
- package/lib/components/src/base/configProvider/index.d.ts +3 -3
- package/lib/components/src/base/image/Image.vue.d.ts +1 -1
- package/lib/components/src/base/image/index.d.ts +2 -2
- package/lib/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
- package/lib/components/src/base/imageViewer/index.d.ts +1 -1
- package/lib/components/src/base/progress/Progress.vue.d.ts +1 -1
- package/lib/components/src/base/progress/index.d.ts +3 -3
- package/lib/components/src/base/space/Space.vue.d.ts +2 -2
- package/lib/components/src/base/space/index.d.ts +6 -6
- package/lib/components/src/base/step/Step.vue.d.ts +1 -1
- package/lib/components/src/base/step/index.d.ts +3 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +6 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js +11 -9
- package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js.map +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue.js +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue2.js +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue2.js.map +1 -1
- package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js +7 -1
- package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js.map +1 -1
- package/lib/giime/index.js +375 -373
- 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/hooks/store/common/useLangList/index.d.ts +1 -1
- package/lib/hooks/store/useLineList/index.d.ts +1 -1
- package/lib/index.css +116 -116
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +2 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/clarity/index.d.ts +67 -0
- package/lib/utils/src/clarity/index.js +95 -0
- package/lib/utils/src/clarity/index.js.map +1 -0
- package/lib/utils/src/http/devProxy.js +1 -3
- package/lib/utils/src/http/devProxy.js.map +1 -1
- package/package.json +1 -1
package/es/index.css
CHANGED
|
@@ -887,57 +887,13 @@ video {
|
|
|
887
887
|
.gm-group:hover .group-hover\:gm-block {
|
|
888
888
|
display: block;
|
|
889
889
|
}
|
|
890
|
-
.gm-
|
|
891
|
-
|
|
892
|
-
}
|
|
893
|
-
.gm-upload-pro-file .el-checkbox-group {
|
|
894
|
-
font-size: unset;
|
|
895
|
-
}
|
|
896
|
-
.gm-upload-pro-file .el-checkbox {
|
|
897
|
-
position: absolute;
|
|
898
|
-
left: 10px;
|
|
899
|
-
top: 0;
|
|
900
|
-
z-index: 9;
|
|
901
|
-
}
|
|
902
|
-
.gm-upload-pro-file .el-upload-list--picture-card {
|
|
903
|
-
gap: 10px;
|
|
904
|
-
}
|
|
905
|
-
.gm-upload-pro-file .el-upload-list__item {
|
|
906
|
-
margin: 0;
|
|
907
|
-
}
|
|
908
|
-
.gm-upload-pro-file .el-upload-list__item-file-name {
|
|
909
|
-
line-height: 1.7;
|
|
910
|
-
}
|
|
911
|
-
.gm-upload-pro-file .el-upload-dragger {
|
|
912
|
-
padding: 0;
|
|
913
|
-
border: none;
|
|
914
|
-
width: 100%;
|
|
915
|
-
height: 100%;
|
|
916
|
-
display: flex;
|
|
917
|
-
}
|
|
918
|
-
.gm-upload-pro-file .el-upload--picture-card {
|
|
919
|
-
border: none;
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
.gm-upload-pro-file-disabled .el-upload--picture-card {
|
|
923
|
-
display: none;
|
|
924
|
-
}
|
|
925
|
-
.gm-upload-pro-file-disabled .el-upload-list__item-status-label {
|
|
926
|
-
display: none;
|
|
927
|
-
}
|
|
928
|
-
.gm-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
|
|
929
|
-
padding: 0;
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
.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 {
|
|
933
|
-
width: auto;
|
|
934
|
-
height: auto;
|
|
890
|
+
.gm-flex-center[data-v-c17deec9] {
|
|
891
|
+
align-items: center;
|
|
935
892
|
}
|
|
936
893
|
|
|
937
|
-
.gm-
|
|
938
|
-
|
|
894
|
+
.gm-flex-justify-between[data-v-c17deec9] {
|
|
895
|
+
justify-content: space-between;
|
|
939
896
|
}
|
|
940
|
-
|
|
941
897
|
.circular[data-v-d7b04fae] {
|
|
942
898
|
animation: loading-rotate-d7b04fae 2s linear infinite;
|
|
943
899
|
}
|
|
@@ -969,123 +925,100 @@ video {
|
|
|
969
925
|
stroke-dashoffset: -120px;
|
|
970
926
|
}
|
|
971
927
|
}
|
|
972
|
-
[data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
973
|
-
border-right: none;
|
|
974
|
-
}
|
|
975
928
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
[data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
981
|
-
height: 0;
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
[data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
|
|
985
|
-
height: 0;
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
[data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
|
|
989
|
-
height: 0;
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
[data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
|
|
993
|
-
height: 0;
|
|
994
|
-
}
|
|
995
|
-
[data-v-79615afd] .gmSearchForm .el-form-item {
|
|
996
|
-
margin-right: 0;
|
|
997
|
-
margin-bottom: 4px;
|
|
998
|
-
}
|
|
999
|
-
.gm-number-interval-single[data-v-4e6f4d6f] {
|
|
1000
|
-
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
1001
|
-
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
1002
|
-
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
1003
|
-
}
|
|
1004
|
-
.gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
|
|
1005
|
-
box-shadow: none;
|
|
1006
|
-
background: none;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
.gm-number-interval-close[data-v-4e6f4d6f] {
|
|
1010
|
-
display: none;
|
|
1011
|
-
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
929
|
+
.gm-range-number .el-form-item[data-v-1ae16d96] {
|
|
930
|
+
margin: 0;
|
|
1012
931
|
}
|
|
1013
932
|
|
|
1014
|
-
.gm-
|
|
1015
|
-
display: flex;
|
|
1016
|
-
}
|
|
1017
|
-
.gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
|
|
933
|
+
.gm-upload-pro-preview-dialog[data-v-80b383d8] [data-v-80b383d8] .el-dialog__body {
|
|
1018
934
|
padding: 0;
|
|
1019
935
|
}
|
|
1020
936
|
|
|
1021
|
-
.gm-upload-file-picture-card[data-v-
|
|
937
|
+
.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 {
|
|
1022
938
|
width: auto;
|
|
1023
939
|
height: auto;
|
|
1024
940
|
}
|
|
1025
|
-
.gm-
|
|
1026
|
-
align-items: center;
|
|
1027
|
-
}
|
|
1028
|
-
|
|
1029
|
-
.gm-flex-justify-between[data-v-c17deec9] {
|
|
1030
|
-
justify-content: space-between;
|
|
1031
|
-
}
|
|
1032
|
-
.gm-upload-file {
|
|
941
|
+
.gm-upload-pro-file {
|
|
1033
942
|
line-height: normal;
|
|
1034
943
|
}
|
|
1035
|
-
.gm-upload-file
|
|
944
|
+
.gm-upload-pro-file .el-checkbox-group {
|
|
945
|
+
font-size: unset;
|
|
946
|
+
}
|
|
947
|
+
.gm-upload-pro-file .el-checkbox {
|
|
1036
948
|
position: absolute;
|
|
1037
949
|
left: 10px;
|
|
1038
950
|
top: 0;
|
|
1039
951
|
z-index: 9;
|
|
1040
952
|
}
|
|
1041
|
-
.gm-upload-file .el-upload-list--picture-card {
|
|
953
|
+
.gm-upload-pro-file .el-upload-list--picture-card {
|
|
1042
954
|
gap: 10px;
|
|
1043
955
|
}
|
|
1044
|
-
.gm-upload-file .el-upload-list__item {
|
|
956
|
+
.gm-upload-pro-file .el-upload-list__item {
|
|
1045
957
|
margin: 0;
|
|
1046
|
-
border: none;
|
|
1047
958
|
}
|
|
1048
|
-
.gm-upload-file .el-upload-list__item-file-name {
|
|
1049
|
-
line-height:
|
|
959
|
+
.gm-upload-pro-file .el-upload-list__item-file-name {
|
|
960
|
+
line-height: 1.7;
|
|
1050
961
|
}
|
|
1051
|
-
.gm-upload-file .el-upload-dragger {
|
|
962
|
+
.gm-upload-pro-file .el-upload-dragger {
|
|
1052
963
|
padding: 0;
|
|
1053
964
|
border: none;
|
|
1054
965
|
width: 100%;
|
|
1055
966
|
height: 100%;
|
|
1056
967
|
display: flex;
|
|
1057
968
|
}
|
|
1058
|
-
.gm-upload-file .el-upload--picture-card {
|
|
969
|
+
.gm-upload-pro-file .el-upload--picture-card {
|
|
1059
970
|
border: none;
|
|
1060
971
|
}
|
|
1061
972
|
|
|
1062
|
-
.gm-upload-file-disabled .el-upload--picture-card {
|
|
973
|
+
.gm-upload-pro-file-disabled .el-upload--picture-card {
|
|
1063
974
|
display: none;
|
|
1064
975
|
}
|
|
1065
|
-
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
976
|
+
.gm-upload-pro-file-disabled .el-upload-list__item-status-label {
|
|
1066
977
|
display: none;
|
|
1067
978
|
}
|
|
1068
|
-
[data-v-
|
|
979
|
+
.gm-number-interval-single[data-v-4e6f4d6f] {
|
|
980
|
+
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
981
|
+
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
982
|
+
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
983
|
+
}
|
|
984
|
+
.gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
|
|
985
|
+
box-shadow: none;
|
|
986
|
+
background: none;
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
.gm-number-interval-close[data-v-4e6f4d6f] {
|
|
990
|
+
display: none;
|
|
991
|
+
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
.gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
|
|
995
|
+
display: flex;
|
|
996
|
+
}
|
|
997
|
+
[data-v-79615afd] .gmSearchForm .el-form-item {
|
|
998
|
+
margin-right: 0;
|
|
999
|
+
margin-bottom: 4px;
|
|
1000
|
+
}
|
|
1001
|
+
[data-v-050a4f74] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1069
1002
|
border-right: none;
|
|
1070
1003
|
}
|
|
1071
1004
|
|
|
1072
|
-
[data-v-
|
|
1005
|
+
[data-v-050a4f74] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
1073
1006
|
height: 0;
|
|
1074
1007
|
}
|
|
1075
1008
|
|
|
1076
|
-
[data-v-
|
|
1009
|
+
[data-v-050a4f74] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
1077
1010
|
height: 0;
|
|
1078
1011
|
}
|
|
1079
1012
|
|
|
1080
|
-
[data-v-
|
|
1013
|
+
[data-v-050a4f74] .gmTableNoBorder.el-table--border:after {
|
|
1081
1014
|
height: 0;
|
|
1082
1015
|
}
|
|
1083
1016
|
|
|
1084
|
-
[data-v-
|
|
1017
|
+
[data-v-050a4f74] .gmTableNoBorder.el-table--border:before {
|
|
1085
1018
|
height: 0;
|
|
1086
1019
|
}
|
|
1087
1020
|
|
|
1088
|
-
[data-v-
|
|
1021
|
+
[data-v-050a4f74] .gmTableNoBorder .el-table__border-left-patch {
|
|
1089
1022
|
height: 0;
|
|
1090
1023
|
}
|
|
1091
1024
|
|
|
@@ -1153,6 +1086,29 @@ video {
|
|
|
1153
1086
|
border-radius: 10px;
|
|
1154
1087
|
background: #eee;
|
|
1155
1088
|
}
|
|
1089
|
+
[data-v-3f2c8504] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1090
|
+
border-right: none;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
[data-v-3f2c8504] .gmTableNoBorder .el-table__inner-wrapper:before {
|
|
1094
|
+
height: 0;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
[data-v-3f2c8504] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
|
|
1098
|
+
height: 0;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
[data-v-3f2c8504] .gmTableNoBorder.el-table--border:after {
|
|
1102
|
+
height: 0;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
[data-v-3f2c8504] .gmTableNoBorder.el-table--border:before {
|
|
1106
|
+
height: 0;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
[data-v-3f2c8504] .gmTableNoBorder .el-table__border-left-patch {
|
|
1110
|
+
height: 0;
|
|
1111
|
+
}
|
|
1156
1112
|
@charset "UTF-8";
|
|
1157
1113
|
.table-custom-header-drawer .el-drawer__header {
|
|
1158
1114
|
padding: 10px 15px;
|
|
@@ -1208,4 +1164,48 @@ video {
|
|
|
1208
1164
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
|
|
1209
1165
|
border-radius: 10px;
|
|
1210
1166
|
background: #eee;
|
|
1167
|
+
}
|
|
1168
|
+
.gm-upload-preview-dialog[data-v-c615121c] [data-v-c615121c] .el-dialog__body {
|
|
1169
|
+
padding: 0;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
.gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload-list__item, .gm-upload-file-picture-card[data-v-c615121c] [data-v-c615121c] .el-upload--picture-card {
|
|
1173
|
+
width: auto;
|
|
1174
|
+
height: auto;
|
|
1175
|
+
}
|
|
1176
|
+
.gm-upload-file {
|
|
1177
|
+
line-height: normal;
|
|
1178
|
+
}
|
|
1179
|
+
.gm-upload-file li > .el-checkbox {
|
|
1180
|
+
position: absolute;
|
|
1181
|
+
left: 10px;
|
|
1182
|
+
top: 0;
|
|
1183
|
+
z-index: 9;
|
|
1184
|
+
}
|
|
1185
|
+
.gm-upload-file .el-upload-list--picture-card {
|
|
1186
|
+
gap: 10px;
|
|
1187
|
+
}
|
|
1188
|
+
.gm-upload-file .el-upload-list__item {
|
|
1189
|
+
margin: 0;
|
|
1190
|
+
border: none;
|
|
1191
|
+
}
|
|
1192
|
+
.gm-upload-file .el-upload-list__item-file-name {
|
|
1193
|
+
line-height: normal;
|
|
1194
|
+
}
|
|
1195
|
+
.gm-upload-file .el-upload-dragger {
|
|
1196
|
+
padding: 0;
|
|
1197
|
+
border: none;
|
|
1198
|
+
width: 100%;
|
|
1199
|
+
height: 100%;
|
|
1200
|
+
display: flex;
|
|
1201
|
+
}
|
|
1202
|
+
.gm-upload-file .el-upload--picture-card {
|
|
1203
|
+
border: none;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
.gm-upload-file-disabled .el-upload--picture-card {
|
|
1207
|
+
display: none;
|
|
1208
|
+
}
|
|
1209
|
+
.gm-upload-file-disabled .el-upload-list__item-status-label {
|
|
1210
|
+
display: none;
|
|
1211
1211
|
}
|
package/es/utils/index.d.ts
CHANGED
package/es/utils/index.mjs
CHANGED
|
@@ -15,6 +15,7 @@ export { getCountryImageUrl } from './src/image.mjs';
|
|
|
15
15
|
export { mergePropsToArray } from './src/array.mjs';
|
|
16
16
|
import './src/regexPatterns/index.mjs';
|
|
17
17
|
export { getTenantType, isGiikin, isGiiktok } from './src/tenant.mjs';
|
|
18
|
+
export { Clarity } from './src/clarity/index.mjs';
|
|
18
19
|
export { withInstall, withInstallDirective, withInstallFunction, withNoopInstall } from './src/vue/install.mjs';
|
|
19
20
|
export { GiimeResolver, bypass, kebabCase } from './src/vue/resolver.mjs';
|
|
20
21
|
export { getRouteParams, getRouteQuery } from './src/vue/router.mjs';
|
package/es/utils/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface ClarityInitOptions {
|
|
2
|
+
/**
|
|
3
|
+
* 是否自动识别用户信息
|
|
4
|
+
* @default true
|
|
5
|
+
*/
|
|
6
|
+
autoIdentify?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ClarityIdentifyOptions {
|
|
9
|
+
customId: string;
|
|
10
|
+
customSessionId?: string;
|
|
11
|
+
customPageId?: string;
|
|
12
|
+
friendlyName?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ClarityConsentV2Options {
|
|
15
|
+
ad_Storage: 'granted' | 'denied';
|
|
16
|
+
analytics_Storage: 'granted' | 'denied';
|
|
17
|
+
}
|
|
18
|
+
declare global {
|
|
19
|
+
interface Window {
|
|
20
|
+
clarity: (...args: any[]) => void;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Microsoft Clarity 封装
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* // 自动识别用户信息
|
|
29
|
+
* Clarity.init('your-project-id');
|
|
30
|
+
*
|
|
31
|
+
* // 手动设置用户信息
|
|
32
|
+
* Clarity.init('your-project-id', { autoIdentify: false });
|
|
33
|
+
* Clarity.identify({ customId: 'user-id', friendlyName: 'User Name' });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const Clarity: {
|
|
37
|
+
/**
|
|
38
|
+
* 初始化 Clarity
|
|
39
|
+
* @param projectId 项目 ID
|
|
40
|
+
* @param options 配置选项
|
|
41
|
+
*/
|
|
42
|
+
init(projectId: string, options?: ClarityInitOptions): void;
|
|
43
|
+
/**
|
|
44
|
+
* 设置标签
|
|
45
|
+
*/
|
|
46
|
+
setTag(key: string, value: string | string[]): void;
|
|
47
|
+
/**
|
|
48
|
+
* 识别用户
|
|
49
|
+
*/
|
|
50
|
+
identify(options: ClarityIdentifyOptions): void;
|
|
51
|
+
/**
|
|
52
|
+
* 同意追踪
|
|
53
|
+
*/
|
|
54
|
+
consent(consent?: boolean): void;
|
|
55
|
+
/**
|
|
56
|
+
* 同意追踪 V2
|
|
57
|
+
*/
|
|
58
|
+
consentV2(options?: ClarityConsentV2Options): void;
|
|
59
|
+
/**
|
|
60
|
+
* 升级会话
|
|
61
|
+
*/
|
|
62
|
+
upgrade(reason: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* 发送自定义事件
|
|
65
|
+
*/
|
|
66
|
+
event(eventName: string): void;
|
|
67
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { until } from '@vueuse/core';
|
|
2
|
+
import { useCurrentUserStore } from '../../../hooks/store/userCenter/useCurrentUser/index.mjs';
|
|
3
|
+
|
|
4
|
+
const injectScript = (projectId) => {
|
|
5
|
+
try {
|
|
6
|
+
(function(c, l, a, r, i, t, y) {
|
|
7
|
+
if (l.getElementById("clarity-script")) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
c[a] = c[a] || function() {
|
|
11
|
+
(c[a].q = c[a].q || []).push(arguments);
|
|
12
|
+
};
|
|
13
|
+
t = l.createElement(r);
|
|
14
|
+
t.async = 1;
|
|
15
|
+
t.src = "https://www.clarity.ms/tag/" + i + "?ref=npm";
|
|
16
|
+
t.id = "clarity-script";
|
|
17
|
+
y = l.getElementsByTagName(r)[0];
|
|
18
|
+
y.parentNode.insertBefore(t, y);
|
|
19
|
+
})(window, document, "clarity", "script", projectId);
|
|
20
|
+
} catch {
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const autoIdentifyUser = async () => {
|
|
24
|
+
const currentUserStore = useCurrentUserStore();
|
|
25
|
+
await until(() => currentUserStore.userInfo?.id).toBeTruthy();
|
|
26
|
+
const userInfo = {
|
|
27
|
+
id: currentUserStore.userInfo?.id?.toString() || "",
|
|
28
|
+
name: currentUserStore.userInfo?.name?.toString() || ""
|
|
29
|
+
};
|
|
30
|
+
Clarity.identify({
|
|
31
|
+
customId: userInfo.id,
|
|
32
|
+
customSessionId: userInfo.id,
|
|
33
|
+
customPageId: "",
|
|
34
|
+
friendlyName: `${userInfo.name} - ${userInfo.id}`
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const Clarity = {
|
|
38
|
+
/**
|
|
39
|
+
* 初始化 Clarity
|
|
40
|
+
* @param projectId 项目 ID
|
|
41
|
+
* @param options 配置选项
|
|
42
|
+
*/
|
|
43
|
+
init(projectId, options = {}) {
|
|
44
|
+
const { autoIdentify = true } = options;
|
|
45
|
+
if (!projectId) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
injectScript(projectId);
|
|
49
|
+
if (autoIdentify) {
|
|
50
|
+
autoIdentifyUser();
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* 设置标签
|
|
55
|
+
*/
|
|
56
|
+
setTag(key, value) {
|
|
57
|
+
window.clarity("set", key, value);
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* 识别用户
|
|
61
|
+
*/
|
|
62
|
+
identify(options) {
|
|
63
|
+
const { customId, customSessionId, customPageId, friendlyName } = options;
|
|
64
|
+
window.clarity("identify", customId, customSessionId, customPageId, friendlyName);
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* 同意追踪
|
|
68
|
+
*/
|
|
69
|
+
consent(consent = true) {
|
|
70
|
+
window.clarity("consent", consent);
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* 同意追踪 V2
|
|
74
|
+
*/
|
|
75
|
+
consentV2(options = { ad_Storage: "granted", analytics_Storage: "granted" }) {
|
|
76
|
+
window.clarity("consentv2", options);
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* 升级会话
|
|
80
|
+
*/
|
|
81
|
+
upgrade(reason) {
|
|
82
|
+
window.clarity("upgrade", reason);
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* 发送自定义事件
|
|
86
|
+
*/
|
|
87
|
+
event(eventName) {
|
|
88
|
+
window.clarity("event", eventName);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export { Clarity };
|
|
93
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/utils/src/clarity/index.ts"],"sourcesContent":["import { until } from '@vueuse/core';\nimport { useCurrentUserStore } from '@giime/hooks/store/userCenter/useCurrentUser';\n\nexport interface ClarityInitOptions {\n /**\n * 是否自动识别用户信息\n * @default true\n */\n autoIdentify?: boolean;\n}\n\nexport interface ClarityIdentifyOptions {\n customId: string;\n customSessionId?: string;\n customPageId?: string;\n friendlyName?: string;\n}\n\nexport interface ClarityConsentV2Options {\n ad_Storage: 'granted' | 'denied';\n analytics_Storage: 'granted' | 'denied';\n}\n\ndeclare global {\n interface Window {\n clarity: (...args: any[]) => void;\n }\n}\n\n/**\n * 注入 Clarity 脚本\n */\nconst injectScript = (projectId: string) => {\n try {\n (function (c: any, l: Document, a: string, r: string, i: string, t?: any, y?: any) {\n if (l.getElementById('clarity-script')) {\n return;\n }\n c[a] =\n c[a] ||\n function () {\n // eslint-disable-next-line prefer-rest-params\n (c[a].q = c[a].q || []).push(arguments);\n };\n t = l.createElement(r);\n t.async = 1;\n t.src = 'https://www.clarity.ms/tag/' + i + '?ref=npm';\n t.id = 'clarity-script';\n y = l.getElementsByTagName(r)[0];\n y.parentNode.insertBefore(t, y);\n })(window, document, 'clarity', 'script', projectId);\n } catch {\n // ignore\n }\n};\n\n/**\n * 自动识别用户信息\n */\nconst autoIdentifyUser = async () => {\n const currentUserStore = useCurrentUserStore();\n\n // 等待 userInfo 变为有效值\n await until(() => currentUserStore.userInfo?.id).toBeTruthy();\n\n const userInfo = {\n id: currentUserStore.userInfo?.id?.toString() || '',\n name: currentUserStore.userInfo?.name?.toString() || '',\n };\n\n Clarity.identify({\n customId: userInfo.id,\n customSessionId: userInfo.id,\n customPageId: '',\n friendlyName: `${userInfo.name} - ${userInfo.id}`,\n });\n};\n\n/**\n * Microsoft Clarity 封装\n *\n * @example\n * ```ts\n * // 自动识别用户信息\n * Clarity.init('your-project-id');\n *\n * // 手动设置用户信息\n * Clarity.init('your-project-id', { autoIdentify: false });\n * Clarity.identify({ customId: 'user-id', friendlyName: 'User Name' });\n * ```\n */\nexport const Clarity = {\n /**\n * 初始化 Clarity\n * @param projectId 项目 ID\n * @param options 配置选项\n */\n init(projectId: string, options: ClarityInitOptions = {}) {\n const { autoIdentify = true } = options;\n\n if (!projectId) {\n return;\n }\n\n injectScript(projectId);\n\n if (autoIdentify) {\n autoIdentifyUser();\n }\n },\n\n /**\n * 设置标签\n */\n setTag(key: string, value: string | string[]) {\n window.clarity('set', key, value);\n },\n\n /**\n * 识别用户\n */\n identify(options: ClarityIdentifyOptions) {\n const { customId, customSessionId, customPageId, friendlyName } = options;\n window.clarity('identify', customId, customSessionId, customPageId, friendlyName);\n },\n\n /**\n * 同意追踪\n */\n consent(consent = true) {\n window.clarity('consent', consent);\n },\n\n /**\n * 同意追踪 V2\n */\n consentV2(options: ClarityConsentV2Options = { ad_Storage: 'granted', analytics_Storage: 'granted' }) {\n window.clarity('consentv2', options);\n },\n\n /**\n * 升级会话\n */\n upgrade(reason: string) {\n window.clarity('upgrade', reason);\n },\n\n /**\n * 发送自定义事件\n */\n event(eventName: string) {\n window.clarity('event', eventName);\n },\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -60,14 +60,12 @@ const autoGenerateProxy = (env, options) => {
|
|
|
60
60
|
};
|
|
61
61
|
const giimeDevProxyFn = (env, options) => {
|
|
62
62
|
const mode = env[resetEnvMode];
|
|
63
|
-
|
|
63
|
+
return {
|
|
64
64
|
...generateProxyConfig(mode, options?.excludePaths),
|
|
65
65
|
// 预定义的服务类型配置
|
|
66
66
|
...autoGenerateProxy(env, options)
|
|
67
67
|
// 自动扫描的配置
|
|
68
68
|
};
|
|
69
|
-
console.log("res", res);
|
|
70
|
-
return res;
|
|
71
69
|
};
|
|
72
70
|
|
|
73
71
|
export { autoGenerateProxy, giimeDevProxy, giimeDevProxyFn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devProxy.mjs","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { getEnvConfig } from './createModes';\n\n/**\n * 自动代理配置选项\n */\nexport interface AutoProxyOptions {\n /** 需要排除的环境变量名称数组 */\n excludeKeys?: string[];\n /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */\n disableLocal?: boolean;\n /** 需要排除的路径数组(支持带或不带尾部斜杠,如 '/third/am' 或 '/third/am/') */\n excludePaths?: string[];\n}\n\n/**\n * 标准化路径(移除尾部斜杠)\n * @param path 原始路径\n * @returns 标准化后的路径\n */\nconst normalizePath = (path: string): string => {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n};\n\n/**\n * 检查路径是否在排除列表中\n * @param path 需要检查的路径\n * @param excludePaths 排除路径列表\n * @returns 是否应该被排除\n */\nconst isPathExcluded = (path: string, excludePaths?: string[]): boolean => {\n if (!excludePaths || excludePaths.length === 0) return false;\n const normalizedPath = normalizePath(path);\n return excludePaths.some(excludePath => normalizePath(excludePath) === normalizedPath);\n};\n\n/**\n * 预定义的 API 服务类型列表\n */\nconst API_SERVICE_TYPES = ['/third/gstore', '/third/am', '/guard', '/fe/basic', '/middle', '/product-center'];\n\n/**\n * 根据模式获取基础URL\n * @param mode 环境模式\n * @returns 基础URL\n */\nconst resolveBaseUrl = (mode?: string): string => {\n return getEnvConfig(mode).url;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @param excludePaths 需要排除的路径数组\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string, excludePaths?: string[]): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = mode || 'development';\n const baseUrl = resolveBaseUrl(giimeMode);\n\n API_SERVICE_TYPES.forEach(serviceType => {\n // 跳过被排除的路径\n if (isPathExcluded(serviceType, excludePaths)) return;\n\n config[serviceType] = {\n target: baseUrl,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${serviceType.replace(/\\//g, '\\\\/')}`), serviceType),\n bypass,\n };\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 自动生成代理配置(通过扫描环境变量)\n * - 自动读取环境变量中以斜杠开头的 VITE_ 变量\n * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器\n * - 支持排除特定环境变量\n * - 支持禁用本地开发环境代理\n *\n * @param env 环境变量对象\n * @param options 配置选项\n * @param options.excludeKeys 需要排除的环境变量名称数组\n * @param options.disableLocal 是否禁用本地开发环境代理\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法 - 自动扫描环境变量\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env)\n * }\n * })\n *\n * @example\n * // 排除特定环境变量并禁用本地代理\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径(支持带或不带尾部斜杠)\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludePaths: ['/third/am', '/third/gstore/']\n * })\n * }\n * })\n */\nexport const autoGenerateProxy = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const proxy: Record<string, string | ProxyOptions> = {};\n\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = env.VITE_GIIME_MODE || 'development';\n const proxyTarget = resolveBaseUrl(giimeMode);\n\n const processedPaths = new Set<string>();\n const excludeKeys = options?.excludeKeys || [];\n const excludePaths = options?.excludePaths;\n const disableLocal = options?.disableLocal || false;\n\n // 遍历所有环境变量\n for (const [key, value] of Object.entries(env)) {\n // 只处理 VITE_ 开头的变量\n if (!key.startsWith('VITE_')) continue;\n\n // 跳过被排除的环境变量\n if (excludeKeys.includes(key)) continue;\n\n // 跳过 VITE_BASE_URL\n if (key === 'VITE_BASE_URL') continue;\n\n // 移除引号并获取清理后的值\n const cleanValue = value.replace(/['\"]/g, '').trim();\n\n // 只处理以斜杠开头且后续有值的路径(排除单独的 '/')\n if (!cleanValue.startsWith('/') || cleanValue === '/') continue;\n\n // 如果禁用本地代理且当前模式是 development,跳过\n if (disableLocal && giimeMode === 'development') continue;\n\n // 标准化路径:移除尾部斜杠\n const normalizedPath = normalizePath(cleanValue);\n\n // 跳过被排除的路径\n if (isPathExcluded(normalizedPath, excludePaths)) continue;\n\n // 跳过已处理的路径(避免重复配置)\n if (processedPaths.has(normalizedPath)) continue;\n\n // 生成代理配置\n proxy[normalizedPath] = {\n target: proxyTarget,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${normalizedPath.replace(/\\//g, '\\\\/')}`), normalizedPath),\n bypass,\n };\n\n processedPaths.add(normalizedPath);\n }\n\n return proxy;\n};\n\n/**\n * 根据环境动态生成代理配置(融合版)\n * - 包含预定义的 API 服务类型代理配置\n * - 包含自动扫描环境变量的代理配置\n *\n * @param env 环境变量对象\n * @param options 自动代理配置选项\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env)\n * }\n * })\n *\n * @example\n * // 带选项\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludeKeys: ['VITE_APP_TITLE'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludePaths: ['/third/am', '/third/am/']\n * })\n * }\n * })\n */\nexport const giimeDevProxyFn = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n
|
|
1
|
+
{"version":3,"file":"devProxy.mjs","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n// background引用,先必须使用../../\nimport { resetEnvMode } from '../../../constants/key';\nimport { getEnvConfig } from './createModes';\n\n/**\n * 自动代理配置选项\n */\nexport interface AutoProxyOptions {\n /** 需要排除的环境变量名称数组 */\n excludeKeys?: string[];\n /** 是否禁用本地开发环境代理(禁用后不会代理到 localhost) */\n disableLocal?: boolean;\n /** 需要排除的路径数组(支持带或不带尾部斜杠,如 '/third/am' 或 '/third/am/') */\n excludePaths?: string[];\n}\n\n/**\n * 标准化路径(移除尾部斜杠)\n * @param path 原始路径\n * @returns 标准化后的路径\n */\nconst normalizePath = (path: string): string => {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n};\n\n/**\n * 检查路径是否在排除列表中\n * @param path 需要检查的路径\n * @param excludePaths 排除路径列表\n * @returns 是否应该被排除\n */\nconst isPathExcluded = (path: string, excludePaths?: string[]): boolean => {\n if (!excludePaths || excludePaths.length === 0) return false;\n const normalizedPath = normalizePath(path);\n return excludePaths.some(excludePath => normalizePath(excludePath) === normalizedPath);\n};\n\n/**\n * 预定义的 API 服务类型列表\n */\nconst API_SERVICE_TYPES = ['/third/gstore', '/third/am', '/guard', '/fe/basic', '/middle', '/product-center'];\n\n/**\n * 根据模式获取基础URL\n * @param mode 环境模式\n * @returns 基础URL\n */\nconst resolveBaseUrl = (mode?: string): string => {\n return getEnvConfig(mode).url;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @param excludePaths 需要排除的路径数组\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string, excludePaths?: string[]): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = mode || 'development';\n const baseUrl = resolveBaseUrl(giimeMode);\n\n API_SERVICE_TYPES.forEach(serviceType => {\n // 跳过被排除的路径\n if (isPathExcluded(serviceType, excludePaths)) return;\n\n config[serviceType] = {\n target: baseUrl,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${serviceType.replace(/\\//g, '\\\\/')}`), serviceType),\n bypass,\n };\n });\n\n return config;\n};\n\n/**\n * 默认开发代理配置\n * https://cn.vitejs.dev/config/#server-proxy\n */\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = generateProxyConfig();\n\n/**\n * 自动生成代理配置(通过扫描环境变量)\n * - 自动读取环境变量中以斜杠开头的 VITE_ 变量\n * - 根据 VITE_GIIME_MODE 自动确定代理目标服务器\n * - 支持排除特定环境变量\n * - 支持禁用本地开发环境代理\n *\n * @param env 环境变量对象\n * @param options 配置选项\n * @param options.excludeKeys 需要排除的环境变量名称数组\n * @param options.disableLocal 是否禁用本地开发环境代理\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法 - 自动扫描环境变量\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env)\n * }\n * })\n *\n * @example\n * // 排除特定环境变量并禁用本地代理\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludeKeys: ['VITE_APP_TITLE', 'VITE_PUBLIC_PATH'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径(支持带或不带尾部斜杠)\n * export default defineConfig({\n * server: {\n * proxy: autoGenerateProxy(process.env, {\n * excludePaths: ['/third/am', '/third/gstore/']\n * })\n * }\n * })\n */\nexport const autoGenerateProxy = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const proxy: Record<string, string | ProxyOptions> = {};\n\n // 使用 VITE_GIIME_MODE 确定代理目标,默认为 development\n const giimeMode = env.VITE_GIIME_MODE || 'development';\n const proxyTarget = resolveBaseUrl(giimeMode);\n\n const processedPaths = new Set<string>();\n const excludeKeys = options?.excludeKeys || [];\n const excludePaths = options?.excludePaths;\n const disableLocal = options?.disableLocal || false;\n\n // 遍历所有环境变量\n for (const [key, value] of Object.entries(env)) {\n // 只处理 VITE_ 开头的变量\n if (!key.startsWith('VITE_')) continue;\n\n // 跳过被排除的环境变量\n if (excludeKeys.includes(key)) continue;\n\n // 跳过 VITE_BASE_URL\n if (key === 'VITE_BASE_URL') continue;\n\n // 移除引号并获取清理后的值\n const cleanValue = value.replace(/['\"]/g, '').trim();\n\n // 只处理以斜杠开头且后续有值的路径(排除单独的 '/')\n if (!cleanValue.startsWith('/') || cleanValue === '/') continue;\n\n // 如果禁用本地代理且当前模式是 development,跳过\n if (disableLocal && giimeMode === 'development') continue;\n\n // 标准化路径:移除尾部斜杠\n const normalizedPath = normalizePath(cleanValue);\n\n // 跳过被排除的路径\n if (isPathExcluded(normalizedPath, excludePaths)) continue;\n\n // 跳过已处理的路径(避免重复配置)\n if (processedPaths.has(normalizedPath)) continue;\n\n // 生成代理配置\n proxy[normalizedPath] = {\n target: proxyTarget,\n changeOrigin: true,\n rewrite: (p: string) => p.replace(new RegExp(`^${normalizedPath.replace(/\\//g, '\\\\/')}`), normalizedPath),\n bypass,\n };\n\n processedPaths.add(normalizedPath);\n }\n\n return proxy;\n};\n\n/**\n * 根据环境动态生成代理配置(融合版)\n * - 包含预定义的 API 服务类型代理配置\n * - 包含自动扫描环境变量的代理配置\n *\n * @param env 环境变量对象\n * @param options 自动代理配置选项\n * @returns 代理配置对象\n *\n * @example\n * // 基础用法\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env)\n * }\n * })\n *\n * @example\n * // 带选项\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludeKeys: ['VITE_APP_TITLE'],\n * disableLocal: true\n * })\n * }\n * })\n *\n * @example\n * // 排除特定路径\n * export default defineConfig({\n * server: {\n * proxy: giimeDevProxyFn(process.env, {\n * excludePaths: ['/third/am', '/third/am/']\n * })\n * }\n * })\n */\nexport const giimeDevProxyFn = (env: Record<string, string>, options?: AutoProxyOptions): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n\n // 融合两种代理配置\n return {\n ...generateProxyConfig(mode, options?.excludePaths), // 预定义的服务类型配置\n ...autoGenerateProxy(env, options), // 自动扫描的配置\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -112,10 +112,10 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
112
112
|
zIndex: NumberConstructor;
|
|
113
113
|
namespace: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "el", boolean>;
|
|
114
114
|
}>>, {
|
|
115
|
+
namespace: string;
|
|
115
116
|
valueOnClear: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
116
117
|
a11y: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
117
118
|
keyboardNavigation: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
118
|
-
namespace: string;
|
|
119
119
|
}, {}>, {
|
|
120
120
|
default?: ((props: any) => any) | undefined;
|
|
121
121
|
}>;
|
|
@@ -113,10 +113,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
|
|
|
113
113
|
zIndex: NumberConstructor;
|
|
114
114
|
namespace: import("element-plus/es/utils/index.js").EpPropFinalized<StringConstructor, unknown, unknown, "el", boolean>;
|
|
115
115
|
}>>, {
|
|
116
|
+
namespace: string;
|
|
116
117
|
valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
117
118
|
a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
118
119
|
keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
119
|
-
namespace: string;
|
|
120
120
|
}, true, {}, {}, {
|
|
121
121
|
P: {};
|
|
122
122
|
B: {};
|
|
@@ -182,10 +182,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
|
|
|
182
182
|
}>>, {
|
|
183
183
|
elRef: import("vue").Ref<import("element-plus").ConfigProviderInstance | undefined>;
|
|
184
184
|
}, {}, {}, {}, {
|
|
185
|
+
namespace: string;
|
|
185
186
|
valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
186
187
|
a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
187
188
|
keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
188
|
-
namespace: string;
|
|
189
189
|
}>;
|
|
190
190
|
__isFragment?: undefined;
|
|
191
191
|
__isTeleport?: undefined;
|
|
@@ -248,10 +248,10 @@ export declare const GmConfigProvider: import("../../../../utils").SFCWithInstal
|
|
|
248
248
|
}>>, {
|
|
249
249
|
elRef: import("vue").Ref<import("element-plus").ConfigProviderInstance | undefined>;
|
|
250
250
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
251
|
+
namespace: string;
|
|
251
252
|
valueOnClear: import("element-plus/es/utils/index.js").EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
252
253
|
a11y: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
253
254
|
keyboardNavigation: import("element-plus/es/utils/index.js").EpPropMergeType<BooleanConstructor, unknown, unknown>;
|
|
254
|
-
namespace: string;
|
|
255
255
|
}, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
256
256
|
$slots: {
|
|
257
257
|
default?: ((props: any) => any) | undefined;
|
|
@@ -118,8 +118,8 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
118
118
|
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
119
119
|
error: (evt: Event) => void;
|
|
120
120
|
show: () => void;
|
|
121
|
-
close: () => void;
|
|
122
121
|
switch: (val: number) => void;
|
|
122
|
+
close: () => void;
|
|
123
123
|
load: (evt: Event) => void;
|
|
124
124
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
125
125
|
hideOnClickModal: BooleanConstructor;
|
|
@@ -118,8 +118,8 @@ export declare const GmImage: import("../../../../utils").SFCWithInstall<{
|
|
|
118
118
|
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
119
119
|
error: (evt: Event) => void;
|
|
120
120
|
show: () => void;
|
|
121
|
-
close: () => void;
|
|
122
121
|
switch: (val: number) => void;
|
|
122
|
+
close: () => void;
|
|
123
123
|
load: (evt: Event) => void;
|
|
124
124
|
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
|
|
125
125
|
hideOnClickModal: BooleanConstructor;
|
|
@@ -510,8 +510,8 @@ export declare const GmImage: import("../../../../utils").SFCWithInstall<{
|
|
|
510
510
|
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
511
511
|
error: (evt: Event) => void;
|
|
512
512
|
show: () => void;
|
|
513
|
-
close: () => void;
|
|
514
513
|
switch: (val: number) => void;
|
|
514
|
+
close: () => void;
|
|
515
515
|
load: (evt: Event) => void;
|
|
516
516
|
}, string, {
|
|
517
517
|
infinite: boolean;
|
|
@@ -83,8 +83,8 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
83
83
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
84
84
|
error: (evt: Event) => void;
|
|
85
85
|
rotate: (deg: number) => void;
|
|
86
|
-
close: () => void;
|
|
87
86
|
switch: (index: number) => void;
|
|
87
|
+
close: () => void;
|
|
88
88
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
89
89
|
urlList: {
|
|
90
90
|
readonly type: import("vue").PropType<string[]>;
|