@y-monitor/core 1.0.6 → 1.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/dist/core.d.ts +11 -4
- package/dist/core.esm.js +175 -42
- package/dist/core.esm.js.map +1 -1
- package/dist/core.js +175 -42
- package/dist/core.js.map +1 -1
- package/dist/core.min.js +1 -1
- package/package.json +4 -2
- package/src/index.ts +0 -5
package/dist/core.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { BaseOptionsFieldsIntegrationType } from '@y-monitor/types';
|
|
|
4
4
|
import { BaseOptionsType } from '@y-monitor/types';
|
|
5
5
|
import { BasePluginType } from '@y-monitor/types';
|
|
6
6
|
import { BreadcrumbPushDataType } from '@y-monitor/types';
|
|
7
|
+
import { DeviceInfo } from '@y-monitor/types';
|
|
7
8
|
import { EventTypes } from '@y-monitor/shared';
|
|
8
9
|
import { LogTypes } from '@y-monitor/types';
|
|
9
10
|
import { Queue } from '@y-monitor/utils';
|
|
@@ -12,8 +13,10 @@ import { TransportDataType } from '@y-monitor/types';
|
|
|
12
13
|
|
|
13
14
|
export declare abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes> implements BaseClientType {
|
|
14
15
|
SDK_NAME: string;
|
|
16
|
+
SDK_VERSION: string;
|
|
15
17
|
options: O;
|
|
16
18
|
abstract breadcrumb: Breadcrumb;
|
|
19
|
+
abstract transport: BaseTransport;
|
|
17
20
|
constructor(options: O);
|
|
18
21
|
use(plugins: BasePluginType<E>[]): void;
|
|
19
22
|
getOptions(): O;
|
|
@@ -22,12 +25,16 @@ export declare abstract class BaseClient<O extends BaseOptionsFieldsIntegrationT
|
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
export declare class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {
|
|
28
|
+
enableTraceId: boolean;
|
|
29
|
+
traceIdFieldName: string;
|
|
25
30
|
throttleDelayTime: number;
|
|
26
31
|
filterXhrUrlRegExp: RegExp;
|
|
27
32
|
includeHttpUrlTraceIdRegExp: RegExp;
|
|
33
|
+
beforeAjaxSend: any;
|
|
28
34
|
constructor();
|
|
29
35
|
isFilterHttpUrl(url: string): boolean;
|
|
30
36
|
bindOptions(options: O): void;
|
|
37
|
+
setTraceId(httpUrl: string, callback: (headerFieldName: string, traceId: string) => void): void;
|
|
31
38
|
}
|
|
32
39
|
|
|
33
40
|
export declare abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {
|
|
@@ -38,6 +45,7 @@ export declare abstract class BaseTransport<O extends BaseOptionsFieldsIntegrati
|
|
|
38
45
|
constructor();
|
|
39
46
|
bindOptions(options: Partial<O>): void;
|
|
40
47
|
getAuthInfo(): AuthInfo;
|
|
48
|
+
getDeviceInfo(): DeviceInfo;
|
|
41
49
|
send(data: any, breadcrumb?: BreadcrumbPushDataType[]): Promise<void>;
|
|
42
50
|
isSelfDsn(targetUrl: string): boolean;
|
|
43
51
|
abstract sendToServer(data: TransportDataType | any, url: any): void;
|
|
@@ -58,12 +66,11 @@ export declare class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = Bas
|
|
|
58
66
|
bindOptions(options?: Partial<O>): void;
|
|
59
67
|
}
|
|
60
68
|
|
|
61
|
-
declare type
|
|
69
|
+
declare type MonitorCallback = (data: any) => any;
|
|
62
70
|
|
|
63
71
|
export declare class Subscribe<T> {
|
|
64
|
-
events: Map<T,
|
|
65
|
-
|
|
66
|
-
watch(eventName: T, callback: Callback): void;
|
|
72
|
+
events: Map<T, MonitorCallback[]>;
|
|
73
|
+
watch(eventName: T, callback: MonitorCallback): void;
|
|
67
74
|
notify(eventName: T, data: any): void;
|
|
68
75
|
}
|
|
69
76
|
|
package/dist/core.esm.js
CHANGED
|
@@ -4,8 +4,8 @@ var Subscribe = (function () {
|
|
|
4
4
|
}
|
|
5
5
|
Subscribe.prototype.watch = function (eventName, callback) {
|
|
6
6
|
var fns = this.events.get(eventName);
|
|
7
|
-
if (fns) {
|
|
8
|
-
|
|
7
|
+
if (!!fns) {
|
|
8
|
+
fns.push(callback);
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
this.events.set(eventName, [callback]);
|
|
@@ -18,7 +18,9 @@ var Subscribe = (function () {
|
|
|
18
18
|
try {
|
|
19
19
|
fn(data);
|
|
20
20
|
}
|
|
21
|
-
catch (
|
|
21
|
+
catch (err) {
|
|
22
|
+
console.error('err', err);
|
|
23
|
+
}
|
|
22
24
|
});
|
|
23
25
|
};
|
|
24
26
|
return Subscribe;
|
|
@@ -30,16 +32,21 @@ var BaseClient = (function () {
|
|
|
30
32
|
}
|
|
31
33
|
BaseClient.prototype.use = function (plugins) {
|
|
32
34
|
var _this = this;
|
|
35
|
+
if (this.options.disabled)
|
|
36
|
+
return;
|
|
33
37
|
var subscribe = new Subscribe();
|
|
34
38
|
plugins.forEach(function (plugin) {
|
|
39
|
+
if (!_this.isPluginEnable(plugin.name))
|
|
40
|
+
return;
|
|
35
41
|
plugin.monitor.call(_this, subscribe.notify.bind(subscribe));
|
|
36
42
|
var wrapperTransform = function () {
|
|
43
|
+
var _a, _b;
|
|
37
44
|
var args = [];
|
|
38
45
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
39
46
|
args[_i] = arguments[_i];
|
|
40
47
|
}
|
|
41
|
-
var res = plugin.transform.apply(_this, args);
|
|
42
|
-
plugin.consumer.call(_this, res);
|
|
48
|
+
var res = (_a = plugin.transform) === null || _a === void 0 ? void 0 : _a.apply(_this, args);
|
|
49
|
+
(_b = plugin.consumer) === null || _b === void 0 ? void 0 : _b.call(_this, res);
|
|
43
50
|
};
|
|
44
51
|
subscribe.watch(plugin.name, wrapperTransform);
|
|
45
52
|
});
|
|
@@ -135,6 +142,12 @@ var BrowserEventTypes;
|
|
|
135
142
|
(function (BrowserEventTypes) {
|
|
136
143
|
BrowserEventTypes["DOM"] = "dom";
|
|
137
144
|
BrowserEventTypes["XHR"] = "xhr";
|
|
145
|
+
BrowserEventTypes["FETCH"] = "fetch";
|
|
146
|
+
BrowserEventTypes["ERROR"] = "error";
|
|
147
|
+
BrowserEventTypes["HISTORY"] = "history";
|
|
148
|
+
BrowserEventTypes["HASHCHANGE"] = "hashchange";
|
|
149
|
+
BrowserEventTypes["UNHANDLEDREJECTION"] = "unhandledrejection";
|
|
150
|
+
BrowserEventTypes["CONSOLE"] = "console";
|
|
138
151
|
})(BrowserEventTypes || (BrowserEventTypes = {}));
|
|
139
152
|
var BrowserBreadcrumbTypes;
|
|
140
153
|
(function (BrowserBreadcrumbTypes) {
|
|
@@ -204,24 +217,10 @@ var BREADCRUMBCATEGORYS;
|
|
|
204
217
|
BREADCRUMBCATEGORYS["LIFECYCLE"] = "lifecycle";
|
|
205
218
|
})(BREADCRUMBCATEGORYS || (BREADCRUMBCATEGORYS = {}));
|
|
206
219
|
|
|
207
|
-
var version = "1.0.3";
|
|
208
|
-
|
|
209
220
|
var SDK_NAME = 'y-monitor';
|
|
210
|
-
var SDK_VERSION =
|
|
221
|
+
var SDK_VERSION = '';
|
|
211
222
|
|
|
212
|
-
var
|
|
213
|
-
function getGlobal() {
|
|
214
|
-
if (isBrowserEnv)
|
|
215
|
-
return window;
|
|
216
|
-
}
|
|
217
|
-
var _global = getGlobal();
|
|
218
|
-
var _support = getGlobalMonitorSupport();
|
|
219
|
-
function getGlobalMonitorSupport() {
|
|
220
|
-
_global.__MONITOR__ = _global.__MONITOR__ || {};
|
|
221
|
-
return _global.__MONITOR__;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
var PREFIX = 'MONITOR Logger';
|
|
223
|
+
var PREFIX = 'Y-MONITOR Logger';
|
|
225
224
|
var Logger = (function () {
|
|
226
225
|
function Logger() {
|
|
227
226
|
var _this = this;
|
|
@@ -281,7 +280,46 @@ var Logger = (function () {
|
|
|
281
280
|
};
|
|
282
281
|
return Logger;
|
|
283
282
|
}());
|
|
284
|
-
var
|
|
283
|
+
var loggerInstance = null;
|
|
284
|
+
function initLogger() {
|
|
285
|
+
if (!loggerInstance) {
|
|
286
|
+
loggerInstance = new Logger();
|
|
287
|
+
if (_support) {
|
|
288
|
+
_support.logger = loggerInstance;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return loggerInstance;
|
|
292
|
+
}
|
|
293
|
+
var logger = {
|
|
294
|
+
disable: function () { return initLogger().disable(); },
|
|
295
|
+
bindOptions: function (debug) { return initLogger().bindOptions(debug); },
|
|
296
|
+
enable: function () { return initLogger().enable(); },
|
|
297
|
+
getEnableStatus: function () { return initLogger().getEnableStatus(); },
|
|
298
|
+
log: function () {
|
|
299
|
+
var _a;
|
|
300
|
+
var args = [];
|
|
301
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
302
|
+
args[_i] = arguments[_i];
|
|
303
|
+
}
|
|
304
|
+
return (_a = initLogger()).log.apply(_a, args);
|
|
305
|
+
},
|
|
306
|
+
warn: function () {
|
|
307
|
+
var _a;
|
|
308
|
+
var args = [];
|
|
309
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
310
|
+
args[_i] = arguments[_i];
|
|
311
|
+
}
|
|
312
|
+
return (_a = initLogger()).warn.apply(_a, args);
|
|
313
|
+
},
|
|
314
|
+
error: function () {
|
|
315
|
+
var _a;
|
|
316
|
+
var args = [];
|
|
317
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
318
|
+
args[_i] = arguments[_i];
|
|
319
|
+
}
|
|
320
|
+
return (_a = initLogger()).error.apply(_a, args);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
285
323
|
|
|
286
324
|
var nativeToString = Object.prototype.toString;
|
|
287
325
|
function isType(type) {
|
|
@@ -306,17 +344,17 @@ function validateOptionsAndSet(targetArr) {
|
|
|
306
344
|
});
|
|
307
345
|
}
|
|
308
346
|
var variableTypeDetection = {
|
|
309
|
-
isNumber: isType(
|
|
310
|
-
isString: isType(
|
|
311
|
-
isBoolean: isType(
|
|
312
|
-
isNull: isType(
|
|
313
|
-
isUndefined: isType(
|
|
314
|
-
isSymbol: isType(
|
|
315
|
-
isFunction: isType(
|
|
316
|
-
isObject: isType(
|
|
317
|
-
isArray: isType(
|
|
318
|
-
isProcess: isType(
|
|
319
|
-
isWindow: isType(
|
|
347
|
+
isNumber: isType(ToStringTypes.Number),
|
|
348
|
+
isString: isType(ToStringTypes.String),
|
|
349
|
+
isBoolean: isType(ToStringTypes.Boolean),
|
|
350
|
+
isNull: isType(ToStringTypes.Null),
|
|
351
|
+
isUndefined: isType(ToStringTypes.Undefined),
|
|
352
|
+
isSymbol: isType(ToStringTypes.Symbol),
|
|
353
|
+
isFunction: isType(ToStringTypes.Function),
|
|
354
|
+
isObject: isType(ToStringTypes.Object),
|
|
355
|
+
isArray: isType(ToStringTypes.Array),
|
|
356
|
+
isProcess: isType(ToStringTypes.process),
|
|
357
|
+
isWindow: isType(ToStringTypes.Window)
|
|
320
358
|
};
|
|
321
359
|
function isEmpty(wat) {
|
|
322
360
|
return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;
|
|
@@ -329,6 +367,80 @@ function isInclude(origin, target) {
|
|
|
329
367
|
}
|
|
330
368
|
function silentConsoleScope(callback) {
|
|
331
369
|
callback();
|
|
370
|
+
}
|
|
371
|
+
function generateUuid() {
|
|
372
|
+
var d = new Date().getTime();
|
|
373
|
+
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
374
|
+
var r = (d + Math.random() * 16) % 16 | 0;
|
|
375
|
+
d = Math.floor(d / 16);
|
|
376
|
+
return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
|
|
377
|
+
});
|
|
378
|
+
return uuid;
|
|
379
|
+
}
|
|
380
|
+
function getOS() {
|
|
381
|
+
var ua = navigator.userAgent;
|
|
382
|
+
if (ua.indexOf('Win') !== -1)
|
|
383
|
+
return 'Windows';
|
|
384
|
+
if (ua.indexOf('Mac') !== -1)
|
|
385
|
+
return 'MacOS';
|
|
386
|
+
if (ua.indexOf('X11') !== -1)
|
|
387
|
+
return 'UNIX';
|
|
388
|
+
if (ua.indexOf('Linux') !== -1)
|
|
389
|
+
return 'Linux';
|
|
390
|
+
if (ua.indexOf('Android') !== -1)
|
|
391
|
+
return 'Android';
|
|
392
|
+
if (ua.indexOf('iOS') !== -1)
|
|
393
|
+
return 'iOS';
|
|
394
|
+
return 'Unknown OS';
|
|
395
|
+
}
|
|
396
|
+
function getBrowserName() {
|
|
397
|
+
var ua = navigator.userAgent.toLowerCase();
|
|
398
|
+
if (ua.includes('edg/'))
|
|
399
|
+
return 'Microsoft Edge';
|
|
400
|
+
if (ua.includes('chrome/'))
|
|
401
|
+
return 'Google Chrome';
|
|
402
|
+
if (ua.includes('firefox/'))
|
|
403
|
+
return 'Mozilla Firefox';
|
|
404
|
+
if (ua.includes('safari/') && !ua.includes('chrome/'))
|
|
405
|
+
return 'Safari';
|
|
406
|
+
if (ua.includes('opera/') || ua.includes('opr/'))
|
|
407
|
+
return 'Opera';
|
|
408
|
+
if (ua.includes('trident/') || ua.includes('msie'))
|
|
409
|
+
return 'Internet Explorer';
|
|
410
|
+
return '未知浏览器';
|
|
411
|
+
}
|
|
412
|
+
function getBrowserVersion() {
|
|
413
|
+
var ua = navigator.userAgent.toLowerCase();
|
|
414
|
+
var version = '未知版本';
|
|
415
|
+
var matches = {
|
|
416
|
+
'edg/': ua.match(/edg\/([0-9.]+)/),
|
|
417
|
+
'chrome/': ua.match(/chrome\/([0-9.]+)/),
|
|
418
|
+
'firefox/': ua.match(/firefox\/([0-9.]+)/),
|
|
419
|
+
'safari/': ua.match(/version\/([0-9.]+).*safari/),
|
|
420
|
+
'opr/': ua.match(/opr\/([0-9.]+)/),
|
|
421
|
+
msie: ua.match(/msie ([0-9.]+)/),
|
|
422
|
+
'trident/': ua.match(/trident\/[0-9.]+; rv:([0-9.]+)/)
|
|
423
|
+
};
|
|
424
|
+
for (var _i = 0, _a = Object.entries(matches); _i < _a.length; _i++) {
|
|
425
|
+
var _b = _a[_i]; _b[0]; var match = _b[1];
|
|
426
|
+
if (match && match[1]) {
|
|
427
|
+
version = match[1];
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return version;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
var isBrowserEnv = variableTypeDetection.isWindow(typeof window !== 'undefined' ? window : 0);
|
|
435
|
+
function getGlobal() {
|
|
436
|
+
if (isBrowserEnv)
|
|
437
|
+
return window;
|
|
438
|
+
}
|
|
439
|
+
var _global = getGlobal();
|
|
440
|
+
var _support = getGlobalMonitorSupport();
|
|
441
|
+
function getGlobalMonitorSupport() {
|
|
442
|
+
_global.__MONITOR__ = _global.__MONITOR__ || {};
|
|
443
|
+
return _global.__MONITOR__;
|
|
332
444
|
}
|
|
333
445
|
|
|
334
446
|
var Queue = (function () {
|
|
@@ -381,9 +493,9 @@ var BaseTransport = (function () {
|
|
|
381
493
|
BaseTransport.prototype.bindOptions = function (options) {
|
|
382
494
|
var dsn = options.dsn, apiKey = options.apiKey, beforeDataReport = options.beforeDataReport;
|
|
383
495
|
var optionArr = [
|
|
384
|
-
[dsn, 'dsn',
|
|
385
|
-
[apiKey, 'apiKey',
|
|
386
|
-
[beforeDataReport, 'beforeDataReport',
|
|
496
|
+
[dsn, 'dsn', ToStringTypes.String],
|
|
497
|
+
[apiKey, 'apiKey', ToStringTypes.String],
|
|
498
|
+
[beforeDataReport, 'beforeDataReport', ToStringTypes.Function]
|
|
387
499
|
];
|
|
388
500
|
validateOptionsAndSet.call(this, optionArr);
|
|
389
501
|
};
|
|
@@ -395,6 +507,14 @@ var BaseTransport = (function () {
|
|
|
395
507
|
};
|
|
396
508
|
return result;
|
|
397
509
|
};
|
|
510
|
+
BaseTransport.prototype.getDeviceInfo = function () {
|
|
511
|
+
var result = {
|
|
512
|
+
deviceOs: getOS(),
|
|
513
|
+
deviceName: getBrowserName(),
|
|
514
|
+
deviceVersion: getBrowserVersion()
|
|
515
|
+
};
|
|
516
|
+
return result;
|
|
517
|
+
};
|
|
398
518
|
BaseTransport.prototype.send = function (data, breadcrumb) {
|
|
399
519
|
if (breadcrumb === void 0) { breadcrumb = []; }
|
|
400
520
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -429,21 +549,34 @@ var BaseTransport = (function () {
|
|
|
429
549
|
|
|
430
550
|
var BaseOptions = (function () {
|
|
431
551
|
function BaseOptions() {
|
|
552
|
+
this.enableTraceId = false;
|
|
553
|
+
this.traceIdFieldName = 'Trace-Id';
|
|
432
554
|
this.throttleDelayTime = 0;
|
|
433
555
|
this.includeHttpUrlTraceIdRegExp = /.*/;
|
|
556
|
+
this.beforeAjaxSend = null;
|
|
434
557
|
}
|
|
435
558
|
BaseOptions.prototype.isFilterHttpUrl = function (url) {
|
|
436
559
|
return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);
|
|
437
560
|
};
|
|
438
561
|
BaseOptions.prototype.bindOptions = function (options) {
|
|
439
|
-
var throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp;
|
|
562
|
+
var enableTraceId = options.enableTraceId, traceIdFieldName = options.traceIdFieldName, throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp, beforeAjaxSend = options.beforeAjaxSend;
|
|
440
563
|
var optionArr = [
|
|
441
|
-
[
|
|
442
|
-
[
|
|
443
|
-
[
|
|
564
|
+
[enableTraceId, 'enableTraceId', ToStringTypes.Boolean],
|
|
565
|
+
[traceIdFieldName, 'traceIdFieldName', ToStringTypes.String],
|
|
566
|
+
[throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],
|
|
567
|
+
[filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],
|
|
568
|
+
[includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp],
|
|
569
|
+
[beforeAjaxSend, 'beforeAjaxSend', ToStringTypes.Function]
|
|
444
570
|
];
|
|
445
571
|
validateOptionsAndSet.call(this, optionArr);
|
|
446
572
|
};
|
|
573
|
+
BaseOptions.prototype.setTraceId = function (httpUrl, callback) {
|
|
574
|
+
var _a = this, includeHttpUrlTraceIdRegExp = _a.includeHttpUrlTraceIdRegExp, enableTraceId = _a.enableTraceId;
|
|
575
|
+
if (enableTraceId && includeHttpUrlTraceIdRegExp && includeHttpUrlTraceIdRegExp.test(httpUrl)) {
|
|
576
|
+
var traceId = generateUuid();
|
|
577
|
+
callback(this.traceIdFieldName, traceId);
|
|
578
|
+
}
|
|
579
|
+
};
|
|
447
580
|
return BaseOptions;
|
|
448
581
|
}());
|
|
449
582
|
|
|
@@ -492,8 +625,8 @@ var Breadcrumb = (function () {
|
|
|
492
625
|
if (options === void 0) { options = {}; }
|
|
493
626
|
var maxBreadcrumbs = options.maxBreadcrumbs;
|
|
494
627
|
var beforePushBreadcrumb = options.beforePushBreadcrumb;
|
|
495
|
-
toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs',
|
|
496
|
-
toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb',
|
|
628
|
+
toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);
|
|
629
|
+
toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&
|
|
497
630
|
(this.beforePushBreadcrumb = beforePushBreadcrumb);
|
|
498
631
|
};
|
|
499
632
|
return Breadcrumb;
|
package/dist/core.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.esm.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/global.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type Callback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, Callback[]> = new Map();\n constructor() {}\n watch(eventName: T, callback: Callback) {\n const fns = this.events.get(eventName);\n if (fns) {\n this.events.set(eventName, fns.concat(callback));\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (error) {}\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n options: O;\n abstract breadcrumb: Breadcrumb;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform.apply(this, args);\n plugin.consumer.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.esm.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/global.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type MonitorCallback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, MonitorCallback[]> = new Map();\n\n watch(eventName: T, callback: MonitorCallback) {\n const fns = this.events.get(eventName);\n if (!!fns) {\n fns.push(callback);\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (err) {\n console.error('err', err);\n }\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\nimport { BaseTransport } from './baseTransport';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n SDK_VERSION: string;\n options: O;\n\n abstract breadcrumb: Breadcrumb;\n abstract transport: BaseTransport;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n if (this.options.disabled) return;\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n if (!this.isPluginEnable(plugin.name)) return;\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform?.apply(this, args);\n plugin.consumer?.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr',\n FETCH = 'fetch',\n ERROR = 'error',\n HISTORY = 'history',\n HASHCHANGE = 'hashchange',\n UNHANDLEDREJECTION = 'unhandledrejection',\n CONSOLE = 'console'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = '';\n","import { _global, _support } from './global';\nconst PREFIX = 'Y-MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nlet loggerInstance: Logger | null = null;\n\nfunction initLogger() {\n if (!loggerInstance) {\n loggerInstance = new Logger();\n // 延迟设置到 _support 中\n if (_support) {\n _support.logger = loggerInstance;\n }\n }\n return loggerInstance;\n}\n\n// 导出函数而不是直接的值\nexport const logger = {\n disable: () => initLogger().disable(),\n bindOptions: (debug: boolean) => initLogger().bindOptions(debug),\n enable: () => initLogger().enable(),\n getEnableStatus: () => initLogger().getEnableStatus(),\n log: (...args: any[]) => initLogger().log(...args),\n warn: (...args: any[]) => initLogger().warn(...args),\n error: (...args: any[]) => initLogger().error(...args)\n};\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个方法\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function rewirteAttr(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function generateUuid(): string {\n let d = new Date().getTime();\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n return uuid;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n\n//获取当前设备信息\nexport function getOS() {\n const ua = navigator.userAgent;\n if (ua.indexOf('Win') !== -1) return 'Windows';\n if (ua.indexOf('Mac') !== -1) return 'MacOS';\n if (ua.indexOf('X11') !== -1) return 'UNIX';\n if (ua.indexOf('Linux') !== -1) return 'Linux';\n if (ua.indexOf('Android') !== -1) return 'Android';\n if (ua.indexOf('iOS') !== -1) return 'iOS';\n return 'Unknown OS';\n}\n\n// 解析浏览器名称\nexport function getBrowserName() {\n const ua = navigator.userAgent.toLowerCase();\n\n if (ua.includes('edg/')) return 'Microsoft Edge';\n if (ua.includes('chrome/')) return 'Google Chrome';\n if (ua.includes('firefox/')) return 'Mozilla Firefox';\n if (ua.includes('safari/') && !ua.includes('chrome/')) return 'Safari';\n if (ua.includes('opera/') || ua.includes('opr/')) return 'Opera';\n if (ua.includes('trident/') || ua.includes('msie')) return 'Internet Explorer';\n\n return '未知浏览器';\n}\n\n// 解析浏览器版本\nexport function getBrowserVersion() {\n const ua = navigator.userAgent.toLowerCase();\n let version = '未知版本';\n\n // 不同浏览器的版本匹配规则\n const matches = {\n 'edg/': ua.match(/edg\\/([0-9.]+)/),\n 'chrome/': ua.match(/chrome\\/([0-9.]+)/),\n 'firefox/': ua.match(/firefox\\/([0-9.]+)/),\n 'safari/': ua.match(/version\\/([0-9.]+).*safari/),\n 'opr/': ua.match(/opr\\/([0-9.]+)/),\n msie: ua.match(/msie ([0-9.]+)/),\n 'trident/': ua.match(/trident\\/[0-9.]+; rv:([0-9.]+)/)\n };\n\n for (const [key, match] of Object.entries(matches)) {\n if (match && match[1]) {\n version = match[1];\n break;\n }\n }\n\n return version;\n}\n\nexport function unknownToString(target: unknown): string {\n if (variableTypeDetection.isString(target)) {\n return target as string;\n }\n if (variableTypeDetection.isUndefined(target)) {\n return 'undefined';\n }\n return JSON.stringify(target);\n}\n\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport function isError(wat: any): boolean {\n switch (nativeToString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nexport function isExistProperty(obj: Object, key: string | number | symbol): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","import { Logger } from './logger';\nimport { variableTypeDetection } from './tools';\n\nexport const isBrowserEnv = variableTypeDetection.isWindow(typeof window !== 'undefined' ? window : 0);\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal<T>() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal & T;\n}\n\nconst _global = getGlobal<Window>();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n\nexport function supportsHistory(): boolean {\n const chrome = (_global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n const hasHistoryApi = 'history' in _global && !!_global.history.pushState && !!_global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, DeviceInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue, getOS, getBrowserName, getBrowserVersion } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n getDeviceInfo(): DeviceInfo {\n const result: DeviceInfo = {\n deviceOs: getOS(),\n deviceName: getBrowserName(),\n deviceVersion: getBrowserVersion()\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { generateUuid, validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n enableTraceId = false;\n traceIdFieldName = 'Trace-Id';\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n beforeAjaxSend = null;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { enableTraceId, traceIdFieldName, throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp, beforeAjaxSend } = options;\n const optionArr = [\n [enableTraceId, 'enableTraceId', ToStringTypes.Boolean],\n [traceIdFieldName, 'traceIdFieldName', ToStringTypes.String],\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp],\n [beforeAjaxSend, 'beforeAjaxSend', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n setTraceId(httpUrl: string, callback: (headerFieldName: string, traceId: string) => void) {\n const { includeHttpUrlTraceIdRegExp, enableTraceId } = this;\n if (enableTraceId && includeHttpUrlTraceIdRegExp && includeHttpUrlTraceIdRegExp.test(httpUrl)) {\n const traceId = generateUuid();\n callback(this.traceIdFieldName, traceId);\n }\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb;\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -6,8 +6,8 @@ var Subscribe = (function () {
|
|
|
6
6
|
}
|
|
7
7
|
Subscribe.prototype.watch = function (eventName, callback) {
|
|
8
8
|
var fns = this.events.get(eventName);
|
|
9
|
-
if (fns) {
|
|
10
|
-
|
|
9
|
+
if (!!fns) {
|
|
10
|
+
fns.push(callback);
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
13
|
this.events.set(eventName, [callback]);
|
|
@@ -20,7 +20,9 @@ var Subscribe = (function () {
|
|
|
20
20
|
try {
|
|
21
21
|
fn(data);
|
|
22
22
|
}
|
|
23
|
-
catch (
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error('err', err);
|
|
25
|
+
}
|
|
24
26
|
});
|
|
25
27
|
};
|
|
26
28
|
return Subscribe;
|
|
@@ -32,16 +34,21 @@ var BaseClient = (function () {
|
|
|
32
34
|
}
|
|
33
35
|
BaseClient.prototype.use = function (plugins) {
|
|
34
36
|
var _this = this;
|
|
37
|
+
if (this.options.disabled)
|
|
38
|
+
return;
|
|
35
39
|
var subscribe = new Subscribe();
|
|
36
40
|
plugins.forEach(function (plugin) {
|
|
41
|
+
if (!_this.isPluginEnable(plugin.name))
|
|
42
|
+
return;
|
|
37
43
|
plugin.monitor.call(_this, subscribe.notify.bind(subscribe));
|
|
38
44
|
var wrapperTransform = function () {
|
|
45
|
+
var _a, _b;
|
|
39
46
|
var args = [];
|
|
40
47
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
41
48
|
args[_i] = arguments[_i];
|
|
42
49
|
}
|
|
43
|
-
var res = plugin.transform.apply(_this, args);
|
|
44
|
-
plugin.consumer.call(_this, res);
|
|
50
|
+
var res = (_a = plugin.transform) === null || _a === void 0 ? void 0 : _a.apply(_this, args);
|
|
51
|
+
(_b = plugin.consumer) === null || _b === void 0 ? void 0 : _b.call(_this, res);
|
|
45
52
|
};
|
|
46
53
|
subscribe.watch(plugin.name, wrapperTransform);
|
|
47
54
|
});
|
|
@@ -137,6 +144,12 @@ var BrowserEventTypes;
|
|
|
137
144
|
(function (BrowserEventTypes) {
|
|
138
145
|
BrowserEventTypes["DOM"] = "dom";
|
|
139
146
|
BrowserEventTypes["XHR"] = "xhr";
|
|
147
|
+
BrowserEventTypes["FETCH"] = "fetch";
|
|
148
|
+
BrowserEventTypes["ERROR"] = "error";
|
|
149
|
+
BrowserEventTypes["HISTORY"] = "history";
|
|
150
|
+
BrowserEventTypes["HASHCHANGE"] = "hashchange";
|
|
151
|
+
BrowserEventTypes["UNHANDLEDREJECTION"] = "unhandledrejection";
|
|
152
|
+
BrowserEventTypes["CONSOLE"] = "console";
|
|
140
153
|
})(BrowserEventTypes || (BrowserEventTypes = {}));
|
|
141
154
|
var BrowserBreadcrumbTypes;
|
|
142
155
|
(function (BrowserBreadcrumbTypes) {
|
|
@@ -206,24 +219,10 @@ var BREADCRUMBCATEGORYS;
|
|
|
206
219
|
BREADCRUMBCATEGORYS["LIFECYCLE"] = "lifecycle";
|
|
207
220
|
})(BREADCRUMBCATEGORYS || (BREADCRUMBCATEGORYS = {}));
|
|
208
221
|
|
|
209
|
-
var version = "1.0.3";
|
|
210
|
-
|
|
211
222
|
var SDK_NAME = 'y-monitor';
|
|
212
|
-
var SDK_VERSION =
|
|
223
|
+
var SDK_VERSION = '';
|
|
213
224
|
|
|
214
|
-
var
|
|
215
|
-
function getGlobal() {
|
|
216
|
-
if (isBrowserEnv)
|
|
217
|
-
return window;
|
|
218
|
-
}
|
|
219
|
-
var _global = getGlobal();
|
|
220
|
-
var _support = getGlobalMonitorSupport();
|
|
221
|
-
function getGlobalMonitorSupport() {
|
|
222
|
-
_global.__MONITOR__ = _global.__MONITOR__ || {};
|
|
223
|
-
return _global.__MONITOR__;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
var PREFIX = 'MONITOR Logger';
|
|
225
|
+
var PREFIX = 'Y-MONITOR Logger';
|
|
227
226
|
var Logger = (function () {
|
|
228
227
|
function Logger() {
|
|
229
228
|
var _this = this;
|
|
@@ -283,7 +282,46 @@ var Logger = (function () {
|
|
|
283
282
|
};
|
|
284
283
|
return Logger;
|
|
285
284
|
}());
|
|
286
|
-
var
|
|
285
|
+
var loggerInstance = null;
|
|
286
|
+
function initLogger() {
|
|
287
|
+
if (!loggerInstance) {
|
|
288
|
+
loggerInstance = new Logger();
|
|
289
|
+
if (_support) {
|
|
290
|
+
_support.logger = loggerInstance;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return loggerInstance;
|
|
294
|
+
}
|
|
295
|
+
var logger = {
|
|
296
|
+
disable: function () { return initLogger().disable(); },
|
|
297
|
+
bindOptions: function (debug) { return initLogger().bindOptions(debug); },
|
|
298
|
+
enable: function () { return initLogger().enable(); },
|
|
299
|
+
getEnableStatus: function () { return initLogger().getEnableStatus(); },
|
|
300
|
+
log: function () {
|
|
301
|
+
var _a;
|
|
302
|
+
var args = [];
|
|
303
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
304
|
+
args[_i] = arguments[_i];
|
|
305
|
+
}
|
|
306
|
+
return (_a = initLogger()).log.apply(_a, args);
|
|
307
|
+
},
|
|
308
|
+
warn: function () {
|
|
309
|
+
var _a;
|
|
310
|
+
var args = [];
|
|
311
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
312
|
+
args[_i] = arguments[_i];
|
|
313
|
+
}
|
|
314
|
+
return (_a = initLogger()).warn.apply(_a, args);
|
|
315
|
+
},
|
|
316
|
+
error: function () {
|
|
317
|
+
var _a;
|
|
318
|
+
var args = [];
|
|
319
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
320
|
+
args[_i] = arguments[_i];
|
|
321
|
+
}
|
|
322
|
+
return (_a = initLogger()).error.apply(_a, args);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
287
325
|
|
|
288
326
|
var nativeToString = Object.prototype.toString;
|
|
289
327
|
function isType(type) {
|
|
@@ -308,17 +346,17 @@ function validateOptionsAndSet(targetArr) {
|
|
|
308
346
|
});
|
|
309
347
|
}
|
|
310
348
|
var variableTypeDetection = {
|
|
311
|
-
isNumber: isType(
|
|
312
|
-
isString: isType(
|
|
313
|
-
isBoolean: isType(
|
|
314
|
-
isNull: isType(
|
|
315
|
-
isUndefined: isType(
|
|
316
|
-
isSymbol: isType(
|
|
317
|
-
isFunction: isType(
|
|
318
|
-
isObject: isType(
|
|
319
|
-
isArray: isType(
|
|
320
|
-
isProcess: isType(
|
|
321
|
-
isWindow: isType(
|
|
349
|
+
isNumber: isType(ToStringTypes.Number),
|
|
350
|
+
isString: isType(ToStringTypes.String),
|
|
351
|
+
isBoolean: isType(ToStringTypes.Boolean),
|
|
352
|
+
isNull: isType(ToStringTypes.Null),
|
|
353
|
+
isUndefined: isType(ToStringTypes.Undefined),
|
|
354
|
+
isSymbol: isType(ToStringTypes.Symbol),
|
|
355
|
+
isFunction: isType(ToStringTypes.Function),
|
|
356
|
+
isObject: isType(ToStringTypes.Object),
|
|
357
|
+
isArray: isType(ToStringTypes.Array),
|
|
358
|
+
isProcess: isType(ToStringTypes.process),
|
|
359
|
+
isWindow: isType(ToStringTypes.Window)
|
|
322
360
|
};
|
|
323
361
|
function isEmpty(wat) {
|
|
324
362
|
return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;
|
|
@@ -331,6 +369,80 @@ function isInclude(origin, target) {
|
|
|
331
369
|
}
|
|
332
370
|
function silentConsoleScope(callback) {
|
|
333
371
|
callback();
|
|
372
|
+
}
|
|
373
|
+
function generateUuid() {
|
|
374
|
+
var d = new Date().getTime();
|
|
375
|
+
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
376
|
+
var r = (d + Math.random() * 16) % 16 | 0;
|
|
377
|
+
d = Math.floor(d / 16);
|
|
378
|
+
return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
|
|
379
|
+
});
|
|
380
|
+
return uuid;
|
|
381
|
+
}
|
|
382
|
+
function getOS() {
|
|
383
|
+
var ua = navigator.userAgent;
|
|
384
|
+
if (ua.indexOf('Win') !== -1)
|
|
385
|
+
return 'Windows';
|
|
386
|
+
if (ua.indexOf('Mac') !== -1)
|
|
387
|
+
return 'MacOS';
|
|
388
|
+
if (ua.indexOf('X11') !== -1)
|
|
389
|
+
return 'UNIX';
|
|
390
|
+
if (ua.indexOf('Linux') !== -1)
|
|
391
|
+
return 'Linux';
|
|
392
|
+
if (ua.indexOf('Android') !== -1)
|
|
393
|
+
return 'Android';
|
|
394
|
+
if (ua.indexOf('iOS') !== -1)
|
|
395
|
+
return 'iOS';
|
|
396
|
+
return 'Unknown OS';
|
|
397
|
+
}
|
|
398
|
+
function getBrowserName() {
|
|
399
|
+
var ua = navigator.userAgent.toLowerCase();
|
|
400
|
+
if (ua.includes('edg/'))
|
|
401
|
+
return 'Microsoft Edge';
|
|
402
|
+
if (ua.includes('chrome/'))
|
|
403
|
+
return 'Google Chrome';
|
|
404
|
+
if (ua.includes('firefox/'))
|
|
405
|
+
return 'Mozilla Firefox';
|
|
406
|
+
if (ua.includes('safari/') && !ua.includes('chrome/'))
|
|
407
|
+
return 'Safari';
|
|
408
|
+
if (ua.includes('opera/') || ua.includes('opr/'))
|
|
409
|
+
return 'Opera';
|
|
410
|
+
if (ua.includes('trident/') || ua.includes('msie'))
|
|
411
|
+
return 'Internet Explorer';
|
|
412
|
+
return '未知浏览器';
|
|
413
|
+
}
|
|
414
|
+
function getBrowserVersion() {
|
|
415
|
+
var ua = navigator.userAgent.toLowerCase();
|
|
416
|
+
var version = '未知版本';
|
|
417
|
+
var matches = {
|
|
418
|
+
'edg/': ua.match(/edg\/([0-9.]+)/),
|
|
419
|
+
'chrome/': ua.match(/chrome\/([0-9.]+)/),
|
|
420
|
+
'firefox/': ua.match(/firefox\/([0-9.]+)/),
|
|
421
|
+
'safari/': ua.match(/version\/([0-9.]+).*safari/),
|
|
422
|
+
'opr/': ua.match(/opr\/([0-9.]+)/),
|
|
423
|
+
msie: ua.match(/msie ([0-9.]+)/),
|
|
424
|
+
'trident/': ua.match(/trident\/[0-9.]+; rv:([0-9.]+)/)
|
|
425
|
+
};
|
|
426
|
+
for (var _i = 0, _a = Object.entries(matches); _i < _a.length; _i++) {
|
|
427
|
+
var _b = _a[_i]; _b[0]; var match = _b[1];
|
|
428
|
+
if (match && match[1]) {
|
|
429
|
+
version = match[1];
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return version;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
var isBrowserEnv = variableTypeDetection.isWindow(typeof window !== 'undefined' ? window : 0);
|
|
437
|
+
function getGlobal() {
|
|
438
|
+
if (isBrowserEnv)
|
|
439
|
+
return window;
|
|
440
|
+
}
|
|
441
|
+
var _global = getGlobal();
|
|
442
|
+
var _support = getGlobalMonitorSupport();
|
|
443
|
+
function getGlobalMonitorSupport() {
|
|
444
|
+
_global.__MONITOR__ = _global.__MONITOR__ || {};
|
|
445
|
+
return _global.__MONITOR__;
|
|
334
446
|
}
|
|
335
447
|
|
|
336
448
|
var Queue = (function () {
|
|
@@ -383,9 +495,9 @@ var BaseTransport = (function () {
|
|
|
383
495
|
BaseTransport.prototype.bindOptions = function (options) {
|
|
384
496
|
var dsn = options.dsn, apiKey = options.apiKey, beforeDataReport = options.beforeDataReport;
|
|
385
497
|
var optionArr = [
|
|
386
|
-
[dsn, 'dsn',
|
|
387
|
-
[apiKey, 'apiKey',
|
|
388
|
-
[beforeDataReport, 'beforeDataReport',
|
|
498
|
+
[dsn, 'dsn', ToStringTypes.String],
|
|
499
|
+
[apiKey, 'apiKey', ToStringTypes.String],
|
|
500
|
+
[beforeDataReport, 'beforeDataReport', ToStringTypes.Function]
|
|
389
501
|
];
|
|
390
502
|
validateOptionsAndSet.call(this, optionArr);
|
|
391
503
|
};
|
|
@@ -397,6 +509,14 @@ var BaseTransport = (function () {
|
|
|
397
509
|
};
|
|
398
510
|
return result;
|
|
399
511
|
};
|
|
512
|
+
BaseTransport.prototype.getDeviceInfo = function () {
|
|
513
|
+
var result = {
|
|
514
|
+
deviceOs: getOS(),
|
|
515
|
+
deviceName: getBrowserName(),
|
|
516
|
+
deviceVersion: getBrowserVersion()
|
|
517
|
+
};
|
|
518
|
+
return result;
|
|
519
|
+
};
|
|
400
520
|
BaseTransport.prototype.send = function (data, breadcrumb) {
|
|
401
521
|
if (breadcrumb === void 0) { breadcrumb = []; }
|
|
402
522
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -431,21 +551,34 @@ var BaseTransport = (function () {
|
|
|
431
551
|
|
|
432
552
|
var BaseOptions = (function () {
|
|
433
553
|
function BaseOptions() {
|
|
554
|
+
this.enableTraceId = false;
|
|
555
|
+
this.traceIdFieldName = 'Trace-Id';
|
|
434
556
|
this.throttleDelayTime = 0;
|
|
435
557
|
this.includeHttpUrlTraceIdRegExp = /.*/;
|
|
558
|
+
this.beforeAjaxSend = null;
|
|
436
559
|
}
|
|
437
560
|
BaseOptions.prototype.isFilterHttpUrl = function (url) {
|
|
438
561
|
return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);
|
|
439
562
|
};
|
|
440
563
|
BaseOptions.prototype.bindOptions = function (options) {
|
|
441
|
-
var throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp;
|
|
564
|
+
var enableTraceId = options.enableTraceId, traceIdFieldName = options.traceIdFieldName, throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp, beforeAjaxSend = options.beforeAjaxSend;
|
|
442
565
|
var optionArr = [
|
|
443
|
-
[
|
|
444
|
-
[
|
|
445
|
-
[
|
|
566
|
+
[enableTraceId, 'enableTraceId', ToStringTypes.Boolean],
|
|
567
|
+
[traceIdFieldName, 'traceIdFieldName', ToStringTypes.String],
|
|
568
|
+
[throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],
|
|
569
|
+
[filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],
|
|
570
|
+
[includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp],
|
|
571
|
+
[beforeAjaxSend, 'beforeAjaxSend', ToStringTypes.Function]
|
|
446
572
|
];
|
|
447
573
|
validateOptionsAndSet.call(this, optionArr);
|
|
448
574
|
};
|
|
575
|
+
BaseOptions.prototype.setTraceId = function (httpUrl, callback) {
|
|
576
|
+
var _a = this, includeHttpUrlTraceIdRegExp = _a.includeHttpUrlTraceIdRegExp, enableTraceId = _a.enableTraceId;
|
|
577
|
+
if (enableTraceId && includeHttpUrlTraceIdRegExp && includeHttpUrlTraceIdRegExp.test(httpUrl)) {
|
|
578
|
+
var traceId = generateUuid();
|
|
579
|
+
callback(this.traceIdFieldName, traceId);
|
|
580
|
+
}
|
|
581
|
+
};
|
|
449
582
|
return BaseOptions;
|
|
450
583
|
}());
|
|
451
584
|
|
|
@@ -494,8 +627,8 @@ var Breadcrumb = (function () {
|
|
|
494
627
|
if (options === void 0) { options = {}; }
|
|
495
628
|
var maxBreadcrumbs = options.maxBreadcrumbs;
|
|
496
629
|
var beforePushBreadcrumb = options.beforePushBreadcrumb;
|
|
497
|
-
toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs',
|
|
498
|
-
toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb',
|
|
630
|
+
toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);
|
|
631
|
+
toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&
|
|
499
632
|
(this.beforePushBreadcrumb = beforePushBreadcrumb);
|
|
500
633
|
};
|
|
501
634
|
return Breadcrumb;
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/global.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type Callback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, Callback[]> = new Map();\n constructor() {}\n watch(eventName: T, callback: Callback) {\n const fns = this.events.get(eventName);\n if (fns) {\n this.events.set(eventName, fns.concat(callback));\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (error) {}\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n options: O;\n abstract breadcrumb: Breadcrumb;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform.apply(this, args);\n plugin.consumer.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/global.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type MonitorCallback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, MonitorCallback[]> = new Map();\n\n watch(eventName: T, callback: MonitorCallback) {\n const fns = this.events.get(eventName);\n if (!!fns) {\n fns.push(callback);\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (err) {\n console.error('err', err);\n }\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\nimport { BaseTransport } from './baseTransport';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n SDK_VERSION: string;\n options: O;\n\n abstract breadcrumb: Breadcrumb;\n abstract transport: BaseTransport;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n if (this.options.disabled) return;\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n if (!this.isPluginEnable(plugin.name)) return;\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform?.apply(this, args);\n plugin.consumer?.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr',\n FETCH = 'fetch',\n ERROR = 'error',\n HISTORY = 'history',\n HASHCHANGE = 'hashchange',\n UNHANDLEDREJECTION = 'unhandledrejection',\n CONSOLE = 'console'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = '';\n","import { _global, _support } from './global';\nconst PREFIX = 'Y-MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nlet loggerInstance: Logger | null = null;\n\nfunction initLogger() {\n if (!loggerInstance) {\n loggerInstance = new Logger();\n // 延迟设置到 _support 中\n if (_support) {\n _support.logger = loggerInstance;\n }\n }\n return loggerInstance;\n}\n\n// 导出函数而不是直接的值\nexport const logger = {\n disable: () => initLogger().disable(),\n bindOptions: (debug: boolean) => initLogger().bindOptions(debug),\n enable: () => initLogger().enable(),\n getEnableStatus: () => initLogger().getEnableStatus(),\n log: (...args: any[]) => initLogger().log(...args),\n warn: (...args: any[]) => initLogger().warn(...args),\n error: (...args: any[]) => initLogger().error(...args)\n};\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个方法\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function rewirteAttr(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function generateUuid(): string {\n let d = new Date().getTime();\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n return uuid;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n\n//获取当前设备信息\nexport function getOS() {\n const ua = navigator.userAgent;\n if (ua.indexOf('Win') !== -1) return 'Windows';\n if (ua.indexOf('Mac') !== -1) return 'MacOS';\n if (ua.indexOf('X11') !== -1) return 'UNIX';\n if (ua.indexOf('Linux') !== -1) return 'Linux';\n if (ua.indexOf('Android') !== -1) return 'Android';\n if (ua.indexOf('iOS') !== -1) return 'iOS';\n return 'Unknown OS';\n}\n\n// 解析浏览器名称\nexport function getBrowserName() {\n const ua = navigator.userAgent.toLowerCase();\n\n if (ua.includes('edg/')) return 'Microsoft Edge';\n if (ua.includes('chrome/')) return 'Google Chrome';\n if (ua.includes('firefox/')) return 'Mozilla Firefox';\n if (ua.includes('safari/') && !ua.includes('chrome/')) return 'Safari';\n if (ua.includes('opera/') || ua.includes('opr/')) return 'Opera';\n if (ua.includes('trident/') || ua.includes('msie')) return 'Internet Explorer';\n\n return '未知浏览器';\n}\n\n// 解析浏览器版本\nexport function getBrowserVersion() {\n const ua = navigator.userAgent.toLowerCase();\n let version = '未知版本';\n\n // 不同浏览器的版本匹配规则\n const matches = {\n 'edg/': ua.match(/edg\\/([0-9.]+)/),\n 'chrome/': ua.match(/chrome\\/([0-9.]+)/),\n 'firefox/': ua.match(/firefox\\/([0-9.]+)/),\n 'safari/': ua.match(/version\\/([0-9.]+).*safari/),\n 'opr/': ua.match(/opr\\/([0-9.]+)/),\n msie: ua.match(/msie ([0-9.]+)/),\n 'trident/': ua.match(/trident\\/[0-9.]+; rv:([0-9.]+)/)\n };\n\n for (const [key, match] of Object.entries(matches)) {\n if (match && match[1]) {\n version = match[1];\n break;\n }\n }\n\n return version;\n}\n\nexport function unknownToString(target: unknown): string {\n if (variableTypeDetection.isString(target)) {\n return target as string;\n }\n if (variableTypeDetection.isUndefined(target)) {\n return 'undefined';\n }\n return JSON.stringify(target);\n}\n\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport function isError(wat: any): boolean {\n switch (nativeToString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nexport function isExistProperty(obj: Object, key: string | number | symbol): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","import { Logger } from './logger';\nimport { variableTypeDetection } from './tools';\n\nexport const isBrowserEnv = variableTypeDetection.isWindow(typeof window !== 'undefined' ? window : 0);\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal<T>() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal & T;\n}\n\nconst _global = getGlobal<Window>();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n\nexport function supportsHistory(): boolean {\n const chrome = (_global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n const hasHistoryApi = 'history' in _global && !!_global.history.pushState && !!_global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, DeviceInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue, getOS, getBrowserName, getBrowserVersion } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n getDeviceInfo(): DeviceInfo {\n const result: DeviceInfo = {\n deviceOs: getOS(),\n deviceName: getBrowserName(),\n deviceVersion: getBrowserVersion()\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { generateUuid, validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n enableTraceId = false;\n traceIdFieldName = 'Trace-Id';\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n beforeAjaxSend = null;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { enableTraceId, traceIdFieldName, throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp, beforeAjaxSend } = options;\n const optionArr = [\n [enableTraceId, 'enableTraceId', ToStringTypes.Boolean],\n [traceIdFieldName, 'traceIdFieldName', ToStringTypes.String],\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp],\n [beforeAjaxSend, 'beforeAjaxSend', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n setTraceId(httpUrl: string, callback: (headerFieldName: string, traceId: string) => void) {\n const { includeHttpUrlTraceIdRegExp, enableTraceId } = this;\n if (enableTraceId && includeHttpUrlTraceIdRegExp && includeHttpUrlTraceIdRegExp.test(httpUrl)) {\n const traceId = generateUuid();\n callback(this.traceIdFieldName, traceId);\n }\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb;\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var MONITOR=function(t){"use strict";var n,e,r,o,i,s,c,a,u=function(){function t(){this.events=new Map}return t.prototype.watch=function(t,n){var e=this.events.get(t);e?this.events.set(t,e.concat(n)):this.events.set(t,[n])},t.prototype.notify=function(t,n){var e=this.events.get(t);t&&e&&e.forEach(function(t){try{t(n)}catch(t){}})},t}(),l=function(){function t(t){this.options=t}return t.prototype.use=function(t){var n=this,e=new u;t.forEach(function(t){t.monitor.call(n,e.notify.bind(e));e.watch(t.name,function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];var o=t.transform.apply(n,e);t.consumer.call(n,o)})})},t.prototype.getOptions=function(){return this.options},t}(),f=function(){return f=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t},f.apply(this,arguments)};function h(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{a(r.next(t))}catch(t){i(t)}}function c(t){try{a(r.throw(t))}catch(t){i(t)}}function a(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,c)}a((r=r.apply(t,n||[])).next())})}function p(t,n){var e,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=c(0),s.throw=c(1),s.return=c(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function c(c){return function(a){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;s&&(s=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,a])}}}function d(t,n,e){if(e||2===arguments.length)for(var r,o=0,i=n.length;o<i;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return t.concat(r||Array.prototype.slice.call(n))}"function"==typeof SuppressedError&&SuppressedError,function(t){t.DOM="dom",t.XHR="xhr"}(n||(n={})),function(t){t.ROUTE="Route",t.CLICK="Click",t.CONSOLE="Console",t.XHR="Xhr",t.FETCH="Fetch",t.UNHANDLEDREJECTION="Unhandledrejection",t.RESOURCE="Resource",t.CODE_ERROR="Code Error",t.CUSTOMER="Customer"}(e||(e={})),function(t){t.String="String",t.Number="Number",t.Boolean="Boolean",t.RegExp="RegExp",t.Null="Null",t.Undefined="Undefined",t.Symbol="Symbol",t.Object="Object",t.Array="Array",t.process="process",t.Window="Window",t.Function="Function"}(r||(r={})),function(t){t.UNKNOWN="UNKNOWN",t.UNKNOWN_FUNCTION="UNKNOWN_FUNCTION",t.JAVASCRIPT="JAVASCRIPT",t.LOG="LOG",t.HTTP="HTTP",t.VUE="VUE",t.REACT="REACT",t.RESOURCE="RESOURCE",t.PROMISE="PROMISE",t.ROUTE="ROUTE"}(o||(o={})),function(t){t.XHR="xhr",t.FETCH="fetch"}(i||(i={})),function(t){t.Get="GET",t.Post="POST",t.Put="PUT",t.Delete="DELETE"}(s||(s={})),function(t){t[t.BAD_REQUEST=400]="BAD_REQUEST",t[t.UNAUTHORIZED=401]="UNAUTHORIZED",t[t.INTERNAL_EXCEPTION=500]="INTERNAL_EXCEPTION"}(c||(c={})),function(t){t.HTTP="http",t.USER="user",t.DEBUG="debug",t.EXCEPTION="exception",t.LIFECYCLE="lifecycle"}(a||(a={}));var b="undefined"!=typeof window?window:0;var y=function(){if(b)return window}(),E=(y.__MONITOR__=y.__MONITOR__||{},y.__MONITOR__);var m="MONITOR Logger",g=function(){function t(){var t=this;if(this.enabled=!1,this._console={},y.console=console||y.console,console||y.console){["log","debug","info","warn","error","assert"].forEach(function(n){n in y.console&&(t._console[n]=y.console[n])})}}return t.prototype.disable=function(){this.enabled=!1},t.prototype.bindOptions=function(t){this.enabled=!!t},t.prototype.enable=function(){this.enabled=!0},t.prototype.getEnableStatus=function(){return this.enabled},t.prototype.log=function(){for(var t,n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];this.enabled&&(t=this._console).log.apply(t,d(["".concat(m,"[Log]:")],n,!1))},t.prototype.warn=function(){for(var t,n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];this.enabled&&(t=this._console).warn.apply(t,d(["".concat(m,"[Warn]:")],n,!1))},t.prototype.error=function(){for(var t,n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];(t=this._console).error.apply(t,d(["".concat(m,"[Error]:")],n,!1))},t}(),O=E.logger||(E.logger=new g),v=Object.prototype.toString;function R(t){return function(n){return v.call(n)==="[object ".concat(t,"]")}}function T(t,n,e){return!!function(t,n){return v.call(t)==="[object ".concat(n,"]")}(t,e)||(void 0!==t&&O.error("".concat(n,"期望传入:").concat(e,"类型,当前是:").concat(v.call(t),"类型")),!1)}function N(t){var n=this;t.forEach(function(t){var e=t[0],r=t[1];return T(e,r,t[2])&&(n[r]=e)})}var U={isNumber:R("Number"),isString:R("String"),isBoolean:R("Boolean"),isNull:R("Null"),isUndefined:R("Undefined"),isSymbol:R("Symbol"),isFunction:R("Function"),isObject:R("Object"),isArray:R("Array"),isProcess:R("process"),isWindow:R("Window")};var S=function(){function t(){this.stack=[],this.isFlushing=!1,"Promise"in y&&(this.micro=Promise.resolve())}return t.prototype.addTask=function(t){var n=this;"function"==typeof t&&("Promise"in y?(this.stack.push(t),this.isFlushing||(this.isFlushing=!0,this.micro.then(function(){return n.flushStack()}))):t())},t.prototype.clear=function(){this.stack=[]},t.prototype.getStack=function(){return this.stack},t.prototype.flushStack=function(){var t=this.stack.slice(0);this.stack.length=0,this.isFlushing=!1;for(var n=0,e=t;n<e.length;n++){(0,e[n])()}},t}(),w=function(){function t(){this.dsn="",this.apiKey="",this.beforeDataReport=null,this.queue=new S}return t.prototype.bindOptions=function(t){var n=[[t.dsn,"dsn","String"],[t.apiKey,"apiKey","String"],[t.beforeDataReport,"beforeDataReport","Function"]];N.call(this,n)},t.prototype.getAuthInfo=function(){return{sdkVersion:"1.0.3",sdkName:"y-monitor",apiKey:this.apiKey}},t.prototype.send=function(t,n){return void 0===n&&(n=[]),h(this,void 0,void 0,function(){var e,r;return p(this,function(o){switch(o.label){case 0:return e=f(f({},this.getTransportData(t)),{breadcrumb:n}),"function"!=typeof this.beforeDataReport?[3,2]:[4,this.beforeDataReport(e)];case 1:if(!(e=o.sent()))return[2];o.label=2;case 2:return r=this.dsn,i=r,U.isString(i)&&""===i.trim()||null==i?(O.error("dsn is empty,please check"),[2]):[2,this.sendToServer(e,r)]}var i})})},t.prototype.isSelfDsn=function(t){return this.dsn&&(n=t,e=this.dsn,!!~n.indexOf(e));var n,e},t}(),k=function(){function t(){this.throttleDelayTime=0,this.includeHttpUrlTraceIdRegExp=/.*/}return t.prototype.isFilterHttpUrl=function(t){return this.filterXhrUrlRegExp&&this.filterXhrUrlRegExp.test(t)},t.prototype.bindOptions=function(t){var n=[[t.throttleDelayTime,"throttleDelayTime","Number"],[t.filterXhrUrlRegExp,"filterXhrUrlRegExp","RegExp"],[t.includeHttpUrlTraceIdRegExp,"includeHttpUrlTraceIdRegExp","RegExp"]];N.call(this,n)},t}(),P=function(){function t(t){void 0===t&&(t={}),this.maxBreadcrumbs=10,this.beforePushBreadcrumb=null,this.stack=[],this.bindOptions(t)}return t.prototype.push=function(t){var n=this;if("function"==typeof this.beforePushBreadcrumb){var e=null,r=this.beforePushBreadcrumb;return function(){e=r.call(n,n,t)}(),e?this.immediatePush(e):this.stack}return this.immediatePush(t)},t.prototype.immediatePush=function(t){return t.time||(t.time=Date.now()),this.stack.length>=this.maxBreadcrumbs&&this.shift(),this.stack.push(t),this.stack.sort(function(t,n){return t.time-n.time}),O.log(this.stack),this.stack},t.prototype.shift=function(){return void 0!==this.stack.shift()},t.prototype.clear=function(){this.stack=[]},t.prototype.getStack=function(){return this.stack},t.prototype.bindOptions=function(t){void 0===t&&(t={});var n=t.maxBreadcrumbs,e=t.beforePushBreadcrumb;T(n,"maxBreadcrumbs","Number")&&(this.maxBreadcrumbs=n),T(e,"beforePushBreadcrumb","Function")&&(this.beforePushBreadcrumb=e)},t}();return t.BaseClient=l,t.BaseOptions=k,t.BaseTransport=w,t.Breadcrumb=P,t.Subscribe=u,t}({});
|
|
1
|
+
var MONITOR=function(t){"use strict";var e,n,r,o,i,c,a,s,u=function(){function t(){this.events=new Map}return t.prototype.watch=function(t,e){var n=this.events.get(t);n?n.push(e):this.events.set(t,[e])},t.prototype.notify=function(t,e){var n=this.events.get(t);t&&n&&n.forEach(function(t){try{t(e)}catch(t){console.error("err",t)}})},t}(),l=function(){function t(t){this.options=t}return t.prototype.use=function(t){var e=this;if(!this.options.disabled){var n=new u;t.forEach(function(t){if(e.isPluginEnable(t.name)){t.monitor.call(e,n.notify.bind(n));n.watch(t.name,function(){for(var n,r,o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];var c=null===(n=t.transform)||void 0===n?void 0:n.apply(e,o);null===(r=t.consumer)||void 0===r||r.call(e,c)})}})}},t.prototype.getOptions=function(){return this.options},t}(),f=function(){return f=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},f.apply(this,arguments)};function h(t,e,n,r){return new(n||(n=Promise))(function(o,i){function c(t){try{s(r.next(t))}catch(t){i(t)}}function a(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(c,a)}s((r=r.apply(t,e||[])).next())})}function p(t,e){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},c=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return c.next=a(0),c.throw=a(1),c.return=a(2),"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function a(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;c&&(c=0,a[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}function d(t,e,n){if(n||2===arguments.length)for(var r,o=0,i=e.length;o<i;o++)!r&&o in e||(r||(r=Array.prototype.slice.call(e,0,o)),r[o]=e[o]);return t.concat(r||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError,function(t){t.DOM="dom",t.XHR="xhr",t.FETCH="fetch",t.ERROR="error",t.HISTORY="history",t.HASHCHANGE="hashchange",t.UNHANDLEDREJECTION="unhandledrejection",t.CONSOLE="console"}(e||(e={})),function(t){t.ROUTE="Route",t.CLICK="Click",t.CONSOLE="Console",t.XHR="Xhr",t.FETCH="Fetch",t.UNHANDLEDREJECTION="Unhandledrejection",t.RESOURCE="Resource",t.CODE_ERROR="Code Error",t.CUSTOMER="Customer"}(n||(n={})),function(t){t.String="String",t.Number="Number",t.Boolean="Boolean",t.RegExp="RegExp",t.Null="Null",t.Undefined="Undefined",t.Symbol="Symbol",t.Object="Object",t.Array="Array",t.process="process",t.Window="Window",t.Function="Function"}(r||(r={})),function(t){t.UNKNOWN="UNKNOWN",t.UNKNOWN_FUNCTION="UNKNOWN_FUNCTION",t.JAVASCRIPT="JAVASCRIPT",t.LOG="LOG",t.HTTP="HTTP",t.VUE="VUE",t.REACT="REACT",t.RESOURCE="RESOURCE",t.PROMISE="PROMISE",t.ROUTE="ROUTE"}(o||(o={})),function(t){t.XHR="xhr",t.FETCH="fetch"}(i||(i={})),function(t){t.Get="GET",t.Post="POST",t.Put="PUT",t.Delete="DELETE"}(c||(c={})),function(t){t[t.BAD_REQUEST=400]="BAD_REQUEST",t[t.UNAUTHORIZED=401]="UNAUTHORIZED",t[t.INTERNAL_EXCEPTION=500]="INTERNAL_EXCEPTION"}(a||(a={})),function(t){t.HTTP="http",t.USER="user",t.DEBUG="debug",t.EXCEPTION="exception",t.LIFECYCLE="lifecycle"}(s||(s={}));var b="Y-MONITOR Logger",y=function(){function t(){var t=this;if(this.enabled=!1,this._console={},w.console=console||w.console,console||w.console){["log","debug","info","warn","error","assert"].forEach(function(e){e in w.console&&(t._console[e]=w.console[e])})}}return t.prototype.disable=function(){this.enabled=!1},t.prototype.bindOptions=function(t){this.enabled=!!t},t.prototype.enable=function(){this.enabled=!0},t.prototype.getEnableStatus=function(){return this.enabled},t.prototype.log=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];this.enabled&&(t=this._console).log.apply(t,d(["".concat(b,"[Log]:")],e,!1))},t.prototype.warn=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];this.enabled&&(t=this._console).warn.apply(t,d(["".concat(b,"[Warn]:")],e,!1))},t.prototype.error=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];(t=this._console).error.apply(t,d(["".concat(b,"[Error]:")],e,!1))},t}(),m=null;function g(){return m||(m=new y,C&&(C.logger=m)),m}var E=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return(t=g()).log.apply(t,e)},v=function(){for(var t,e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return(t=g()).error.apply(t,e)},O=Object.prototype.toString;function x(t){return function(e){return O.call(e)==="[object ".concat(t,"]")}}function R(t,e,n){return!!function(t,e){return O.call(t)==="[object ".concat(e,"]")}(t,n)||(void 0!==t&&v("".concat(e,"期望传入:").concat(n,"类型,当前是:").concat(O.call(t),"类型")),!1)}function T(t){var e=this;t.forEach(function(t){var n=t[0],r=t[1];return R(n,r,t[2])&&(e[r]=n)})}var N={isNumber:x(r.Number),isString:x(r.String),isBoolean:x(r.Boolean),isNull:x(r.Null),isUndefined:x(r.Undefined),isSymbol:x(r.Symbol),isFunction:x(r.Function),isObject:x(r.Object),isArray:x(r.Array),isProcess:x(r.process),isWindow:x(r.Window)};function S(){var t=navigator.userAgent.toLowerCase();return t.includes("edg/")?"Microsoft Edge":t.includes("chrome/")?"Google Chrome":t.includes("firefox/")?"Mozilla Firefox":t.includes("safari/")&&!t.includes("chrome/")?"Safari":t.includes("opera/")||t.includes("opr/")?"Opera":t.includes("trident/")||t.includes("msie")?"Internet Explorer":"未知浏览器"}function I(){for(var t=navigator.userAgent.toLowerCase(),e="未知版本",n={"edg/":t.match(/edg\/([0-9.]+)/),"chrome/":t.match(/chrome\/([0-9.]+)/),"firefox/":t.match(/firefox\/([0-9.]+)/),"safari/":t.match(/version\/([0-9.]+).*safari/),"opr/":t.match(/opr\/([0-9.]+)/),msie:t.match(/msie ([0-9.]+)/),"trident/":t.match(/trident\/[0-9.]+; rv:([0-9.]+)/)},r=0,o=Object.entries(n);r<o.length;r++){var i=o[r];i[0];var c=i[1];if(c&&c[1]){e=c[1];break}}return e}var U=N.isWindow("undefined"!=typeof window?window:0);var w=function(){if(U)return window}(),C=(w.__MONITOR__=w.__MONITOR__||{},w.__MONITOR__);var k=function(){function t(){this.stack=[],this.isFlushing=!1,"Promise"in w&&(this.micro=Promise.resolve())}return t.prototype.addTask=function(t){var e=this;"function"==typeof t&&("Promise"in w?(this.stack.push(t),this.isFlushing||(this.isFlushing=!0,this.micro.then(function(){return e.flushStack()}))):t())},t.prototype.clear=function(){this.stack=[]},t.prototype.getStack=function(){return this.stack},t.prototype.flushStack=function(){var t=this.stack.slice(0);this.stack.length=0,this.isFlushing=!1;for(var e=0,n=t;e<n.length;e++){(0,n[e])()}},t}(),A=function(){function t(){this.dsn="",this.apiKey="",this.beforeDataReport=null,this.queue=new k}return t.prototype.bindOptions=function(t){var e=t.dsn,n=t.apiKey,o=t.beforeDataReport,i=[[e,"dsn",r.String],[n,"apiKey",r.String],[o,"beforeDataReport",r.Function]];T.call(this,i)},t.prototype.getAuthInfo=function(){return{sdkVersion:"",sdkName:"y-monitor",apiKey:this.apiKey}},t.prototype.getDeviceInfo=function(){var t;return{deviceOs:(t=navigator.userAgent,-1!==t.indexOf("Win")?"Windows":-1!==t.indexOf("Mac")?"MacOS":-1!==t.indexOf("X11")?"UNIX":-1!==t.indexOf("Linux")?"Linux":-1!==t.indexOf("Android")?"Android":-1!==t.indexOf("iOS")?"iOS":"Unknown OS"),deviceName:S(),deviceVersion:I()}},t.prototype.send=function(t,e){return void 0===e&&(e=[]),h(this,void 0,void 0,function(){var n,r;return p(this,function(o){switch(o.label){case 0:return n=f(f({},this.getTransportData(t)),{breadcrumb:e}),"function"!=typeof this.beforeDataReport?[3,2]:[4,this.beforeDataReport(n)];case 1:if(!(n=o.sent()))return[2];o.label=2;case 2:return r=this.dsn,i=r,N.isString(i)&&""===i.trim()||null==i?(v("dsn is empty,please check"),[2]):[2,this.sendToServer(n,r)]}var i})})},t.prototype.isSelfDsn=function(t){return this.dsn&&(e=t,n=this.dsn,!!~e.indexOf(n));var e,n},t}(),P=function(){function t(){this.enableTraceId=!1,this.traceIdFieldName="Trace-Id",this.throttleDelayTime=0,this.includeHttpUrlTraceIdRegExp=/.*/,this.beforeAjaxSend=null}return t.prototype.isFilterHttpUrl=function(t){return this.filterXhrUrlRegExp&&this.filterXhrUrlRegExp.test(t)},t.prototype.bindOptions=function(t){var e=t.enableTraceId,n=t.traceIdFieldName,o=t.throttleDelayTime,i=t.filterXhrUrlRegExp,c=t.includeHttpUrlTraceIdRegExp,a=t.beforeAjaxSend,s=[[e,"enableTraceId",r.Boolean],[n,"traceIdFieldName",r.String],[o,"throttleDelayTime",r.Number],[i,"filterXhrUrlRegExp",r.RegExp],[c,"includeHttpUrlTraceIdRegExp",r.RegExp],[a,"beforeAjaxSend",r.Function]];T.call(this,s)},t.prototype.setTraceId=function(t,e){var n,r=this.includeHttpUrlTraceIdRegExp;if(this.enableTraceId&&r&&r.test(t)){var o=(n=(new Date).getTime(),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=(n+16*Math.random())%16|0;return n=Math.floor(n/16),("x"==t?e:3&e|8).toString(16)}));e(this.traceIdFieldName,o)}},t}(),D=function(){function t(t){void 0===t&&(t={}),this.maxBreadcrumbs=10,this.beforePushBreadcrumb=null,this.stack=[],this.bindOptions(t)}return t.prototype.push=function(t){var e=this;if("function"==typeof this.beforePushBreadcrumb){var n=null,r=this.beforePushBreadcrumb;return function(){n=r.call(e,e,t)}(),n?this.immediatePush(n):this.stack}return this.immediatePush(t)},t.prototype.immediatePush=function(t){return t.time||(t.time=Date.now()),this.stack.length>=this.maxBreadcrumbs&&this.shift(),this.stack.push(t),this.stack.sort(function(t,e){return t.time-e.time}),E(this.stack),this.stack},t.prototype.shift=function(){return void 0!==this.stack.shift()},t.prototype.clear=function(){this.stack=[]},t.prototype.getStack=function(){return this.stack},t.prototype.bindOptions=function(t){void 0===t&&(t={});var e=t.maxBreadcrumbs,n=t.beforePushBreadcrumb;R(e,"maxBreadcrumbs",r.Number)&&(this.maxBreadcrumbs=e),R(n,"beforePushBreadcrumb",r.Function)&&(this.beforePushBreadcrumb=n)},t}();return t.BaseClient=l,t.BaseOptions=P,t.BaseTransport=A,t.Breadcrumb=D,t.Subscribe=u,t}({});
|
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@y-monitor/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "dist/core.js",
|
|
6
|
+
"module": "dist/core.esm.js",
|
|
7
|
+
"types": "dist/core.d.ts",
|
|
6
8
|
"scripts": {
|
|
7
9
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
10
|
},
|