giime 0.7.8 → 0.7.10

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 (78) hide show
  1. package/dist/index.css +101 -101
  2. package/es/api/guardBasic/request.mjs +1 -1
  3. package/es/api/materialApi/request.mjs +1 -1
  4. package/es/api/productCenter/request.mjs +1 -1
  5. package/es/api/resource/request.mjs +1 -1
  6. package/es/api/utils/createModes.d.ts +1 -17
  7. package/es/api/utils/createModes.mjs +1 -19
  8. package/es/api/utils/createModes.mjs.map +1 -1
  9. package/es/api/utils/index.mjs +2 -1
  10. package/es/api/utils/index.mjs.map +1 -1
  11. package/es/api/utils/resetAxiosBaseUrl.mjs +4 -1
  12. package/es/api/utils/resetAxiosBaseUrl.mjs.map +1 -1
  13. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +4 -1
  14. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  15. package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
  16. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +1 -8
  17. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
  18. package/es/constants/index.mjs +1 -1
  19. package/es/constants/key.d.ts +1 -0
  20. package/es/constants/key.mjs +2 -1
  21. package/es/constants/key.mjs.map +1 -1
  22. package/es/giime/index.mjs +1 -1
  23. package/es/giime/version.d.ts +1 -1
  24. package/es/giime/version.mjs +1 -1
  25. package/es/giime/version.mjs.map +1 -1
  26. package/es/index.css +101 -101
  27. package/es/utils/index.mjs +1 -1
  28. package/es/utils/src/file.d.ts +7 -5
  29. package/es/utils/src/file.mjs +26 -4
  30. package/es/utils/src/file.mjs.map +1 -1
  31. package/es/utils/src/http/createModes.d.ts +17 -0
  32. package/es/utils/src/http/createModes.mjs +20 -0
  33. package/es/utils/src/http/createModes.mjs.map +1 -0
  34. package/es/utils/src/http/devProxy.d.ts +10 -0
  35. package/es/utils/src/http/devProxy.mjs +55 -51
  36. package/es/utils/src/http/devProxy.mjs.map +1 -1
  37. package/es/utils/src/http/index.mjs +1 -1
  38. package/lib/api/guardBasic/request.js +1 -1
  39. package/lib/api/materialApi/request.js +1 -1
  40. package/lib/api/productCenter/request.js +1 -1
  41. package/lib/api/resource/request.js +1 -1
  42. package/lib/api/utils/createModes.d.ts +1 -17
  43. package/lib/api/utils/createModes.js +3 -17
  44. package/lib/api/utils/createModes.js.map +1 -1
  45. package/lib/api/utils/index.js +2 -1
  46. package/lib/api/utils/index.js.map +1 -1
  47. package/lib/api/utils/resetAxiosBaseUrl.js +4 -1
  48. package/lib/api/utils/resetAxiosBaseUrl.js.map +1 -1
  49. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +4 -1
  50. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  51. package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
  52. package/lib/components/src/business/uploadPro/UploadPro.vue2.js +1 -8
  53. package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
  54. package/lib/constants/index.js +1 -0
  55. package/lib/constants/index.js.map +1 -1
  56. package/lib/constants/key.d.ts +1 -0
  57. package/lib/constants/key.js +2 -0
  58. package/lib/constants/key.js.map +1 -1
  59. package/lib/giime/index.js +1 -0
  60. package/lib/giime/index.js.map +1 -1
  61. package/lib/giime/version.d.ts +1 -1
  62. package/lib/giime/version.js +1 -1
  63. package/lib/giime/version.js.map +1 -1
  64. package/lib/index.css +101 -101
  65. package/lib/utils/index.js +1 -0
  66. package/lib/utils/index.js.map +1 -1
  67. package/lib/utils/src/file.d.ts +7 -5
  68. package/lib/utils/src/file.js +26 -4
  69. package/lib/utils/src/file.js.map +1 -1
  70. package/lib/utils/src/http/createModes.d.ts +17 -0
  71. package/lib/utils/src/http/createModes.js +22 -0
  72. package/lib/utils/src/http/createModes.js.map +1 -0
  73. package/lib/utils/src/http/devProxy.d.ts +10 -0
  74. package/lib/utils/src/http/devProxy.js +55 -50
  75. package/lib/utils/src/http/devProxy.js.map +1 -1
  76. package/lib/utils/src/http/index.js +1 -0
  77. package/lib/utils/src/http/index.js.map +1 -1
  78. package/package.json +1 -1
