@pluve/logger-sdk 0.0.12 → 0.0.13
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/esm/capture/jsError.js +3 -24
- package/dist/esm/capture/promiseError.js +3 -24
- package/dist/esm/capture/wechatError.js +9 -31
- package/dist/esm/compress/compression.js +21 -44
- package/dist/esm/core/httpClient.js +53 -76
- package/dist/esm/core/loggerSDK.js +201 -234
- package/dist/esm/core/queueManager.js +58 -112
- package/dist/esm/core/retryManager.js +44 -70
- package/dist/esm/stack/stacktrace.js +8 -31
- package/dist/esm/transport/beaconTransport.js +20 -61
- package/dist/esm/transport/pixelImageTransport.js +54 -77
- package/dist/esm/transport/transportAdapter.js +13 -74
- package/dist/esm/transport/wechatTransport.js +53 -94
- package/dist/esm/utils/tools.js +12 -35
- package/package.json +1 -1
- package/dist/cjs/capture/jsError.js +0 -48
- package/dist/cjs/capture/promiseError.js +0 -49
- package/dist/cjs/capture/resourceError.js +0 -48
- package/dist/cjs/capture/wechatError.js +0 -95
- package/dist/cjs/compress/compression.js +0 -105
- package/dist/cjs/config/index.js +0 -55
- package/dist/cjs/core/fingerprint.js +0 -36
- package/dist/cjs/core/httpClient.js +0 -96
- package/dist/cjs/core/loggerSDK.js +0 -643
- package/dist/cjs/core/queueManager.js +0 -263
- package/dist/cjs/core/retryManager.js +0 -127
- package/dist/cjs/index.js +0 -34
- package/dist/cjs/stack/stacktrace.js +0 -48
- package/dist/cjs/transport/beaconTransport.js +0 -64
- package/dist/cjs/transport/pixelImageTransport.js +0 -99
- package/dist/cjs/transport/transport.js +0 -17
- package/dist/cjs/transport/transportAdapter.js +0 -73
- package/dist/cjs/transport/wechatTransport.js +0 -103
- package/dist/cjs/types/api.js +0 -17
- package/dist/cjs/types/env.js +0 -17
- package/dist/cjs/types/external.d.ts +0 -21
- package/dist/cjs/types/logEvent.js +0 -17
- package/dist/cjs/types/logEventLevel.js +0 -17
- package/dist/cjs/types/sdkOptions.js +0 -17
- package/dist/cjs/types/trackOptions.js +0 -17
- package/dist/cjs/utils/environment.js +0 -183
- package/dist/cjs/utils/session.js +0 -31
- package/dist/cjs/utils/tools.js +0 -82
- package/dist/cjs/utils/uuid.js +0 -35
- package/dist/umd/logger-sdk.min.js +0 -1
|
@@ -1,42 +1,21 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/capture/jsError.ts
|
|
23
2
|
import { parseStack } from "../stack/stacktrace";
|
|
24
3
|
import { logDebug } from "../utils/tools";
|
|
25
4
|
function registerJsErrorCapture(debug, callback) {
|
|
26
5
|
if (typeof window === "undefined")
|
|
27
6
|
return void 0;
|
|
28
|
-
const handler = (e) =>
|
|
7
|
+
const handler = async (e) => {
|
|
29
8
|
logDebug(debug, "registerJsErrorCapture error", e);
|
|
30
9
|
if (!e.error)
|
|
31
10
|
return;
|
|
32
|
-
const stack =
|
|
11
|
+
const stack = await parseStack(e.error);
|
|
33
12
|
callback({
|
|
34
13
|
type: "js",
|
|
35
14
|
message: e.error.message,
|
|
36
15
|
stack,
|
|
37
16
|
throwable: e.error.stack || ""
|
|
38
17
|
});
|
|
39
|
-
}
|
|
18
|
+
};
|
|
40
19
|
window.addEventListener("error", handler);
|
|
41
20
|
return () => window.removeEventListener("error", handler);
|
|
42
21
|
}
|
|
@@ -1,35 +1,14 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/capture/promiseError.ts
|
|
23
2
|
import { parseStack } from "../stack/stacktrace";
|
|
24
3
|
import { logDebug } from "../utils/tools";
|
|
25
4
|
function registerPromiseErrorCapture(debug, callback) {
|
|
26
5
|
if (typeof window === "undefined")
|
|
27
6
|
return void 0;
|
|
28
|
-
const handler = (e) =>
|
|
7
|
+
const handler = async (e) => {
|
|
29
8
|
logDebug(debug, "registerPromiseErrorCapture unhandledrejection", e);
|
|
30
9
|
const { reason } = e;
|
|
31
10
|
if (reason instanceof Error) {
|
|
32
|
-
const stack =
|
|
11
|
+
const stack = await parseStack(reason);
|
|
33
12
|
callback({
|
|
34
13
|
type: "promise",
|
|
35
14
|
message: reason.message,
|
|
@@ -37,7 +16,7 @@ function registerPromiseErrorCapture(debug, callback) {
|
|
|
37
16
|
throwable: reason.stack || ""
|
|
38
17
|
});
|
|
39
18
|
}
|
|
40
|
-
}
|
|
19
|
+
};
|
|
41
20
|
window.addEventListener("unhandledrejection", handler);
|
|
42
21
|
return () => window.removeEventListener("unhandledrejection", handler);
|
|
43
22
|
}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/capture/wechatError.ts
|
|
23
2
|
import { parseStack } from "../stack/stacktrace";
|
|
24
3
|
import { isWeChatMiniProgram } from "../utils/environment";
|
|
@@ -29,24 +8,23 @@ function registerWechatErrorCapture(debug, callback) {
|
|
|
29
8
|
try {
|
|
30
9
|
const wxAny = globalThis.wx;
|
|
31
10
|
if (wxAny && typeof wxAny.onError === "function") {
|
|
32
|
-
const handler = (error) =>
|
|
33
|
-
var _a;
|
|
11
|
+
const handler = async (error) => {
|
|
34
12
|
logDebug(debug, "registerWechatErrorCapture onError", error);
|
|
35
|
-
const msg = String((
|
|
13
|
+
const msg = String((error == null ? void 0 : error.message) ?? error);
|
|
36
14
|
const err = error instanceof Error ? error : new Error(msg);
|
|
37
|
-
const stack =
|
|
15
|
+
const stack = await parseStack(err);
|
|
38
16
|
callback({
|
|
39
17
|
type: "js",
|
|
40
18
|
message: err.message,
|
|
41
19
|
stack,
|
|
42
20
|
throwable: err.stack || ""
|
|
43
21
|
});
|
|
44
|
-
}
|
|
22
|
+
};
|
|
45
23
|
wxAny.onError(handler);
|
|
46
24
|
return () => {
|
|
47
25
|
try {
|
|
48
26
|
wxAny.offError && wxAny.offError(handler);
|
|
49
|
-
} catch
|
|
27
|
+
} catch {
|
|
50
28
|
}
|
|
51
29
|
};
|
|
52
30
|
}
|
|
@@ -61,23 +39,23 @@ function registerWechatUnhandledCapture(debug, callback) {
|
|
|
61
39
|
try {
|
|
62
40
|
const wxAny = globalThis.wx;
|
|
63
41
|
if (wxAny && typeof wxAny.onUnhandledRejection === "function") {
|
|
64
|
-
const handler = (res) =>
|
|
42
|
+
const handler = async (res) => {
|
|
65
43
|
const reason = res == null ? void 0 : res.reason;
|
|
66
44
|
logDebug(debug, "registerWechatUnhandledCapture onUnhandledRejection", reason);
|
|
67
45
|
const err = reason instanceof Error ? reason : new Error(String(reason));
|
|
68
|
-
const stack =
|
|
46
|
+
const stack = await parseStack(err);
|
|
69
47
|
callback({
|
|
70
48
|
type: "promise",
|
|
71
49
|
message: err.message,
|
|
72
50
|
stack,
|
|
73
51
|
throwable: err.stack || ""
|
|
74
52
|
});
|
|
75
|
-
}
|
|
53
|
+
};
|
|
76
54
|
wxAny.onUnhandledRejection(handler);
|
|
77
55
|
return () => {
|
|
78
56
|
try {
|
|
79
57
|
wxAny.offUnhandledRejection && wxAny.offUnhandledRejection(handler);
|
|
80
|
-
} catch
|
|
58
|
+
} catch {
|
|
81
59
|
}
|
|
82
60
|
};
|
|
83
61
|
}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/compress/compression.ts
|
|
23
2
|
import { gzipSync } from "fflate";
|
|
24
3
|
import { isBrowser } from "../utils/environment";
|
|
@@ -39,31 +18,29 @@ function toUtf8Bytes(s) {
|
|
|
39
18
|
}
|
|
40
19
|
return new Uint8Array(out);
|
|
41
20
|
}
|
|
42
|
-
function gzipCompress(data) {
|
|
43
|
-
|
|
44
|
-
if (isBrowser() && typeof CompressionStream !== "undefined") {
|
|
45
|
-
try {
|
|
46
|
-
const encoder = new TextEncoder();
|
|
47
|
-
const input = encoder.encode(data);
|
|
48
|
-
const gzip = new CompressionStream("gzip");
|
|
49
|
-
const readable = new Blob([input]).stream();
|
|
50
|
-
const compressedStream = readable.pipeThrough(gzip);
|
|
51
|
-
const compressedBuffer = yield new Response(compressedStream).arrayBuffer();
|
|
52
|
-
const bytes = new Uint8Array(compressedBuffer);
|
|
53
|
-
return convert2Base64FromArray(bytes);
|
|
54
|
-
} catch (e) {
|
|
55
|
-
console.log("gzipCompress 压缩失败,尝试使用 fflate 库", e);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
21
|
+
async function gzipCompress(data) {
|
|
22
|
+
if (isBrowser() && typeof CompressionStream !== "undefined") {
|
|
58
23
|
try {
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
|
|
24
|
+
const encoder = new TextEncoder();
|
|
25
|
+
const input = encoder.encode(data);
|
|
26
|
+
const gzip = new CompressionStream("gzip");
|
|
27
|
+
const readable = new Blob([input]).stream();
|
|
28
|
+
const compressedStream = readable.pipeThrough(gzip);
|
|
29
|
+
const compressedBuffer = await new Response(compressedStream).arrayBuffer();
|
|
30
|
+
const bytes = new Uint8Array(compressedBuffer);
|
|
31
|
+
return convert2Base64FromArray(bytes);
|
|
62
32
|
} catch (e) {
|
|
63
|
-
console.log("gzipCompress
|
|
33
|
+
console.log("gzipCompress 压缩失败,尝试使用 fflate 库", e);
|
|
64
34
|
}
|
|
65
|
-
|
|
66
|
-
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const input = toUtf8Bytes(data);
|
|
38
|
+
const compressed = gzipSync(input);
|
|
39
|
+
return convert2Base64FromArray(compressed);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
console.log("gzipCompress 压缩失败", e);
|
|
42
|
+
}
|
|
43
|
+
return data;
|
|
67
44
|
}
|
|
68
45
|
function convert2Base64FromArray(data) {
|
|
69
46
|
let binary = "";
|
|
@@ -82,7 +59,7 @@ function convert2Base64(data) {
|
|
|
82
59
|
if (typeof btoa !== "undefined") {
|
|
83
60
|
try {
|
|
84
61
|
return btoa(data);
|
|
85
|
-
} catch
|
|
62
|
+
} catch {
|
|
86
63
|
}
|
|
87
64
|
}
|
|
88
65
|
if (typeof Buffer !== "undefined") {
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
var __async = (__this, __arguments, generator) => {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
var fulfilled = (value) => {
|
|
4
|
-
try {
|
|
5
|
-
step(generator.next(value));
|
|
6
|
-
} catch (e) {
|
|
7
|
-
reject(e);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
var rejected = (value) => {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.throw(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
1
|
// src/core/httpClient.ts
|
|
23
2
|
import { isWeChatMiniProgram } from "../utils/environment";
|
|
24
3
|
import { logDebug } from "../utils/tools";
|
|
@@ -26,67 +5,65 @@ var HttpClient = class {
|
|
|
26
5
|
/**
|
|
27
6
|
* 发送 POST 请求,需要兼容浏览器和微信小程序
|
|
28
7
|
*/
|
|
29
|
-
static post(url, data, token) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (isWeChatMiniProgram()) {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
wx.request({
|
|
35
|
-
url,
|
|
36
|
-
method: "POST",
|
|
37
|
-
data: JSON.stringify(data),
|
|
38
|
-
header: {
|
|
39
|
-
"Content-Type": "application/json",
|
|
40
|
-
Authorization: `Bearer ${token}`
|
|
41
|
-
},
|
|
42
|
-
success: (res) => resolve({
|
|
43
|
-
type: "wechat",
|
|
44
|
-
response: res
|
|
45
|
-
}),
|
|
46
|
-
fail: (err) => (
|
|
47
|
-
// eslint-disable-next-line prefer-promise-reject-errors
|
|
48
|
-
reject({
|
|
49
|
-
type: "wechat",
|
|
50
|
-
error: err
|
|
51
|
-
})
|
|
52
|
-
)
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
if (typeof fetch === "undefined") {
|
|
57
|
-
return new Promise((resolve, reject) => {
|
|
58
|
-
const xhr = new XMLHttpRequest();
|
|
59
|
-
xhr.open("POST", url, true);
|
|
60
|
-
xhr.setRequestHeader("Content-Type", "application/json");
|
|
61
|
-
xhr.setRequestHeader("Authorization", `Bearer ${token}`);
|
|
62
|
-
xhr.onreadystatechange = () => {
|
|
63
|
-
if (xhr.readyState === 4) {
|
|
64
|
-
if (xhr.status === 200) {
|
|
65
|
-
resolve({
|
|
66
|
-
type: "xhr",
|
|
67
|
-
response: xhr.responseText
|
|
68
|
-
});
|
|
69
|
-
} else {
|
|
70
|
-
reject({
|
|
71
|
-
type: "xhr",
|
|
72
|
-
error: new Error(xhr.statusText)
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
xhr.send(JSON.stringify(data));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
8
|
+
static async post(url, data, token) {
|
|
9
|
+
logDebug(true, "post", url, data, token);
|
|
10
|
+
if (isWeChatMiniProgram()) {
|
|
80
11
|
return new Promise((resolve, reject) => {
|
|
81
|
-
|
|
12
|
+
wx.request({
|
|
13
|
+
url,
|
|
82
14
|
method: "POST",
|
|
83
|
-
|
|
84
|
-
|
|
15
|
+
data: JSON.stringify(data),
|
|
16
|
+
header: {
|
|
85
17
|
"Content-Type": "application/json",
|
|
86
18
|
Authorization: `Bearer ${token}`
|
|
19
|
+
},
|
|
20
|
+
success: (res) => resolve({
|
|
21
|
+
type: "wechat",
|
|
22
|
+
response: res
|
|
23
|
+
}),
|
|
24
|
+
fail: (err) => (
|
|
25
|
+
// eslint-disable-next-line prefer-promise-reject-errors
|
|
26
|
+
reject({
|
|
27
|
+
type: "wechat",
|
|
28
|
+
error: err
|
|
29
|
+
})
|
|
30
|
+
)
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (typeof fetch === "undefined") {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const xhr = new XMLHttpRequest();
|
|
37
|
+
xhr.open("POST", url, true);
|
|
38
|
+
xhr.setRequestHeader("Content-Type", "application/json");
|
|
39
|
+
xhr.setRequestHeader("Authorization", `Bearer ${token}`);
|
|
40
|
+
xhr.onreadystatechange = () => {
|
|
41
|
+
if (xhr.readyState === 4) {
|
|
42
|
+
if (xhr.status === 200) {
|
|
43
|
+
resolve({
|
|
44
|
+
type: "xhr",
|
|
45
|
+
response: xhr.responseText
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
reject({
|
|
49
|
+
type: "xhr",
|
|
50
|
+
error: new Error(xhr.statusText)
|
|
51
|
+
});
|
|
52
|
+
}
|
|
87
53
|
}
|
|
88
|
-
}
|
|
54
|
+
};
|
|
55
|
+
xhr.send(JSON.stringify(data));
|
|
89
56
|
});
|
|
57
|
+
}
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
fetch(url, {
|
|
60
|
+
method: "POST",
|
|
61
|
+
body: JSON.stringify(data),
|
|
62
|
+
headers: {
|
|
63
|
+
"Content-Type": "application/json",
|
|
64
|
+
Authorization: `Bearer ${token}`
|
|
65
|
+
}
|
|
66
|
+
}).then((res) => resolve({ type: "fetch", response: res })).catch((err) => reject({ type: "fetch", error: err }));
|
|
90
67
|
});
|
|
91
68
|
}
|
|
92
69
|
};
|