@haluo/util 2.1.5 → 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +20 -19
- package/dist/modules/app-call/configs.js +14 -6
- package/dist/modules/app-call/core.d.ts +1 -1
- package/dist/modules/app-call/core.js +59 -49
- package/dist/modules/app-call/extensions.d.ts +1 -1
- package/dist/modules/app-call/extensions.js +324 -257
- package/dist/modules/app-call/index.js +9 -9
- package/dist/modules/app-call/offline.js +42 -34
- package/dist/modules/cookie/index.js +22 -17
- package/dist/modules/date/index.js +54 -48
- package/dist/modules/dom/index.js +21 -15
- package/dist/modules/filter/index.js +14 -8
- package/dist/modules/format/index.js +9 -5
- package/dist/modules/match/index.js +8 -5
- package/dist/modules/monitor/lib/jsError.js +27 -38
- package/dist/modules/monitor/lib/timing.js +15 -17
- package/dist/modules/monitor/lib/xhr.js +26 -25
- package/dist/modules/monitor/utils/tracker.js +22 -10
- package/dist/modules/number/index.js +33 -30
- package/dist/modules/open-app/index.d.ts +1 -0
- package/dist/modules/open-app/index.js +55 -64
- package/dist/modules/sentry/index.js +16 -12
- package/dist/modules/tools/index.d.ts +1 -1
- package/dist/modules/tools/index.js +164 -154
- package/dist/modules/track/index.js +149 -96
- package/dist/modules/upload/aliOss.d.ts +36 -4
- package/dist/modules/upload/aliOss.js +569 -396
- package/dist/modules/upload/index.js +32 -29
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/modules/app-call/partner-bridge.d.ts +0 -5
- package/dist/modules/app-call/partner-bridge.js +0 -68
|
@@ -14,28 +14,75 @@
|
|
|
14
14
|
* tracker.track('EVENT_ID', { key: 'value' })
|
|
15
15
|
* tracker.trackError({ err: 'error message' })
|
|
16
16
|
*/
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
17
64
|
export * from './types';
|
|
18
65
|
/** 默认埋点上报URL */
|
|
19
|
-
|
|
66
|
+
var DEFAULT_LOG_URL = 'https://log-center.58moto.com/am/log/v1/json';
|
|
20
67
|
/** 默认应用名称 */
|
|
21
|
-
|
|
68
|
+
var DEFAULT_APP_NAME = 'moto';
|
|
22
69
|
/** 默认错误上报事件ID */
|
|
23
|
-
|
|
70
|
+
var ERROR_EVENT_ID = 'S_00000000000082';
|
|
24
71
|
/** 默认错误应用类型(H5异常) */
|
|
25
|
-
|
|
72
|
+
var DEFAULT_ERROR_APPTYPE = '2012';
|
|
26
73
|
/**
|
|
27
74
|
* 内置的简易 httpClient
|
|
28
75
|
* 使用 fetch 实现 POST 请求
|
|
29
76
|
*/
|
|
30
|
-
|
|
31
|
-
post: (url, data)
|
|
77
|
+
var defaultHttpClient = {
|
|
78
|
+
post: function (url, data) {
|
|
32
79
|
if (typeof window === 'undefined' || !window.fetch) {
|
|
33
80
|
console.warn('[Tracker] 当前环境不支持 fetch');
|
|
34
81
|
return Promise.resolve();
|
|
35
82
|
}
|
|
36
83
|
// 构建 form-urlencoded 格式的请求体
|
|
37
|
-
|
|
38
|
-
.map(key
|
|
84
|
+
var formBody = Object.keys(data)
|
|
85
|
+
.map(function (key) { return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); })
|
|
39
86
|
.join('&');
|
|
40
87
|
return fetch(url, {
|
|
41
88
|
method: 'POST',
|
|
@@ -43,7 +90,7 @@ const defaultHttpClient = {
|
|
|
43
90
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
44
91
|
},
|
|
45
92
|
body: formBody
|
|
46
|
-
}).then(res
|
|
93
|
+
}).then(function (res) { return res.json(); }).catch(function (err) {
|
|
47
94
|
console.error('[Tracker] 埋点请求失败:', err);
|
|
48
95
|
});
|
|
49
96
|
}
|
|
@@ -56,13 +103,13 @@ function safeGetLocalStorage(key, defaultValue) {
|
|
|
56
103
|
if (typeof window === 'undefined' || !window.localStorage) {
|
|
57
104
|
return defaultValue;
|
|
58
105
|
}
|
|
59
|
-
|
|
106
|
+
var value = window.localStorage.getItem(key);
|
|
60
107
|
if (!value || value === 'undefined') {
|
|
61
108
|
return defaultValue;
|
|
62
109
|
}
|
|
63
110
|
return JSON.parse(value);
|
|
64
111
|
}
|
|
65
|
-
catch {
|
|
112
|
+
catch (_a) {
|
|
66
113
|
return defaultValue;
|
|
67
114
|
}
|
|
68
115
|
}
|
|
@@ -79,8 +126,8 @@ function getUserAgent() {
|
|
|
79
126
|
* 检测平台类型
|
|
80
127
|
*/
|
|
81
128
|
function detectPlatform(ua) {
|
|
82
|
-
|
|
83
|
-
|
|
129
|
+
var isAndroid = ua.indexOf('android') > -1;
|
|
130
|
+
var isHarmonyos = ua.indexOf('harmonyos') > -1;
|
|
84
131
|
return isAndroid || isHarmonyos ? 'android' : 'ios';
|
|
85
132
|
}
|
|
86
133
|
/**
|
|
@@ -108,11 +155,12 @@ function getGlobalAppCall() {
|
|
|
108
155
|
* 根据 UA 检测渠道:微信、QQ、微博等
|
|
109
156
|
*/
|
|
110
157
|
function defaultGetChannel() {
|
|
158
|
+
var _a;
|
|
111
159
|
if (typeof window === 'undefined' || !window.navigator) {
|
|
112
160
|
return 'other';
|
|
113
161
|
}
|
|
114
|
-
|
|
115
|
-
|
|
162
|
+
var ua = window.navigator.userAgent.toLowerCase();
|
|
163
|
+
var isAndroid = ua.indexOf('android') > -1;
|
|
116
164
|
// 区分出微信、QQ、微博平台、其他
|
|
117
165
|
if (ua.indexOf('micromessenger') > -1) {
|
|
118
166
|
// 在微信中打开
|
|
@@ -132,78 +180,77 @@ function defaultGetChannel() {
|
|
|
132
180
|
}
|
|
133
181
|
else {
|
|
134
182
|
// 使用 AppCall 获取包名,或返回 other
|
|
135
|
-
|
|
136
|
-
return appCall
|
|
183
|
+
var appCall = getGlobalAppCall();
|
|
184
|
+
return ((_a = appCall === null || appCall === void 0 ? void 0 : appCall.getAppPackage) === null || _a === void 0 ? void 0 : _a.call(appCall)) || 'other';
|
|
137
185
|
}
|
|
138
186
|
}
|
|
139
187
|
/**
|
|
140
188
|
* Track 类
|
|
141
189
|
* 提供埋点上报功能
|
|
142
190
|
*/
|
|
143
|
-
|
|
144
|
-
config
|
|
145
|
-
constructor(config) {
|
|
191
|
+
var Tracker = /** @class */ (function () {
|
|
192
|
+
function Tracker(config) {
|
|
146
193
|
this.config = config;
|
|
147
194
|
}
|
|
148
195
|
/**
|
|
149
196
|
* 获取当前版本号
|
|
150
197
|
* 优先级:window.AppCall.getAppVersion() > 传入的 appCall > config.version
|
|
151
198
|
*/
|
|
152
|
-
getVersion() {
|
|
153
|
-
|
|
199
|
+
Tracker.prototype.getVersion = function () {
|
|
200
|
+
var _a = this.config, version = _a.version, appCall = _a.appCall;
|
|
154
201
|
// 优先使用全局 window.AppCall 获取版本号
|
|
155
|
-
|
|
156
|
-
if (globalAppCall
|
|
157
|
-
|
|
202
|
+
var globalAppCall = getGlobalAppCall();
|
|
203
|
+
if (globalAppCall === null || globalAppCall === void 0 ? void 0 : globalAppCall.getAppVersion) {
|
|
204
|
+
var appVersion = globalAppCall.getAppVersion();
|
|
158
205
|
if (appVersion)
|
|
159
206
|
return appVersion;
|
|
160
207
|
}
|
|
161
208
|
// 其次使用传入的 appCall
|
|
162
|
-
if (appCall
|
|
163
|
-
|
|
209
|
+
if (appCall === null || appCall === void 0 ? void 0 : appCall.getAppVersion) {
|
|
210
|
+
var appVersion = appCall.getAppVersion();
|
|
164
211
|
if (appVersion)
|
|
165
212
|
return appVersion;
|
|
166
213
|
}
|
|
167
214
|
return version || '';
|
|
168
|
-
}
|
|
215
|
+
};
|
|
169
216
|
/**
|
|
170
217
|
* 获取渠道号
|
|
171
218
|
* 优先使用自定义 getChannel,否则使用内置的默认方法
|
|
172
219
|
*/
|
|
173
|
-
getChannel() {
|
|
220
|
+
Tracker.prototype.getChannel = function () {
|
|
174
221
|
if (this.config.getChannel) {
|
|
175
222
|
return this.config.getChannel();
|
|
176
223
|
}
|
|
177
224
|
// 使用内置的 getChannel 方法
|
|
178
225
|
return defaultGetChannel();
|
|
179
|
-
}
|
|
226
|
+
};
|
|
180
227
|
/**
|
|
181
228
|
* 检查是否命中AB测试
|
|
182
229
|
*/
|
|
183
|
-
checkAbTest(eId) {
|
|
230
|
+
Tracker.prototype.checkAbTest = function (eId) {
|
|
184
231
|
if (!this.config.enableAbTest || !this.config.getAbFlags) {
|
|
185
232
|
return undefined;
|
|
186
233
|
}
|
|
187
234
|
try {
|
|
188
|
-
|
|
235
|
+
var abFlags = this.config.getAbFlags();
|
|
189
236
|
// 支持数组和对象两种格式
|
|
190
|
-
|
|
191
|
-
return flagList.find(item
|
|
237
|
+
var flagList = Array.isArray(abFlags) ? abFlags : Object.values(abFlags);
|
|
238
|
+
return flagList.find(function (item) { var _a; return (_a = item === null || item === void 0 ? void 0 : item.indexList) === null || _a === void 0 ? void 0 : _a.includes(eId); });
|
|
192
239
|
}
|
|
193
|
-
catch {
|
|
240
|
+
catch (_a) {
|
|
194
241
|
return undefined;
|
|
195
242
|
}
|
|
196
|
-
}
|
|
243
|
+
};
|
|
197
244
|
/**
|
|
198
245
|
* 构建埋点请求数据
|
|
199
246
|
*/
|
|
200
|
-
buildPostData(params) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
247
|
+
Tracker.prototype.buildPostData = function (params) {
|
|
248
|
+
var eId = params.eId, eventContent = params.eventContent;
|
|
249
|
+
var deviceData = safeGetLocalStorage('deviceData', {});
|
|
250
|
+
var userData = safeGetLocalStorage('user', {});
|
|
251
|
+
var ua = getUserAgent();
|
|
252
|
+
var platform = detectPlatform(ua);
|
|
253
|
+
var isClient = isClientEnv();
|
|
207
254
|
return {
|
|
208
255
|
deviceid: deviceData.deviceId || '',
|
|
209
256
|
plateform: isClient ? platform : 'h5',
|
|
@@ -229,90 +276,93 @@ class Tracker {
|
|
|
229
276
|
}
|
|
230
277
|
]
|
|
231
278
|
};
|
|
232
|
-
}
|
|
279
|
+
};
|
|
233
280
|
/**
|
|
234
281
|
* 发送埋点请求
|
|
235
282
|
*/
|
|
236
|
-
sendRequest(postData) {
|
|
237
|
-
|
|
238
|
-
|
|
283
|
+
Tracker.prototype.sendRequest = function (postData) {
|
|
284
|
+
var _a, _b;
|
|
285
|
+
var logUrl = this.config.logUrl || DEFAULT_LOG_URL;
|
|
286
|
+
var appName = this.config.appName || DEFAULT_APP_NAME;
|
|
239
287
|
// 优先使用传入的 httpClient,否则使用内置的默认实现
|
|
240
|
-
|
|
288
|
+
var httpClient = ((_b = (_a = this.config).httpClient) === null || _b === void 0 ? void 0 : _b.call(_a)) || defaultHttpClient;
|
|
241
289
|
return httpClient.post(logUrl, {
|
|
242
290
|
json: JSON.stringify(postData),
|
|
243
|
-
appName
|
|
291
|
+
appName: appName
|
|
244
292
|
});
|
|
245
|
-
}
|
|
293
|
+
};
|
|
246
294
|
/**
|
|
247
295
|
* 核心埋点方法
|
|
248
296
|
* @param params 埋点参数
|
|
249
297
|
*/
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const abFlag = this.checkAbTest(eId);
|
|
260
|
-
if (abFlag?.test) {
|
|
261
|
-
// 优先使用全局 window.AppCall,其次使用传入的 appCall
|
|
262
|
-
const globalAppCall = getGlobalAppCall();
|
|
263
|
-
const appCall = globalAppCall || this.config.appCall;
|
|
264
|
-
if (appCall?.sendEventMsg) {
|
|
265
|
-
return appCall.sendEventMsg({ eId, eventContent: eventContent || '{}' });
|
|
298
|
+
Tracker.prototype.trackUser = function (params) {
|
|
299
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
300
|
+
var eId, eventContent, abFlag, globalAppCall, appCall, postData;
|
|
301
|
+
return __generator(this, function (_a) {
|
|
302
|
+
eId = params.eId, eventContent = params.eventContent;
|
|
303
|
+
// 开发环境不发送埋点
|
|
304
|
+
if (isDevelopment()) {
|
|
305
|
+
console.log('[Tracker] 开发环境,跳过埋点:', { eId: eId, eventContent: eventContent });
|
|
306
|
+
return [2 /*return*/, Promise.resolve()];
|
|
266
307
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
308
|
+
// 检查AB测试
|
|
309
|
+
if (this.config.enableAbTest) {
|
|
310
|
+
abFlag = this.checkAbTest(eId);
|
|
311
|
+
if (abFlag === null || abFlag === void 0 ? void 0 : abFlag.test) {
|
|
312
|
+
globalAppCall = getGlobalAppCall();
|
|
313
|
+
appCall = globalAppCall || this.config.appCall;
|
|
314
|
+
if (appCall === null || appCall === void 0 ? void 0 : appCall.sendEventMsg) {
|
|
315
|
+
return [2 /*return*/, appCall.sendEventMsg({ eId: eId, eventContent: eventContent || '{}' })];
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
postData = this.buildPostData(params);
|
|
320
|
+
return [2 /*return*/, this.sendRequest(postData)];
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
};
|
|
273
324
|
/**
|
|
274
325
|
* 埋点上报
|
|
275
326
|
* @param eId 事件ID
|
|
276
327
|
* @param contentObj 事件内容对象
|
|
277
328
|
* @param isAbTest 是否AB测试(已废弃,保留兼容)
|
|
278
329
|
*/
|
|
279
|
-
track(eId, contentObj
|
|
330
|
+
Tracker.prototype.track = function (eId, contentObj, isAbTest) {
|
|
331
|
+
if (contentObj === void 0) { contentObj = {}; }
|
|
332
|
+
if (isAbTest === void 0) { isAbTest = false; }
|
|
280
333
|
return this.trackUser({
|
|
281
|
-
eId,
|
|
334
|
+
eId: eId,
|
|
282
335
|
eventContent: JSON.stringify(contentObj),
|
|
283
|
-
isAbTest
|
|
336
|
+
isAbTest: isAbTest
|
|
284
337
|
});
|
|
285
|
-
}
|
|
338
|
+
};
|
|
286
339
|
/**
|
|
287
340
|
* 错误上报
|
|
288
341
|
* @param contentObj 错误内容对象
|
|
289
342
|
*/
|
|
290
|
-
trackError
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
url: contentObj.url || (typeof window !== 'undefined' ? window.location?.href : '') || '',
|
|
295
|
-
platform: contentObj.platform || 'wap',
|
|
296
|
-
...contentObj
|
|
297
|
-
};
|
|
343
|
+
Tracker.prototype.trackError = function (contentObj) {
|
|
344
|
+
var _a;
|
|
345
|
+
if (contentObj === void 0) { contentObj = {}; }
|
|
346
|
+
var errorContent = __assign({ err: contentObj.err || '', apptype: contentObj.apptype || DEFAULT_ERROR_APPTYPE, url: contentObj.url || (typeof window !== 'undefined' ? (_a = window.location) === null || _a === void 0 ? void 0 : _a.href : '') || '', platform: contentObj.platform || 'wap' }, contentObj);
|
|
298
347
|
return this.trackUser({
|
|
299
348
|
eId: ERROR_EVENT_ID,
|
|
300
349
|
eventContent: JSON.stringify(errorContent)
|
|
301
350
|
});
|
|
302
|
-
}
|
|
351
|
+
};
|
|
303
352
|
/**
|
|
304
353
|
* 更新配置
|
|
305
354
|
*/
|
|
306
|
-
updateConfig(config) {
|
|
307
|
-
this.config = {
|
|
308
|
-
}
|
|
355
|
+
Tracker.prototype.updateConfig = function (config) {
|
|
356
|
+
this.config = __assign(__assign({}, this.config), config);
|
|
357
|
+
};
|
|
309
358
|
/**
|
|
310
359
|
* 获取当前配置
|
|
311
360
|
*/
|
|
312
|
-
getConfig() {
|
|
313
|
-
return {
|
|
314
|
-
}
|
|
315
|
-
|
|
361
|
+
Tracker.prototype.getConfig = function () {
|
|
362
|
+
return __assign({}, this.config);
|
|
363
|
+
};
|
|
364
|
+
return Tracker;
|
|
365
|
+
}());
|
|
316
366
|
/**
|
|
317
367
|
* 创建 Tracker 实例
|
|
318
368
|
* @param config 配置项
|
|
@@ -350,18 +400,21 @@ export function createTracker(config) {
|
|
|
350
400
|
* postTrackError({ err: 'error message' })
|
|
351
401
|
*/
|
|
352
402
|
export function createTrackMethods(config) {
|
|
353
|
-
|
|
403
|
+
var tracker = createTracker(config);
|
|
354
404
|
return {
|
|
355
405
|
/** 埋点上报方法 */
|
|
356
|
-
postTrack: (eId, contentObj
|
|
406
|
+
postTrack: function (eId, contentObj, isAbTest) {
|
|
407
|
+
if (contentObj === void 0) { contentObj = {}; }
|
|
408
|
+
if (isAbTest === void 0) { isAbTest = false; }
|
|
357
409
|
return tracker.track(eId, contentObj, isAbTest);
|
|
358
410
|
},
|
|
359
411
|
/** 错误上报方法 */
|
|
360
|
-
postTrackError: (contentObj
|
|
412
|
+
postTrackError: function (contentObj) {
|
|
413
|
+
if (contentObj === void 0) { contentObj = {}; }
|
|
361
414
|
return tracker.trackError(contentObj);
|
|
362
415
|
},
|
|
363
416
|
/** Tracker 实例 */
|
|
364
|
-
tracker
|
|
417
|
+
tracker: tracker
|
|
365
418
|
};
|
|
366
419
|
}
|
|
367
420
|
export { defaultGetChannel as getChannel };
|
|
@@ -263,28 +263,60 @@ export declare class AliOssClass {
|
|
|
263
263
|
* 图片上传主方法
|
|
264
264
|
* 整合了所有项目的图片上传逻辑
|
|
265
265
|
* @param option 上传选项
|
|
266
|
-
* @returns Promise
|
|
266
|
+
* @returns Promise - 成功时返回图片信息对象,失败时reject错误信息字符串
|
|
267
|
+
* @returns 成功返回结构: {
|
|
268
|
+
* url: string - 上传后的图片URL,
|
|
269
|
+
* imgUrl: string - 上传后的图片URL(可能包含尺寸信息),
|
|
270
|
+
* imgOrgUrl: string - 原始图片URL(包含尺寸信息),
|
|
271
|
+
* name: string - 文件名,
|
|
272
|
+
* fileName: string - 文件名
|
|
273
|
+
* }
|
|
274
|
+
* @returns 失败返回: 错误信息字符串,如"文件类型不支持"、"上传失败"等
|
|
267
275
|
*/
|
|
268
276
|
ossUploadImage: (option: UploadOption) => Promise<any>;
|
|
269
277
|
/**
|
|
270
278
|
* 文件上传方法
|
|
271
279
|
* 支持视频、文档、APK等文件类型
|
|
272
280
|
* @param option 上传选项
|
|
273
|
-
* @returns Promise
|
|
281
|
+
* @returns Promise - 成功时返回文件信息对象,失败时reject错误信息字符串
|
|
282
|
+
* @returns 成功返回结构: {
|
|
283
|
+
* url: string - 上传后的文件URL,
|
|
284
|
+
* imgUrl: string - 上传后的文件URL,
|
|
285
|
+
* imgOrgUrl: string - 上传后的文件URL,
|
|
286
|
+
* name: string - 文件名,
|
|
287
|
+
* fileName: string - 文件名
|
|
288
|
+
* }
|
|
289
|
+
* @returns 失败返回: 错误信息字符串,如"文件类型不支持"、"上传失败"等
|
|
274
290
|
*/
|
|
275
291
|
ossUploadFile: (option: UploadOption) => Promise<any>;
|
|
276
292
|
/**
|
|
277
293
|
* 纯图片上传 pureOssUploadImage
|
|
278
294
|
* 注释:图片上传,不压缩
|
|
279
295
|
* @param option 上传选项
|
|
280
|
-
* @returns Promise
|
|
296
|
+
* @returns Promise - 成功时返回图片信息对象,失败时reject错误信息字符串
|
|
297
|
+
* @returns 成功返回结构: {
|
|
298
|
+
* url: string - 上传后的图片URL,
|
|
299
|
+
* imgUrl: string - 上传后的图片URL,
|
|
300
|
+
* imgOrgUrl: string - 上传后的图片URL,
|
|
301
|
+
* name: string - 文件名,
|
|
302
|
+
* fileName: string - 文件名
|
|
303
|
+
* }
|
|
304
|
+
* @returns 失败返回: 错误信息字符串,如"文件类型不支持"、"上传失败"等
|
|
281
305
|
*/
|
|
282
306
|
pureOssUploadImage: (option: UploadOption) => Promise<any>;
|
|
283
307
|
/**
|
|
284
308
|
* 商品详情图片上传(不建议直接使用,请使用 pureOssUploadImage)
|
|
285
309
|
* 注释:图片上传,不压缩
|
|
286
310
|
* @param option 上传选项
|
|
287
|
-
* @returns Promise
|
|
311
|
+
* @returns Promise - 成功时返回图片信息对象,失败时reject错误信息字符串
|
|
312
|
+
* @returns 成功返回结构: {
|
|
313
|
+
* url: string - 上传后的图片URL,
|
|
314
|
+
* imgUrl: string - 上传后的图片URL,
|
|
315
|
+
* imgOrgUrl: string - 上传后的图片URL,
|
|
316
|
+
* name: string - 文件名,
|
|
317
|
+
* fileName: string - 文件名
|
|
318
|
+
* }
|
|
319
|
+
* @returns 失败返回: 错误信息字符串,如"文件类型不支持"、"上传失败"等
|
|
288
320
|
*/
|
|
289
321
|
shopDetailUpdate: (option: UploadOption) => Promise<any>;
|
|
290
322
|
/**
|