package/lib/index.css CHANGED
@@ -873,18 +873,12 @@ video {
873
873
  .gm-group:hover .group-hover\:gm-block {
874
874
  display: block;
875
875
  }
876
-
877
- .gm-range-number .el-form-item[data-v-1ae16d96] {
878
- margin: 0;
879
- }
880
-
881
- .gm-upload-pro-preview-dialog[data-v-40d129e4] [data-v-40d129e4] .el-dialog__body {
882
- padding: 0;
876
+ .gm-flex-center[data-v-c17deec9] {
877
+ align-items: center;
883
878
  }
884
879
 
885
- .gm-upload-pro-file-picture-card[data-v-40d129e4] [data-v-40d129e4] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-40d129e4] [data-v-40d129e4] .el-upload--picture-card {
886
- width: auto;
887
- height: auto;
880
+ .gm-flex-justify-between[data-v-c17deec9] {
881
+ justify-content: space-between;
888
882
  }
889
883
  .circular[data-v-d7b04fae] {
890
884
  animation: loading-rotate-d7b04fae 2s linear infinite;
@@ -917,6 +911,19 @@ video {
917
911
  stroke-dashoffset: -120px;
918
912
  }
919
913
  }
914
+
915
+ .gm-range-number .el-form-item[data-v-1ae16d96] {
916
+ margin: 0;
917
+ }
918
+
919
+ .gm-upload-pro-preview-dialog[data-v-9ac30390] [data-v-9ac30390] .el-dialog__body {
920
+ padding: 0;
921
+ }
922
+
923
+ .gm-upload-pro-file-picture-card[data-v-9ac30390] [data-v-9ac30390] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-9ac30390] [data-v-9ac30390] .el-upload--picture-card {
924
+ width: auto;
925
+ height: auto;
926
+ }
920
927
  .gm-upload-pro-file {
921
928
  line-height: normal;
922
929
  }
@@ -955,66 +962,10 @@ video {
955
962
  .gm-upload-pro-file-disabled .el-upload-list__item-status-label {
956
963
  display: none;
957
964
  }
958
- .gm-flex-center[data-v-c17deec9] {
959
- align-items: center;
960
- }
961
-
962
- .gm-flex-justify-between[data-v-c17deec9] {
963
- justify-content: space-between;
964
- }
965
965
  [data-v-488ca110] .gmSearchForm .el-form-item {
966
966
  margin-right: 0;
967
967
  margin-bottom: 4px;
968
968
  }
969
- .gm-number-interval-single[data-v-4e6f4d6f] {
970
- border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
971
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
972
- background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
973
- }
974
- .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
975
- box-shadow: none;
976
- background: none;
977
- }
978
-
979
- .gm-number-interval-close[data-v-4e6f4d6f] {
980
- display: none;
981
- color: var(--el-input-icon-color, var(--el-text-color-placeholder));
982
- }
983
-
984
- .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
985
- display: flex;
986
- }
987
- .gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
988
- padding: 0;
989
- }
990
-
991
- .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 {
992
- width: auto;
993
- height: auto;
994
- }
995
- [data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
996
- border-right: none;
997
- }
998
-
999
- [data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
1000
- height: 0;
1001
- }
1002
-
1003
- [data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1004
- height: 0;
1005
- }
1006
-
1007
- [data-v-98c2e804] .gmTableNoBorder.el-table--border:after {
1008
- height: 0;
1009
- }
1010
-
1011
- [data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
1012
- height: 0;
1013
- }
1014
-
1015
- [data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
1016
- height: 0;
1017
- }
1018
969
  [data-v-2c351ff8] .gmTableNoBorder .el-table__body .el-table__cell {
1019
970
  border-right: none;
1020
971
  }
@@ -1038,41 +989,6 @@ video {
1038
989
  [data-v-2c351ff8] .gmTableNoBorder .el-table__border-left-patch {
1039
990
  height: 0;
1040
991
  }
1041
- .gm-upload-file {
1042
- line-height: normal;
1043
- }
1044
- .gm-upload-file .el-checkbox {
1045
- position: absolute;
1046
- left: 10px;
1047
- top: 0;
1048
- z-index: 9;
1049
- }
1050
- .gm-upload-file .el-upload-list--picture-card {
1051
- gap: 10px;
1052
- }
1053
- .gm-upload-file .el-upload-list__item {
1054
- margin: 0;
1055
- }
1056
- .gm-upload-file .el-upload-list__item-file-name {
1057
- line-height: normal;
1058
- }
1059
- .gm-upload-file .el-upload-dragger {
1060
- padding: 0;
1061
- border: none;
1062
- width: 100%;
1063
- height: 100%;
1064
- display: flex;
1065
- }
1066
- .gm-upload-file .el-upload--picture-card {
1067
- border: none;
1068
- }
1069
-
1070
- .gm-upload-file-disabled .el-upload--picture-card {
1071
- display: none;
1072
- }
1073
- .gm-upload-file-disabled .el-upload-list__item-status-label {
1074
- display: none;
1075
- }
1076
992
 
1077
993
  .pagination-container[data-v-47d35e7b] {
1078
994
  background: #fff;
@@ -1082,6 +998,24 @@ video {
1082
998
  display: none;
1083
999
  }
1084
1000
 
1001
+ .gm-number-interval-single[data-v-4e6f4d6f] {
1002
+ border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
1003
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
1004
+ background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
1005
+ }
1006
+ .gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
1007
+ box-shadow: none;
1008
+ background: none;
1009
+ }
1010
+
1011
+ .gm-number-interval-close[data-v-4e6f4d6f] {
1012
+ display: none;
1013
+ color: var(--el-input-icon-color, var(--el-text-color-placeholder));
1014
+ }
1015
+
1016
+ .gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
1017
+ display: flex;
1018
+ }
1085
1019
  @charset "UTF-8";
