@pluve/logger-sdk 0.0.6 → 0.0.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/README.md +139 -432
- package/dist/cjs/capture/jsError.js +48 -0
- package/dist/cjs/capture/promiseError.js +49 -0
- package/dist/cjs/capture/resourceError.js +48 -0
- package/dist/cjs/capture/wechatError.js +95 -0
- package/dist/cjs/compress/compression.js +84 -0
- package/dist/cjs/config/index.js +55 -0
- package/dist/cjs/core/fingerprint.js +36 -0
- package/dist/cjs/core/httpClient.js +96 -0
- package/dist/cjs/core/loggerSDK.js +641 -0
- package/dist/cjs/core/queueManager.js +249 -0
- package/dist/cjs/core/retryManager.js +127 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/logger-sdk.mermaid +84 -0
- package/dist/cjs/logger-sdk.svg +1 -0
- package/dist/cjs/stack/stacktrace.js +48 -0
- package/dist/cjs/transport/beaconTransport.js +64 -0
- package/dist/cjs/transport/pixelImageTransport.js +100 -0
- package/dist/cjs/transport/transport.js +17 -0
- package/dist/cjs/transport/transportAdapter.js +56 -0
- package/dist/cjs/transport/wechatTransport.js +103 -0
- package/dist/cjs/types/api.js +17 -0
- package/dist/cjs/types/env.js +17 -0
- package/dist/cjs/types/external.d.ts +21 -0
- package/dist/cjs/types/logEvent.js +17 -0
- package/dist/cjs/types/logEventLevel.js +17 -0
- package/dist/cjs/types/sdkOptions.js +17 -0
- package/dist/cjs/types/trackOptions.js +17 -0
- package/dist/cjs/utils/environment.js +183 -0
- package/dist/cjs/utils/session.js +31 -0
- package/dist/cjs/utils/tools.js +82 -0
- package/dist/cjs/utils/uuid.js +35 -0
- package/dist/esm/capture/jsError.js +45 -0
- package/dist/esm/capture/promiseError.js +46 -0
- package/dist/esm/capture/resourceError.js +24 -0
- package/dist/esm/capture/wechatError.js +92 -0
- package/dist/esm/compress/compression.js +82 -0
- package/dist/esm/config/index.js +28 -0
- package/dist/esm/core/fingerprint.js +12 -0
- package/dist/esm/core/httpClient.js +95 -0
- package/dist/esm/core/loggerSDK.js +650 -0
- package/dist/esm/core/queueManager.js +269 -0
- package/dist/esm/core/retryManager.js +129 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/logger-sdk.mermaid +84 -0
- package/dist/esm/logger-sdk.svg +1 -0
- package/dist/esm/stack/stacktrace.js +37 -0
- package/dist/esm/transport/beaconTransport.js +81 -0
- package/dist/esm/transport/pixelImageTransport.js +99 -0
- package/dist/esm/transport/transport.js +0 -0
- package/dist/esm/transport/transportAdapter.js +32 -0
- package/dist/esm/transport/wechatTransport.js +120 -0
- package/dist/esm/types/api.js +0 -0
- package/dist/esm/types/env.js +0 -0
- package/dist/esm/types/external.d.ts +21 -0
- package/dist/esm/types/logEvent.js +0 -0
- package/dist/esm/types/logEventLevel.js +0 -0
- package/dist/esm/types/sdkOptions.js +0 -0
- package/dist/esm/types/trackOptions.js +0 -0
- package/dist/esm/utils/environment.js +154 -0
- package/dist/esm/utils/session.js +7 -0
- package/dist/esm/utils/tools.js +76 -0
- package/dist/esm/utils/uuid.js +11 -0
- package/dist/types/capture/jsError.d.ts +2 -0
- package/dist/types/capture/promiseError.d.ts +2 -0
- package/dist/types/capture/resourceError.d.ts +2 -0
- package/dist/types/capture/wechatError.d.ts +3 -0
- package/dist/types/compress/compression.d.ts +10 -0
- package/dist/types/config/index.d.ts +9 -0
- package/dist/types/core/fingerprint.d.ts +8 -0
- package/dist/types/core/httpClient.d.ts +11 -0
- package/dist/{loggerSDK.d.ts → types/core/loggerSDK.d.ts} +32 -14
- package/dist/{queueManager.d.ts → types/core/queueManager.d.ts} +9 -5
- package/dist/{retryManager.d.ts → types/core/retryManager.d.ts} +2 -6
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stack/stacktrace.d.ts +2 -0
- package/dist/types/transport/beaconTransport.d.ts +11 -0
- package/dist/types/transport/pixelImageTransport.d.ts +11 -0
- package/dist/types/transport/transport.d.ts +14 -0
- package/dist/types/transport/transportAdapter.d.ts +10 -0
- package/dist/types/transport/wechatTransport.d.ts +11 -0
- package/dist/types/types/api.d.ts +12 -0
- package/dist/types/types/env.d.ts +14 -0
- package/dist/types/types/logEvent.d.ts +57 -0
- package/dist/types/types/logEventLevel.d.ts +2 -0
- package/dist/types/types/sdkOptions.d.ts +61 -0
- package/dist/types/types/trackOptions.d.ts +7 -0
- package/dist/types/utils/environment.d.ts +21 -0
- package/dist/types/utils/session.d.ts +1 -0
- package/dist/types/utils/tools.d.ts +12 -0
- package/dist/types/utils/uuid.d.ts +7 -0
- package/dist/umd/logger-sdk.min.js +1 -0
- package/package.json +30 -6
- package/README.html +0 -982
- package/dist/index.d.ts +0 -10
- package/dist/index.js +0 -13
- package/dist/loggerSDK.js +0 -573
- package/dist/queueManager.js +0 -201
- package/dist/retryManager.js +0 -223
- package/dist/transportAdapter.d.ts +0 -51
- package/dist/transportAdapter.js +0 -315
- package/dist/types.d.ts +0 -70
- package/dist/types.js +0 -1
- package/dist/utils.d.ts +0 -47
- package/dist/utils.js +0 -306
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/transport/wechatTransport.ts
|
|
20
|
+
var wechatTransport_exports = {};
|
|
21
|
+
__export(wechatTransport_exports, {
|
|
22
|
+
WechatTransport: () => WechatTransport
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(wechatTransport_exports);
|
|
25
|
+
var import_compression = require("../compress/compression");
|
|
26
|
+
var import_config = require("../config");
|
|
27
|
+
var import_environment = require("../utils/environment");
|
|
28
|
+
var import_tools = require("../utils/tools");
|
|
29
|
+
var WechatTransport = class {
|
|
30
|
+
constructor(opts) {
|
|
31
|
+
/** 传输器名称 */
|
|
32
|
+
this.name = "wechat";
|
|
33
|
+
this.opts = opts;
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line class-methods-use-this
|
|
36
|
+
isSupported() {
|
|
37
|
+
return (0, import_environment.isWeChatMiniProgram)();
|
|
38
|
+
}
|
|
39
|
+
async send(payload) {
|
|
40
|
+
var _a, _b, _c, _d, _e;
|
|
41
|
+
let body = typeof payload === "string" ? payload : (0, import_tools.safeStringify)(payload);
|
|
42
|
+
const endpoint = (0, import_config.getReportApi)(((_a = this.opts) == null ? void 0 : _a.env) || "develop");
|
|
43
|
+
const timeout = 1e4;
|
|
44
|
+
let contentType = "application/json";
|
|
45
|
+
if (((_b = this.opts) == null ? void 0 : _b.enableGzip) && (!((_c = this.opts) == null ? void 0 : _c.gzipOnlyInBatchMode) || payload.items.length > 0)) {
|
|
46
|
+
const t = (0, import_tools.now)();
|
|
47
|
+
(0, import_tools.logDebug)(!!((_d = this.opts) == null ? void 0 : _d.debug), "WeChat request enable gzip compress: ", t);
|
|
48
|
+
const compressedItems = await (0, import_compression.gzipCompress)((0, import_tools.safeStringify)(payload.items));
|
|
49
|
+
body = (0, import_tools.safeStringify)({
|
|
50
|
+
...payload,
|
|
51
|
+
items: compressedItems
|
|
52
|
+
});
|
|
53
|
+
(0, import_tools.logDebug)(!!((_e = this.opts) == null ? void 0 : _e.debug), "WeChat request gzip compress cost: ", (0, import_tools.now)() - t);
|
|
54
|
+
contentType = "application/json; charset=utf-8";
|
|
55
|
+
}
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
var _a2;
|
|
58
|
+
let timeoutId = null;
|
|
59
|
+
let settled = false;
|
|
60
|
+
timeoutId = setTimeout(() => {
|
|
61
|
+
if (!settled) {
|
|
62
|
+
settled = true;
|
|
63
|
+
reject(new Error(`WeChat request timeout after ${timeout}ms`));
|
|
64
|
+
}
|
|
65
|
+
}, timeout);
|
|
66
|
+
wx.request({
|
|
67
|
+
url: endpoint,
|
|
68
|
+
method: "POST",
|
|
69
|
+
data: body,
|
|
70
|
+
header: {
|
|
71
|
+
"Content-Type": contentType,
|
|
72
|
+
token: ((_a2 = this.opts) == null ? void 0 : _a2.token) || ""
|
|
73
|
+
},
|
|
74
|
+
success(res) {
|
|
75
|
+
if (timeoutId)
|
|
76
|
+
clearTimeout(timeoutId);
|
|
77
|
+
if (!settled) {
|
|
78
|
+
settled = true;
|
|
79
|
+
if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
80
|
+
resolve();
|
|
81
|
+
} else {
|
|
82
|
+
reject(new Error(`HTTP ${res.statusCode}`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
fail(err) {
|
|
87
|
+
var _a3;
|
|
88
|
+
if (timeoutId)
|
|
89
|
+
clearTimeout(timeoutId);
|
|
90
|
+
if (!settled) {
|
|
91
|
+
settled = true;
|
|
92
|
+
(0, import_tools.logDebug)(!!((_a3 = this.opts) == null ? void 0 : _a3.debug), "WeChat request failed", err);
|
|
93
|
+
reject(new Error(`WeChat request failed: ${err.errMsg || "unknown error"}`));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
WechatTransport
|
|
103
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/api.ts
|
|
16
|
+
var api_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(api_exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/env.ts
|
|
16
|
+
var env_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(env_exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare module 'fflate' {
|
|
2
|
+
export function gzipSync(input: Uint8Array | string): Uint8Array;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
declare module 'js-base64' {
|
|
6
|
+
export const Base64: {
|
|
7
|
+
encode(input: string | Uint8Array, urlSafe?: boolean): string;
|
|
8
|
+
decode(input: string): string;
|
|
9
|
+
fromUint8Array(input: Uint8Array, urlSafe?: boolean): string;
|
|
10
|
+
toUint8Array(input: string): Uint8Array;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare class CompressionStream {
|
|
15
|
+
constructor(format: 'gzip' | 'deflate');
|
|
16
|
+
readable: ReadableStream<any>;
|
|
17
|
+
|
|
18
|
+
writable: WritableStream<any>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare let Buffer: any;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/logEvent.ts
|
|
16
|
+
var logEvent_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(logEvent_exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/logEventLevel.ts
|
|
16
|
+
var logEventLevel_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(logEventLevel_exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/sdkOptions.ts
|
|
16
|
+
var sdkOptions_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(sdkOptions_exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/types/trackOptions.ts
|
|
16
|
+
var trackOptions_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(trackOptions_exports);
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/utils/environment.ts
|
|
20
|
+
var environment_exports = {};
|
|
21
|
+
__export(environment_exports, {
|
|
22
|
+
collectEnvironmentTags: () => collectEnvironmentTags,
|
|
23
|
+
getCurrentUrl: () => getCurrentUrl,
|
|
24
|
+
getEnvironmentInfo: () => getEnvironmentInfo,
|
|
25
|
+
isBrowser: () => isBrowser,
|
|
26
|
+
isWeChatMiniProgram: () => isWeChatMiniProgram,
|
|
27
|
+
parseBrowserInfo: () => parseBrowserInfo
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(environment_exports);
|
|
30
|
+
function isBrowser() {
|
|
31
|
+
try {
|
|
32
|
+
return typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
33
|
+
} catch (e) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isWeChatMiniProgram() {
|
|
38
|
+
try {
|
|
39
|
+
return typeof wx !== "undefined" && typeof wx.getSystemInfo === "function";
|
|
40
|
+
} catch (e) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getCurrentUrl() {
|
|
45
|
+
if (isWeChatMiniProgram()) {
|
|
46
|
+
try {
|
|
47
|
+
const pages = getCurrentPages();
|
|
48
|
+
if (pages && pages.length > 0) {
|
|
49
|
+
const currentPage = pages[pages.length - 1];
|
|
50
|
+
return currentPage.route || "";
|
|
51
|
+
}
|
|
52
|
+
} catch (e) {
|
|
53
|
+
return "";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (isBrowser()) {
|
|
57
|
+
return window.location.href;
|
|
58
|
+
}
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
function getEnvironmentInfo() {
|
|
62
|
+
const envInfo = {
|
|
63
|
+
platform: "unknown"
|
|
64
|
+
};
|
|
65
|
+
if (isWeChatMiniProgram()) {
|
|
66
|
+
envInfo.platform = "wechat";
|
|
67
|
+
try {
|
|
68
|
+
const systemInfo = wx.getSystemInfoSync();
|
|
69
|
+
envInfo.systemInfo = {
|
|
70
|
+
brand: systemInfo.brand,
|
|
71
|
+
model: systemInfo.model,
|
|
72
|
+
system: systemInfo.system,
|
|
73
|
+
platform: systemInfo.platform,
|
|
74
|
+
version: systemInfo.version,
|
|
75
|
+
SDKVersion: systemInfo.SDKVersion
|
|
76
|
+
};
|
|
77
|
+
envInfo.screenWidth = systemInfo.screenWidth;
|
|
78
|
+
envInfo.screenHeight = systemInfo.screenHeight;
|
|
79
|
+
envInfo.language = systemInfo.language;
|
|
80
|
+
} catch (e) {
|
|
81
|
+
}
|
|
82
|
+
} else if (isBrowser()) {
|
|
83
|
+
envInfo.platform = "browser";
|
|
84
|
+
envInfo.userAgent = navigator.userAgent;
|
|
85
|
+
envInfo.screenWidth = window.screen.width;
|
|
86
|
+
envInfo.screenHeight = window.screen.height;
|
|
87
|
+
envInfo.language = navigator.language;
|
|
88
|
+
}
|
|
89
|
+
return envInfo;
|
|
90
|
+
}
|
|
91
|
+
function parseBrowserInfo(userAgent) {
|
|
92
|
+
const ua = userAgent.toLowerCase();
|
|
93
|
+
let browser = "Unknown";
|
|
94
|
+
let browserVersion = "";
|
|
95
|
+
let os = "Unknown";
|
|
96
|
+
let osVersion = "";
|
|
97
|
+
if (ua.indexOf("chrome") > -1 && ua.indexOf("edge") === -1) {
|
|
98
|
+
browser = "Chrome";
|
|
99
|
+
const match = ua.match(/chrome\/(\d+\.\d+)/);
|
|
100
|
+
browserVersion = match ? match[1] : "";
|
|
101
|
+
} else if (ua.indexOf("safari") > -1 && ua.indexOf("chrome") === -1) {
|
|
102
|
+
browser = "Safari";
|
|
103
|
+
const match = ua.match(/version\/(\d+\.\d+)/);
|
|
104
|
+
browserVersion = match ? match[1] : "";
|
|
105
|
+
} else if (ua.indexOf("firefox") > -1) {
|
|
106
|
+
browser = "Firefox";
|
|
107
|
+
const match = ua.match(/firefox\/(\d+\.\d+)/);
|
|
108
|
+
browserVersion = match ? match[1] : "";
|
|
109
|
+
} else if (ua.indexOf("edge") > -1) {
|
|
110
|
+
browser = "Edge";
|
|
111
|
+
const match = ua.match(/edge\/(\d+\.\d+)/);
|
|
112
|
+
browserVersion = match ? match[1] : "";
|
|
113
|
+
}
|
|
114
|
+
if (ua.indexOf("iphone") > -1 || ua.indexOf("ipad") > -1) {
|
|
115
|
+
os = "iOS";
|
|
116
|
+
const match = ua.match(/os (\d+[._]\d+)/);
|
|
117
|
+
osVersion = match ? match[1].replace("_", ".") : "";
|
|
118
|
+
} else if (ua.indexOf("windows") > -1) {
|
|
119
|
+
os = "Windows";
|
|
120
|
+
if (ua.indexOf("windows nt 10") > -1)
|
|
121
|
+
osVersion = "10";
|
|
122
|
+
else if (ua.indexOf("windows nt 6.3") > -1)
|
|
123
|
+
osVersion = "8.1";
|
|
124
|
+
else if (ua.indexOf("windows nt 6.2") > -1)
|
|
125
|
+
osVersion = "8";
|
|
126
|
+
else if (ua.indexOf("windows nt 6.1") > -1)
|
|
127
|
+
osVersion = "7";
|
|
128
|
+
} else if (ua.indexOf("mac os") > -1) {
|
|
129
|
+
os = "macOS";
|
|
130
|
+
const match = ua.match(/mac os x (\d+[._]\d+)/);
|
|
131
|
+
osVersion = match ? match[1].replace("_", ".") : "";
|
|
132
|
+
} else if (ua.indexOf("android") > -1) {
|
|
133
|
+
os = "Android";
|
|
134
|
+
const match = ua.match(/android (\d+(?:\.\d+)?)/);
|
|
135
|
+
if (match) {
|
|
136
|
+
const [, version] = match;
|
|
137
|
+
osVersion = version;
|
|
138
|
+
if (osVersion.indexOf(".") === -1) {
|
|
139
|
+
osVersion = `${osVersion}.0`;
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
osVersion = "";
|
|
143
|
+
}
|
|
144
|
+
} else if (ua.indexOf("linux") > -1) {
|
|
145
|
+
os = "Linux";
|
|
146
|
+
}
|
|
147
|
+
return { browser, browserVersion, os, osVersion };
|
|
148
|
+
}
|
|
149
|
+
function collectEnvironmentTags() {
|
|
150
|
+
const envInfo = getEnvironmentInfo();
|
|
151
|
+
const tags = {
|
|
152
|
+
platform: envInfo.platform
|
|
153
|
+
};
|
|
154
|
+
if (envInfo.platform === "browser" && envInfo.userAgent) {
|
|
155
|
+
const browserInfo = parseBrowserInfo(envInfo.userAgent);
|
|
156
|
+
tags.browser = browserInfo.browser;
|
|
157
|
+
tags.browserVersion = browserInfo.browserVersion;
|
|
158
|
+
tags.os = browserInfo.os;
|
|
159
|
+
tags.osVersion = browserInfo.osVersion;
|
|
160
|
+
tags.screenWidth = envInfo.screenWidth;
|
|
161
|
+
tags.screenHeight = envInfo.screenHeight;
|
|
162
|
+
tags.language = envInfo.language;
|
|
163
|
+
} else if (envInfo.platform === "wechat" && envInfo.systemInfo) {
|
|
164
|
+
tags.brand = envInfo.systemInfo.brand;
|
|
165
|
+
tags.model = envInfo.systemInfo.model;
|
|
166
|
+
tags.system = envInfo.systemInfo.system;
|
|
167
|
+
tags.wechatVersion = envInfo.systemInfo.version;
|
|
168
|
+
tags.SDKVersion = envInfo.systemInfo.SDKVersion;
|
|
169
|
+
tags.screenWidth = envInfo.screenWidth;
|
|
170
|
+
tags.screenHeight = envInfo.screenHeight;
|
|
171
|
+
tags.language = envInfo.language;
|
|
172
|
+
}
|
|
173
|
+
return tags;
|
|
174
|
+
}
|
|
175
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
176
|
+
0 && (module.exports = {
|
|
177
|
+
collectEnvironmentTags,
|
|
178
|
+
getCurrentUrl,
|
|
179
|
+
getEnvironmentInfo,
|
|
180
|
+
isBrowser,
|
|
181
|
+
isWeChatMiniProgram,
|
|
182
|
+
parseBrowserInfo
|
|
183
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/utils/session.ts
|
|
20
|
+
var session_exports = {};
|
|
21
|
+
__export(session_exports, {
|
|
22
|
+
getSessionId: () => getSessionId
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(session_exports);
|
|
25
|
+
function getSessionId() {
|
|
26
|
+
return `${Date.now()}_${Math.random().toString(36).substring(2, 15)}`;
|
|
27
|
+
}
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
getSessionId
|
|
31
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/utils/tools.ts
|
|
20
|
+
var tools_exports = {};
|
|
21
|
+
__export(tools_exports, {
|
|
22
|
+
flattenStack: () => flattenStack,
|
|
23
|
+
hashToProb: () => hashToProb,
|
|
24
|
+
logDebug: () => logDebug,
|
|
25
|
+
normalizeMessage: () => normalizeMessage,
|
|
26
|
+
now: () => now,
|
|
27
|
+
safeStringify: () => safeStringify
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(tools_exports);
|
|
30
|
+
var import_stacktrace = require("../stack/stacktrace");
|
|
31
|
+
var now = () => Date.now();
|
|
32
|
+
function safeStringify(obj) {
|
|
33
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
34
|
+
return JSON.stringify(obj, (_k, v) => {
|
|
35
|
+
if (v && typeof v === "object") {
|
|
36
|
+
if (seen.has(v))
|
|
37
|
+
return "[Circular]";
|
|
38
|
+
seen.add(v);
|
|
39
|
+
}
|
|
40
|
+
return v;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function normalizeMessage(message) {
|
|
44
|
+
return message.replace(/\d+/g, "{n}").replace(/https?:\/\/\S+/g, "{url}").replace(/[a-f0-9]{16,}/gi, "{id}").slice(0, 200);
|
|
45
|
+
}
|
|
46
|
+
function logDebug(debug, ...args) {
|
|
47
|
+
if (debug)
|
|
48
|
+
console.debug("[LoggerSDK]", ...args);
|
|
49
|
+
}
|
|
50
|
+
function hashToProb(s) {
|
|
51
|
+
let h = 2166136261 >>> 0;
|
|
52
|
+
for (let i = 0; i < s.length; i += 1) {
|
|
53
|
+
h ^= s.charCodeAt(i);
|
|
54
|
+
h = h + (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24) >>> 0;
|
|
55
|
+
}
|
|
56
|
+
return h % 1e4 / 1e4;
|
|
57
|
+
}
|
|
58
|
+
async function flattenStack(error) {
|
|
59
|
+
if (!error) {
|
|
60
|
+
return {
|
|
61
|
+
location: "",
|
|
62
|
+
throwable: ""
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const stackFrames = await (0, import_stacktrace.parseStack)(error);
|
|
66
|
+
return stackFrames && stackFrames.length > 0 ? {
|
|
67
|
+
location: [stackFrames[0]].map((frame) => `${frame.file}:${frame.line}:${frame.column}`).join("\n "),
|
|
68
|
+
throwable: stackFrames.map((frame) => `${frame.file}:${frame.line}:${frame.column}`).join("\n ")
|
|
69
|
+
} : {
|
|
70
|
+
location: "",
|
|
71
|
+
throwable: ""
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
flattenStack,
|
|
77
|
+
hashToProb,
|
|
78
|
+
logDebug,
|
|
79
|
+
normalizeMessage,
|
|
80
|
+
now,
|
|
81
|
+
safeStringify
|
|
82
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/utils/uuid.ts
|
|
20
|
+
var uuid_exports = {};
|
|
21
|
+
__export(uuid_exports, {
|
|
22
|
+
uuid: () => uuid
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(uuid_exports);
|
|
25
|
+
function uuid() {
|
|
26
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
27
|
+
const r = Math.floor(Math.random() * 16);
|
|
28
|
+
const v = c === "x" ? r : Math.floor(r % 4 + 8);
|
|
29
|
+
return v.toString(16);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
uuid
|
|
35
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
// src/capture/jsError.ts
|
|
23
|
+
import { parseStack } from "../stack/stacktrace";
|
|
24
|
+
import { logDebug } from "../utils/tools";
|
|
25
|
+
function registerJsErrorCapture(debug, callback) {
|
|
26
|
+
if (typeof window === "undefined")
|
|
27
|
+
return void 0;
|
|
28
|
+
const handler = (e) => __async(this, null, function* () {
|
|
29
|
+
logDebug(debug, "registerJsErrorCapture error", e);
|
|
30
|
+
if (!e.error)
|
|
31
|
+
return;
|
|
32
|
+
const stack = yield parseStack(e.error);
|
|
33
|
+
callback({
|
|
34
|
+
type: "js",
|
|
35
|
+
message: e.error.message,
|
|
36
|
+
stack,
|
|
37
|
+
throwable: e.error.stack || ""
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
window.addEventListener("error", handler);
|
|
41
|
+
return () => window.removeEventListener("error", handler);
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
registerJsErrorCapture
|
|
45
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
// src/capture/promiseError.ts
|
|
23
|
+
import { parseStack } from "../stack/stacktrace";
|
|
24
|
+
import { logDebug } from "../utils/tools";
|
|
25
|
+
function registerPromiseErrorCapture(debug, callback) {
|
|
26
|
+
if (typeof window === "undefined")
|
|
27
|
+
return void 0;
|
|
28
|
+
const handler = (e) => __async(this, null, function* () {
|
|
29
|
+
logDebug(debug, "registerPromiseErrorCapture unhandledrejection", e);
|
|
30
|
+
const { reason } = e;
|
|
31
|
+
if (reason instanceof Error) {
|
|
32
|
+
const stack = yield parseStack(reason);
|
|
33
|
+
callback({
|
|
34
|
+
type: "promise",
|
|
35
|
+
message: reason.message,
|
|
36
|
+
stack,
|
|
37
|
+
throwable: reason.stack || ""
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
window.addEventListener("unhandledrejection", handler);
|
|
42
|
+
return () => window.removeEventListener("unhandledrejection", handler);
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
registerPromiseErrorCapture
|
|
46
|
+
};
|