1086
1020
  .custom-operate-drawer .el-drawer__header {
1087
1021
  padding: 10px 15px;
@@ -1138,6 +1072,29 @@ video {
1138
1072
  border-radius: 10px;
1139
1073
  background: #eee;
1140
1074
  }
1075
+ [data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
1076
+ border-right: none;
1077
+ }
1078
+
1079
+ [data-v-98c2e804] .gmTableNoBorder .el-table__inner-wrapper:before {
1080
+ height: 0;
1081
+ }
1082
+
1083
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border .el-table__inner-wrapper:after {
1084
+ height: 0;
1085
+ }
1086
+
1087
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border:after {
1088
+ height: 0;
1089
+ }
1090
+
1091
+ [data-v-98c2e804] .gmTableNoBorder.el-table--border:before {
1092
+ height: 0;
1093
+ }
1094
+
1095
+ [data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
1096
+ height: 0;
1097
+ }
1141
1098
  @charset "UTF-8";
1142
1099
  .table-custom-header-drawer .el-drawer__header {
1143
1100
  padding: 10px 15px;
@@ -1193,4 +1150,47 @@ video {
1193
1150
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
1194
1151
  border-radius: 10px;
1195
1152
  background: #eee;
1153
+ }
1154
+ .gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
1155
+ padding: 0;
1156
+ }
1157
+
1158
+ .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 {
1159
+ width: auto;
1160
+ height: auto;
1161
+ }
1162
+ .gm-upload-file {
1163
+ line-height: normal;
1164
+ }
1165
+ .gm-upload-file .el-checkbox {
1166
+ position: absolute;
1167
+ left: 10px;
1168
+ top: 0;
1169
+ z-index: 9;
1170
+ }
1171
+ .gm-upload-file .el-upload-list--picture-card {
1172
+ gap: 10px;
1173
+ }
1174
+ .gm-upload-file .el-upload-list__item {
1175
+ margin: 0;
1176
+ }
1177
+ .gm-upload-file .el-upload-list__item-file-name {
1178
+ line-height: normal;
1179
+ }
1180
+ .gm-upload-file .el-upload-dragger {
1181
+ padding: 0;
1182
+ border: none;
1183
+ width: 100%;
1184
+ height: 100%;
1185
+ display: flex;
1186
+ }
1187
+ .gm-upload-file .el-upload--picture-card {
1188
+ border: none;
1189
+ }
1190
+
1191
+ .gm-upload-file-disabled .el-upload--picture-card {
1192
+ display: none;
1193
+ }
1194
+ .gm-upload-file-disabled .el-upload-list__item-status-label {
1195
+ display: none;
1196
1196
  }
@@ -114,6 +114,7 @@ exports.responseErrorMessage = errorMessage.responseErrorMessage;
114
114
  exports.req401Interceptors = interceptors.req401Interceptors;
115
115
  exports.res401Interceptors = interceptors.res401Interceptors;
116
116
  exports.giimeDevProxy = devProxy.giimeDevProxy;
117
+ exports.giimeDevProxyFn = devProxy.giimeDevProxyFn;
117
118
  exports.getDomain = url.getDomain;
118
119
  exports.urlJoin = url.urlJoin;
119
120
  exports.getDateShortcuts = dateShortcuts.getDateShortcuts;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -73,13 +73,15 @@ export declare function fileValidType(file: File, validTypes: string): boolean;
73
73
  export declare const fileMd5: (file: File) => Promise<string>;
74
74
  /**
75
75
  * 获取图片宽高信息
76
- * @param url 图片链接
76
+ * @param source 图片文件或图片链接
77
77
  * @returns 图片宽高信息
78
78
  */
79
- export declare const getImageInfo: (url: string) => Promise<{
80
- width: number;
81
- height: number;
82
- }>;
79
+ export declare function getImageInfo(source: File, options?: {
80
+ hideMessage?: boolean;
81
+ }): Promise<HTMLImageElement>;
82
+ export declare function getImageInfo(source: string, options?: {
83
+ hideMessage?: boolean;
84
+ }): Promise<HTMLImageElement>;
83
85
  /**
84
86
  * 获取视频信息
85
87
  * @param url 视频链接
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var index = require('../../components/src/plugins/message/index.js');
3
4
  var jsMd5 = require('js-md5');
4
5
  var elementPlus = require('element-plus');
5
6
 
@@ -90,14 +91,35 @@ const fileMd5 = (file) => {
90
91
  reader.readAsArrayBuffer(file);
91
92
  });
92
93
  };
93
- const getImageInfo = (url) => {
94
+ function getImageInfo(source, options) {
94
95
  return new Promise((resolve, reject) => {
95
96
  const img = new Image();
96
- img.onload = () => resolve({ width: img.width, height: img.height });
97
- img.onerror = reject;
97
+ let url;
98
+ let shouldRevokeUrl = false;
99
+ if (source instanceof File) {
100
+ url = URL.createObjectURL(source);
101
+ shouldRevokeUrl = true;
102
+ } else {
103
+ url = source;
104
+ }
105
+ img.onload = () => {
106
+ if (shouldRevokeUrl) {
107
+ URL.revokeObjectURL(url);
108
+ }
109
+ resolve(img);
110
+ };
111
+ img.onerror = () => {
112
+ if (shouldRevokeUrl) {
113
+ URL.revokeObjectURL(url);
114
+ }
115
+ if (!options?.hideMessage) {
116
+ index.GmMessage.error("\u56FE\u7247\u4FE1\u606F\u83B7\u53D6\u5931\u8D25");
117
+ }
118
+ reject();
119
+ };
98
120
  img.src = url;
99
121
  });
100
- };
122
+ }
101
123
  const getVideoInfo = (url) => {
102
124
  return new Promise((resolve, reject) => {
103
125
  const video = document.createElement("video");
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { md5 } from 'js-md5';\n\nexport { genFileId } from 'element-plus';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param url 图片链接\n * @returns 图片宽高信息\n */\nexport const getImageInfo = (url: string): Promise<{ width: number; height: number }> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve({ width: img.width, height: img.height });\n img.onerror = reject;\n img.src = url;\n });\n};\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":["md5"],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { GmMessage } from '@giime/components/src/plugins/message';\nimport { md5 } from 'js-md5';\n\nexport { genFileId } from 'element-plus';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param source 图片文件或图片链接\n * @returns 图片宽高信息\n */\nexport function getImageInfo(source: File, options?: { hideMessage?: boolean }): Promise<HTMLImageElement>;\nexport function getImageInfo(source: string, options?: { hideMessage?: boolean }): Promise<HTMLImageElement>;\nexport function getImageInfo(source: File | string, options?: { hideMessage?: boolean }): Promise<HTMLImageElement> {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const img = new Image();\n let url: string;\n let shouldRevokeUrl = false;\n\n if (source instanceof File) {\n url = URL.createObjectURL(source);\n shouldRevokeUrl = true;\n } else {\n url = source;\n }\n\n img.onload = () => {\n if (shouldRevokeUrl) {\n URL.revokeObjectURL(url);\n }\n resolve(img);\n };\n\n img.onerror = () => {\n if (shouldRevokeUrl) {\n URL.revokeObjectURL(url);\n }\n if (!options?.hideMessage) {\n GmMessage.error('图片信息获取失败');\n }\n reject();\n };\n\n img.src = url;\n });\n}\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":["md5","GmMessage"],"mappings":";;;;;;AAaA,eAAsB,UAAU,GAA4B,EAAA;AAC1D,EAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA,CAAA;AAChC,EAAA,OAAO,SAAS,IAAK,EAAA,CAAA;AACvB,CAAA;AASsB,eAAA,SAAA,CAAU,GAAa,EAAA,QAAA,EAAkB,OAAgD,EAAA;AAC7G,EAAM,MAAA,IAAA,GAAO,MAAM,SAAA,CAAU,GAAG,CAAA,CAAA;AAChC,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAG,EAAA,QAAA,EAAU,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAC5E,CAAA;AASgB,SAAA,YAAA,CAAa,MAAgB,EAAA,QAAA,EAAkB,OAAuC,EAAA;AACpG,EAAA,MAAM,OAAO,YAAa,CAAA,MAAA,EAAQ,EAAE,QAAU,EAAA,OAAA,EAAS,UAAU,CAAA,CAAA;AACjE,EAAO,OAAA,UAAA,CAAW,MAAM,QAAQ,CAAA,CAAA;AAClC,CAAA;AAOO,SAAS,aAAa,IAA6B,EAAA;AACxD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,SAAY,GAAA,MAAM,OAAQ,CAAA,MAAA,CAAO,MAAgB,CAAA,CAAA;AACxD,IAAA,MAAA,CAAO,OAAU,GAAA,MAAA,CAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAOO,SAAS,aAAa,IAA6B,EAAA;AACxD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,SAAY,GAAA,MAAM,OAAQ,CAAA,MAAA,CAAO,MAAgB,CAAA,CAAA;AACxD,IAAA,MAAA,CAAO,OAAU,GAAA,MAAA,CAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAQgB,SAAA,UAAA,CAAW,MAAY,OAAuC,EAAA;AAC5E,EAAO,OAAA,IAAI,IAAK,CAAA,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAClE,CAAA;AASgB,SAAA,UAAA,CAAW,IAAY,EAAA,QAAA,EAAkB,OAAuC,EAAA;AAC9F,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAG,EAAA,QAAA,EAAU,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,IAAY,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAC5E,CAAA;AAQgB,SAAA,YAAA,CAAa,QAAgB,OAAuC,EAAA;AAClF,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,KAAA,CAAM,yBAAyB,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,OAAA,IAAW,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACpC,IAAM,MAAA,IAAI,MAAM,uBAAuB,CAAA,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,QAAW,GAAA,OAAA,EAAS,QAAY,IAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAC/C,EAAA,MAAM,UAAa,GAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAClC,EAAA,MAAM,WAAc,GAAA,IAAI,WAAY,CAAA,UAAA,CAAW,MAAM,CAAA,CAAA;AACrD,EAAM,MAAA,QAAA,GAAW,IAAI,UAAA,CAAW,WAAW,CAAA,CAAA;AAE3C,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AAC1C,IAAA,QAAA,CAAS,CAAC,CAAA,GAAI,UAAW,CAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAAA,GACvC;AAEA,EAAO,OAAA,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA,CAAA;AAChD,CAAA;AAMO,SAAS,UAAU,IAAmB,EAAA;AAC3C,EAAO,OAAA,GAAA,CAAI,gBAAgB,IAAI,CAAA,CAAA;AACjC,CAAA;AAGgB,SAAA,aAAA,CAAc,MAAY,UAAoB,EAAA;AAE5D,EAAM,MAAA,QAAA,GAAW,KAAK,IAAQ,IAAA,EAAA,CAAA;AAE9B,EAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,WAAA,CAAY,GAAG,CAAC,CAAC,CAAA,CAAA;AAE7E,EAAM,MAAA,WAAA,GAAc,WAAW,KAAM,CAAA,GAAG,EAAE,GAAI,CAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAEjE,EAAO,OAAA,WAAA,CAAY,KAAK,CAAQ,IAAA,KAAA;AAE9B,IAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AAExB,MAAA,OAAO,aAAc,CAAA,WAAA,EAAkB,KAAA,IAAA,CAAK,WAAY,EAAA,CAAA;AAAA,KAE/C,MAAA,IAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAG,EAAA;AAE9B,MAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AACjC,MAAA,OAAO,QAAS,CAAA,UAAA,CAAW,CAAG,EAAA,QAAQ,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,KACpC,MAAA;AAEL,MAAA,OAAO,QAAa,KAAA,IAAA,CAAA;AAAA,KACtB;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAOa,MAAA,OAAA,GAAU,CAAC,IAAgC,KAAA;AACtD,EAAA,OAAO,IAAI,OAAA,CAAgB,CAAC,OAAA,EAAS,MAAW,KAAA;AAC9C,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAA,MAAA,CAAO,SAAS,CAAK,CAAA,KAAA;AACnB,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAU,EAAE,MAAsB,CAAA,MAAA,CAAA;AACxC,QAAA,IAAI,MAAQ,EAAA;AACV,UAAQ,OAAA,CAAAA,SAAA,CAAI,MAAM,CAAC,CAAA,CAAA;AAAA,SACd,MAAA;AACL,UAAO,MAAA,CAAA,IAAI,KAAM,CAAA,kDAAU,CAAC,CAAA,CAAA;AAAA,SAC9B;AAAA,eACO,KAAO,EAAA;AACd,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,CAAA,6BAAA,EAAY,KAAiB,YAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,GAAU,MAAO,CAAA,KAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,OACxF;AAAA,KACF,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,MAAM;AACrB,MAAO,MAAA,CAAA,IAAI,KAAM,CAAA,sCAAQ,CAAC,CAAA,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,GAC9B,CAAA,CAAA;AACH,EAAA;AASgB,SAAA,YAAA,CAAa,QAAuB,OAAgE,EAAA;AAClH,EAAA,OAAO,IAAI,OAAA,CAA0B,CAAC,OAAA,EAAS,MAAW,KAAA;AACxD,IAAM,MAAA,GAAA,GAAM,IAAI,KAAM,EAAA,CAAA;AACtB,IAAI,IAAA,GAAA,CAAA;AACJ,IAAA,IAAI,eAAkB,GAAA,KAAA,CAAA;AAEtB,IAAA,IAAI,kBAAkB,IAAM,EAAA;AAC1B,MAAM,GAAA,GAAA,GAAA,CAAI,gBAAgB,MAAM,CAAA,CAAA;AAChC,MAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,KACb,MAAA;AACL,MAAM,GAAA,GAAA,MAAA,CAAA;AAAA,KACR;AAEA,IAAA,GAAA,CAAI,SAAS,MAAM;AACjB,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA,CAAA;AAAA,OACzB;AACA,MAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAAA,KACb,CAAA;AAEA,IAAA,GAAA,CAAI,UAAU,MAAM;AAClB,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA,CAAA;AAAA,OACzB;AACA,MAAI,IAAA,CAAC,SAAS,WAAa,EAAA;AACzB,QAAAC,eAAA,CAAU,MAAM,kDAAU,CAAA,CAAA;AAAA,OAC5B;AACA,MAAO,MAAA,EAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,GAAA,CAAI,GAAM,GAAA,GAAA,CAAA;AAAA,GACX,CAAA,CAAA;AACH,CAAA;AAOa,MAAA,YAAA,GAAe,CAAC,GAA8E,KAAA;AACzG,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA,CAAA;AAC5C,IAAA,KAAA,CAAM,gBAAmB,GAAA,MAAM,OAAQ,CAAA,EAAE,KAAO,EAAA,KAAA,CAAM,UAAY,EAAA,MAAA,EAAQ,KAAM,CAAA,WAAA,EAAa,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AACvH,IAAA,KAAA,CAAM,OAAU,GAAA,MAAA,CAAA;AAChB,IAAA,KAAA,CAAM,GAAM,GAAA,GAAA,CAAA;AAAA,GACb,CAAA,CAAA;AACH;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ export interface CreateModesOptions {
2
+ /** 开发环境路径,如 '/giime-guard-resource-api' */
3
+ developmentPath: string;
4
+ /** 服务类型:如 'guard', 'middle' 等 */
5
+ serviceType: string;
6
+ }
7
+ /**
8
+ * 创建API模式配置
9
+ * @param options 配置对象
10
+ * @param options.developmentPath 开发环境路径,如 '/giime-guard-resource-api'
11
+ * @param options.serviceType 服务类型:如 'guard', 'middle' 等
12
+ * @returns ViteMode数组
13
+ */
14
+ export declare const createModes: (options: CreateModesOptions) => {
15
+ mode: string;
16
+ url: string;
17
+ }[];
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var url = require('./url.js');
4
+
5
+ const createModes = (options) => {
6
+ const { developmentPath, serviceType } = options;
7
+ return [
8
+ // 本地开发环境
9
+ { mode: "development", url: developmentPath },
10
+ // 前后端联调的开发环境
11
+ { mode: "dev", url: url.urlJoin("https://manage-dev.giikin.cn", serviceType) },
12
+ { mode: "develop", url: url.urlJoin("https://manage-dev.giikin.cn", serviceType) },
13
+ { mode: "test", url: url.urlJoin("https://manage-test.giikin.cn", serviceType) },
14
+ { mode: "release", url: url.urlJoin("https://manage-pre.giikin.com", serviceType) },
15
+ { mode: "production", url: url.urlJoin("https://manage.giikin.com", serviceType) },
16
+ /** 租户:吉客拓客 */
17
+ { mode: "giiktok.production", url: url.urlJoin("https://manage.kingkungmeta.com", serviceType) }
18
+ ];
19
+ };
20
+
21
+ exports.createModes = createModes;
22
+ //# sourceMappingURL=createModes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createModes.js","sources":["../../../../../../packages/utils/src/http/createModes.ts"],"sourcesContent":["import { urlJoin } from './url';\n\nexport interface CreateModesOptions {\n /** 开发环境路径,如 '/giime-guard-resource-api' */\n developmentPath: string;\n /** 服务类型:如 'guard', 'middle' 等 */\n serviceType: string;\n}\n\n/**\n * 创建API模式配置\n * @param options 配置对象\n * @param options.developmentPath 开发环境路径,如 '/giime-guard-resource-api'\n * @param options.serviceType 服务类型:如 'guard', 'middle' 等\n * @returns ViteMode数组\n */\nexport const createModes = (options: CreateModesOptions) => {\n const { developmentPath, serviceType } = options;\n\n return [\n // 本地开发环境\n { mode: 'development', url: developmentPath },\n // 前后端联调的开发环境\n { mode: 'dev', url: urlJoin('https://manage-dev.giikin.cn', serviceType) },\n { mode: 'develop', url: urlJoin('https://manage-dev.giikin.cn', serviceType) },\n { mode: 'test', url: urlJoin('https://manage-test.giikin.cn', serviceType) },\n { mode: 'release', url: urlJoin('https://manage-pre.giikin.com', serviceType) },\n { mode: 'production', url: urlJoin('https://manage.giikin.com', serviceType) },\n /** 租户:吉客拓客 */\n { mode: 'giiktok.production', url: urlJoin('https://manage.kingkungmeta.com', serviceType) },\n ];\n};\n"],"names":["urlJoin"],"mappings":";;;;AAgBa,MAAA,WAAA,GAAc,CAAC,OAAgC,KAAA;AAC1D,EAAM,MAAA,EAAE,eAAiB,EAAA,WAAA,EAAgB,GAAA,OAAA,CAAA;AAEzC,EAAO,OAAA;AAAA;AAAA,IAEL,EAAE,IAAA,EAAM,aAAe,EAAA,GAAA,EAAK,eAAgB,EAAA;AAAA;AAAA,IAE5C,EAAE,IAAM,EAAA,KAAA,EAAO,KAAKA,WAAQ,CAAA,8BAAA,EAAgC,WAAW,CAAE,EAAA;AAAA,IACzE,EAAE,IAAM,EAAA,SAAA,EAAW,KAAKA,WAAQ,CAAA,8BAAA,EAAgC,WAAW,CAAE,EAAA;AAAA,IAC7E,EAAE,IAAM,EAAA,MAAA,EAAQ,KAAKA,WAAQ,CAAA,+BAAA,EAAiC,WAAW,CAAE,EAAA;AAAA,IAC3E,EAAE,IAAM,EAAA,SAAA,EAAW,KAAKA,WAAQ,CAAA,+BAAA,EAAiC,WAAW,CAAE,EAAA;AAAA,IAC9E,EAAE,IAAM,EAAA,YAAA,EAAc,KAAKA,WAAQ,CAAA,2BAAA,EAA6B,WAAW,CAAE,EAAA;AAAA;AAAA,IAE7E,EAAE,IAAM,EAAA,oBAAA,EAAsB,KAAKA,WAAQ,CAAA,iCAAA,EAAmC,WAAW,CAAE,EAAA;AAAA,GAC7F,CAAA;AACF;;;;"}
@@ -1,2 +1,12 @@
1
1
  import type { ProxyOptions } from 'vite';
2
+ /**
3
+ * 默认开发代理配置
4
+ * https://cn.vitejs.dev/config/#server-proxy
5
+ */
2
6
  export declare const giimeDevProxy: Record<string, string | ProxyOptions>;
7
+ /**
8
+ * 根据环境动态生成代理配置
9
+ * @param env 环境变量对象
10
+ * @returns 代理配置对象
11
+ */
12
+ export declare const giimeDevProxyFn: (env: Record<string, string>) => Record<string, string | ProxyOptions>;
@@ -1,64 +1,69 @@
1
1
  'use strict';
2
2
 
3
3
  var resolver = require('../vue/resolver.js');
4
+ var key = require('../../../constants/key.js');
5
+ var createModes = require('./createModes.js');
4
6
 
5
- const giimeDevProxy = {
6
- // https://cn.vitejs.dev/config/#server-proxy
7
- "/gstore-api": {
8
- target: "http://192.168.4.125:10086/gstore/",
9
- changeOrigin: true,
10
- rewrite: (p) => p.replace(/^\/gstore-api/, ""),
11
- bypass: resolver.bypass
7
+ const API_CONFIGS = [
8
+ {
9
+ path: "/gstore-api",
10
+ defaultTarget: "https://third-ssl.giikin.cn/gstore/"
12
11
  },
13
- "/material-api": {
14
- target: "https://manage-test.giikin.cn/middle",
15
- changeOrigin: true,
16
- rewrite: (p) => p.replace(/^\/material-api/, ""),
17
- bypass: resolver.bypass
12
+ {
13
+ path: "/material-api",
14
+ defaultTarget: "https://manage-test.giikin.cn/middle",
15
+ serviceType: "middle"
18
16
  },
19
- "/shop-admin-api": {
20
- target: "https://shop-admin-api-ssl.giikin.cn",
21
- changeOrigin: true,
22
- rewrite: (p) => p.replace(/^\/shop-admin-api/, ""),
23
- bypass: resolver.bypass
17
+ {
18
+ path: "/shop-admin-api",
19
+ defaultTarget: "https://shop-admin-api-ssl.giikin.cn"
24
20
  },
25
- "/gateway-api": {
26
- target: "http://192.168.4.131:8082/",
27
- changeOrigin: true,
28
- rewrite: (p) => p.replace(/^\/gateway-api/, ""),
29
- bypass: resolver.bypass
21
+ {
22
+ path: "/product-center-api",
23
+ defaultTarget: "https://manage-dev.giikin.cn/product-center",
24
+ serviceType: "product-center"
30
25
  },
31
- "/basic-api": {
32
- target: "http://192.168.4.171:9501/",
33
- changeOrigin: true,
34
- rewrite: (p) => p.replace(/^\/basic-api/, ""),
35
- bypass: resolver.bypass
26
+ {
27
+ path: "/guard-basic-api",
28
+ defaultTarget: "https://manage-dev.giikin.cn/guard",
29
+ serviceType: "guard"
36
30
  },
37
- "/amazon-agent-api": {
38
- target: "http://192.168.4.125:10086/amazon-agent",
39
- changeOrigin: true,
40
- rewrite: (p) => p.replace(/^\/amazon-agent-api/, ""),
41
- bypass: resolver.bypass
42
- },
43
- "/product-center-api": {
44
- target: "http://192.168.4.125:10086/product-center/",
45
- changeOrigin: true,
46
- rewrite: (p) => p.replace(/^\/product-center-api/, ""),
47
- bypass: resolver.bypass
48
- },
49
- "/guard-basic-api": {
50
- target: "https://manage-dev.giikin.cn/guard/",
51
- changeOrigin: true,
52
- rewrite: (p) => p.replace(/^\/guard-basic-api/, ""),
53
- bypass: resolver.bypass
54
- },
55
- "/giime-guard-resource-api": {
56
- target: "https://manage-dev.giikin.cn/guard/",
57
- changeOrigin: true,
58
- rewrite: (p) => p.replace(/^\/giime-guard-resource-api/, ""),
59
- bypass: resolver.bypass
31
+ {
32
+ path: "/giime-guard-resource-api",
33
+ defaultTarget: "https://manage-dev.giikin.cn/guard",
34
+ serviceType: "guard"
60
35
  }
36
+ ];
37
+ const createProxyConfig = (path, target) => ({
38
+ target,
39
+ changeOrigin: true,
40
+ rewrite: (p) => p.replace(new RegExp(`^${path}`), ""),
41
+ bypass: resolver.bypass
42
+ });
43
+ const getTargetUrl = (config, mode) => {
44
+ if (!config.serviceType || !mode) {
45
+ return config.defaultTarget;
46
+ }
47
+ const modes = createModes.createModes({
48
+ developmentPath: config.path,
49
+ serviceType: config.serviceType
50
+ });
51
+ return modes.find((item) => item.mode === mode)?.url || `https://manage-dev.giikin.cn/${config.serviceType}`;
52
+ };
53
+ const generateProxyConfig = (mode) => {
54
+ const config = {};
55
+ API_CONFIGS.forEach((apiConfig) => {
56
+ const target = getTargetUrl(apiConfig, mode);
57
+ config[apiConfig.path] = createProxyConfig(apiConfig.path, target);
58
+ });
59
+ return config;
60
+ };
61
+ const giimeDevProxy = generateProxyConfig();
62
+ const giimeDevProxyFn = (env) => {
63
+ const mode = env[key.resetEnvMode];
64
+ return generateProxyConfig(mode);
61
65
  };
62
66
 
63
67
  exports.giimeDevProxy = giimeDevProxy;
68
+ exports.giimeDevProxyFn = giimeDevProxyFn;
64
69
  //# sourceMappingURL=devProxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devProxy.js","sources":["../../../../../../packages/utils/src/http/devProxy.ts"],"sourcesContent":["import type { ProxyOptions } from 'vite';\nimport { bypass } from '../vue/resolver';\n\nexport const giimeDevProxy: Record<string, string | ProxyOptions> = {\n // https://cn.vitejs.dev/config/#server-proxy\n '/gstore-api': {\n target: 'http://192.168.4.125:10086/gstore/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/gstore-api/, ''),\n bypass,\n },\n '/material-api': {\n target: 'https://manage-test.giikin.cn/middle',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/material-api/, ''),\n bypass,\n },\n '/shop-admin-api': {\n target: 'https://shop-admin-api-ssl.giikin.cn',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/shop-admin-api/, ''),\n bypass,\n },\n '/gateway-api': {\n target: 'http://192.168.4.131:8082/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/gateway-api/, ''),\n bypass,\n },\n '/basic-api': {\n target: 'http://192.168.4.171:9501/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/basic-api/, ''),\n bypass,\n },\n '/amazon-agent-api': {\n target: 'http://192.168.4.125:10086/amazon-agent',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/amazon-agent-api/, ''),\n bypass,\n },\n '/product-center-api': {\n target: 'http://192.168.4.125:10086/product-center/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/product-center-api/, ''),\n bypass,\n },\n '/guard-basic-api': {\n target: 'https://manage-dev.giikin.cn/guard/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/guard-basic-api/, ''),\n bypass,\n },\n '/giime-guard-resource-api': {\n target: 'https://manage-dev.giikin.cn/guard/',\n changeOrigin: true,\n rewrite: p => p.replace(/^\\/giime-guard-resource-api/, ''),\n bypass,\n },\n};\n"],"names":["bypass"],"mappings":";;;;AAGO,MAAM,aAAuD,GAAA;AAAA;AAAA,EAElE,aAAe,EAAA;AAAA,IACb,MAAQ,EAAA,oCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,iBAAiB,EAAE,CAAA;AAAA,YAC3CA,eAAA;AAAA,GACF;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,MAAQ,EAAA,sCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,mBAAmB,EAAE,CAAA;AAAA,YAC7CA,eAAA;AAAA,GACF;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,MAAQ,EAAA,sCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,qBAAqB,EAAE,CAAA;AAAA,YAC/CA,eAAA;AAAA,GACF;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,MAAQ,EAAA,4BAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,kBAAkB,EAAE,CAAA;AAAA,YAC5CA,eAAA;AAAA,GACF;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,MAAQ,EAAA,4BAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,gBAAgB,EAAE,CAAA;AAAA,YAC1CA,eAAA;AAAA,GACF;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,MAAQ,EAAA,yCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,uBAAuB,EAAE,CAAA;AAAA,YACjDA,eAAA;AAAA,GACF;AAAA,EACA,qBAAuB,EAAA;AAAA,IACrB,MAAQ,EAAA,4CAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,yBAAyB,EAAE,CAAA;AAAA,YACnDA,eAAA;AAAA,GACF;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,MAAQ,EAAA,qCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,sBAAsB,EAAE,CAAA;AAAA,YAChDA,eAAA;AAAA,GACF;AAAA,EACA,2BAA6B,EAAA;AAAA,IAC3B,MAAQ,EAAA,qCAAA;AAAA,IACR,YAAc,EAAA,IAAA;AAAA,IACd,OAAS,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,+BAA+B,EAAE,CAAA;AAAA,YACzDA,eAAA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"devProxy.js","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 { createModes } from './createModes';\n\n/**\n * API代理配置接口\n */\ninterface ApiProxyConfig {\n /** API路径 */\n path: string;\n /** 默认目标地址 */\n defaultTarget: string;\n /** 服务类型(用于createModes,同时也是URL后缀) */\n serviceType?: string;\n}\n\n/**\n * 所有API的基础配置\n */\nconst API_CONFIGS: ApiProxyConfig[] = [\n {\n path: '/gstore-api',\n defaultTarget: 'https://third-ssl.giikin.cn/gstore/',\n },\n {\n path: '/material-api',\n defaultTarget: 'https://manage-test.giikin.cn/middle',\n serviceType: 'middle',\n },\n {\n path: '/shop-admin-api',\n defaultTarget: 'https://shop-admin-api-ssl.giikin.cn',\n },\n {\n path: '/product-center-api',\n defaultTarget: 'https://manage-dev.giikin.cn/product-center',\n serviceType: 'product-center',\n },\n {\n path: '/guard-basic-api',\n defaultTarget: 'https://manage-dev.giikin.cn/guard',\n serviceType: 'guard',\n },\n {\n path: '/giime-guard-resource-api',\n defaultTarget: 'https://manage-dev.giikin.cn/guard',\n serviceType: 'guard',\n },\n];\n\n/**\n * 创建代理配置项\n * @param path API路径\n * @param target 目标地址\n * @returns 代理配置\n */\nconst createProxyConfig = (path: string, target: string): ProxyOptions => ({\n target,\n changeOrigin: true,\n rewrite: p => p.replace(new RegExp(`^${path}`), ''),\n bypass,\n});\n\n/**\n * 根据模式获取目标URL\n * @param config API配置\n * @param mode 环境模式\n * @returns 目标URL\n */\nconst getTargetUrl = (config: ApiProxyConfig, mode?: string): string => {\n if (!config.serviceType || !mode) {\n return config.defaultTarget;\n }\n\n const modes = createModes({\n developmentPath: config.path,\n serviceType: config.serviceType,\n });\n\n return modes.find(item => item.mode === mode)?.url || `https://manage-dev.giikin.cn/${config.serviceType}`;\n};\n\n/**\n * 生成代理配置对象\n * @param mode 环境模式(可选)\n * @returns 代理配置对象\n */\nconst generateProxyConfig = (mode?: string): Record<string, string | ProxyOptions> => {\n const config: Record<string, string | ProxyOptions> = {};\n\n API_CONFIGS.forEach(apiConfig => {\n const target = getTargetUrl(apiConfig, mode);\n config[apiConfig.path] = createProxyConfig(apiConfig.path, target);\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 * @param env 环境变量对象\n * @returns 代理配置对象\n */\nexport const giimeDevProxyFn = (env: Record<string, string>): Record<string, string | ProxyOptions> => {\n const mode = env[resetEnvMode];\n return generateProxyConfig(mode);\n};\n"],"names":["bypass","createModes","resetEnvMode"],"mappings":";;;;;;AAqBA,MAAM,WAAgC,GAAA;AAAA,EACpC;AAAA,IACE,IAAM,EAAA,aAAA;AAAA,IACN,aAAe,EAAA,qCAAA;AAAA,GACjB;AAAA,EACA;AAAA,IACE,IAAM,EAAA,eAAA;AAAA,IACN,aAAe,EAAA,sCAAA;AAAA,IACf,WAAa,EAAA,QAAA;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAM,EAAA,iBAAA;AAAA,IACN,aAAe,EAAA,sCAAA;AAAA,GACjB;AAAA,EACA;AAAA,IACE,IAAM,EAAA,qBAAA;AAAA,IACN,aAAe,EAAA,6CAAA;AAAA,IACf,WAAa,EAAA,gBAAA;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAM,EAAA,kBAAA;AAAA,IACN,aAAe,EAAA,oCAAA;AAAA,IACf,WAAa,EAAA,OAAA;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAM,EAAA,2BAAA;AAAA,IACN,aAAe,EAAA,oCAAA;AAAA,IACf,WAAa,EAAA,OAAA;AAAA,GACf;AACF,CAAA,CAAA;AAQA,MAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,MAAkC,MAAA;AAAA,EACzE,MAAA;AAAA,EACA,YAAc,EAAA,IAAA;AAAA,EACd,OAAA,EAAS,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAA,EAAG,EAAE,CAAA;AAAA,UAClDA,eAAA;AACF,CAAA,CAAA,CAAA;AAQA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAwB,IAA0B,KAAA;AACtE,EAAA,IAAI,CAAC,MAAA,CAAO,WAAe,IAAA,CAAC,IAAM,EAAA;AAChC,IAAA,OAAO,MAAO,CAAA,aAAA,CAAA;AAAA,GAChB;AAEA,EAAA,MAAM,QAAQC,uBAAY,CAAA;AAAA,IACxB,iBAAiB,MAAO,CAAA,IAAA;AAAA,IACxB,aAAa,MAAO,CAAA,WAAA;AAAA,GACrB,CAAA,CAAA;AAED,EAAO,OAAA,KAAA,CAAM,IAAK,CAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,IAAA,KAAS,IAAI,CAAG,EAAA,GAAA,IAAO,CAAgC,6BAAA,EAAA,MAAA,CAAO,WAAW,CAAA,CAAA,CAAA;AAC1G,CAAA,CAAA;AAOA,MAAM,mBAAA,GAAsB,CAAC,IAAyD,KAAA;AACpF,EAAA,MAAM,SAAgD,EAAC,CAAA;AAEvD,EAAA,WAAA,CAAY,QAAQ,CAAa,SAAA,KAAA;AAC/B,IAAM,MAAA,MAAA,GAAS,YAAa,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAC3C,IAAA,MAAA,CAAO,UAAU,IAAI,CAAA,GAAI,iBAAkB,CAAA,SAAA,CAAU,MAAM,MAAM,CAAA,CAAA;AAAA,GAClE,CAAA,CAAA;AAED,EAAO,OAAA,MAAA,CAAA;AACT,CAAA,CAAA;AAMO,MAAM,gBAAuD,mBAAoB,GAAA;AAO3E,MAAA,eAAA,GAAkB,CAAC,GAAuE,KAAA;AACrG,EAAM,MAAA,IAAA,GAAO,IAAIC,gBAAY,CAAA,CAAA;AAC7B,EAAA,OAAO,oBAAoB,IAAI,CAAA,CAAA;AACjC;;;;;"}
@@ -14,6 +14,7 @@ exports.responseErrorMessage = errorMessage.responseErrorMessage;
14
14
  exports.req401Interceptors = interceptors.req401Interceptors;
15
15
  exports.res401Interceptors = interceptors.res401Interceptors;
16
16
  exports.giimeDevProxy = devProxy.giimeDevProxy;
17
+ exports.giimeDevProxyFn = devProxy.giimeDevProxyFn;
17
18
  exports.getDomain = url.getDomain;
18
19
  exports.urlJoin = url.urlJoin;
19
20
  //# 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":";;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.7.8",
3
+ "version": "0.7.10",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",