@y-monitor/core 1.0.7 → 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 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 Callback = (data: any) => any;
69
+ declare type MonitorCallback = (data: any) => any;
62
70
 
63
71
  export declare class Subscribe<T> {
64
- events: Map<T, Callback[]>;
65
- constructor();
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
- this.events.set(eventName, fns.concat(callback));
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 (error) { }
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 = version;
221
+ var SDK_VERSION = '';
211
222
 
212
- var isBrowserEnv = typeof window !== 'undefined' ? window : 0;
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 logger = _support.logger || (_support.logger = new Logger());
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("Number"),
310
- isString: isType("String"),
311
- isBoolean: isType("Boolean"),
312
- isNull: isType("Null"),
313
- isUndefined: isType("Undefined"),
314
- isSymbol: isType("Symbol"),
315
- isFunction: isType("Function"),
316
- isObject: isType("Object"),
317
- isArray: isType("Array"),
318
- isProcess: isType("process"),
319
- isWindow: isType("Window")
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', "String"],
385
- [apiKey, 'apiKey', "String"],
386
- [beforeDataReport, 'beforeDataReport', "Function"]
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
- [throttleDelayTime, 'throttleDelayTime', "Number"],
442
- [filterXhrUrlRegExp, 'filterXhrUrlRegExp', "RegExp"],
443
- [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', "RegExp"]
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', "Number") && (this.maxBreadcrumbs = maxBreadcrumbs);
496
- toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', "Function") &&
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;
@@ -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":"AAEA,IAAA,SAAA,IAAA,YAAA;AAEE,IAAA,SAAA,SAAA,GAAA;AADA,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;IACxB,CAAC;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,SAAY,EAAE,QAAkB,EAAA;QACpC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,OAAO;AACR,QAAA,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,SAAY,EAAE,IAAS,EAAA;QAC5B,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;YAAE,OAAO;AAC/B,QAAA,GAAG,CAAC,OAAO,CAAC,UAAC,EAAE,EAAA;YACb,IAAI;gBACF,EAAE,CAAC,IAAI,CAAC,CAAC;AACV,YAAA,CAAA;YAAC,OAAO,KAAK,EAAE,EAAA,CAAE;AACpB,QAAA,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;IACH,OAAA,SAAC,CAAA;AAAD,CAAC,EArBD;;ACGA,IAAA,UAAA,IAAA,YAAA;AAOE,IAAA,SAAA,UAAA,CAAY,OAAU,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAGD,UAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAA4B,EAAA;QAAhC,IAAA,KAAA,GAAA,IAAA,CAUC;AATC,QAAA,IAAM,SAAS,GAAG,IAAI,SAAS,EAAK,CAAC;AACrC,QAAA,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;AACrB,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAM,gBAAgB,GAAG,YAAA;gBAAC,IAAA,IAAA,GAAA,EAAA,CAAc;qBAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;oBAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AACtC,gBAAA,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,GAAG,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACjD,QAAA,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC,CAAA;IAOH,OAAA,UAAC,CAAA;AAAD,CAAC,EAjCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA,IAAY,iBAGX,CAAA;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAG5B;AAED,IAAY,sBAUX,CAAA;AAVD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,sBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAVW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ACClC,IAAY,aAaX,CAAA;AAbD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAbW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA,CAaxB;AAKD,IAAY,UAWX,CAAA;AAXD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAXW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA,CAWrB;AAED,IAAY,SAGX,CAAA;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA,CAGpB;AAED,IAAY,WAKX,CAAA;AALD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EALW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA,CAKtB;AAED,IAAY,SAIX,CAAA;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB,CAAA;AAClB,IAAA,SAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB,CAAA;AAC1B,CAAC,EAJW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA,CAIpB;AAeD,IAAY,mBAMX,CAAA;AAND,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;;;ACpExB,IAAM,QAAQ,GAAG,WAAW,CAAC;AAG7B,IAAM,WAAW,GAAG,OAAO;;ACD3B,IAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;SAWvD,SAAS,GAAA;AACvB,IAAA,IAAI,YAAY;AAAE,QAAA,OAAO,MAAkC,CAAC;AAC9D,CAAC;AAED,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;AAC5B,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AAE3C,SAAS,uBAAuB,GAAA;IAC9B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAK,EAAqB,CAAC;IACpE,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B;;ACtBA,IAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,IAAA,MAAA,IAAA,YAAA;AAGE,IAAA,SAAA,MAAA,GAAA;QAAA,IAAA,KAAA,GAAA,IAAA,CASC;QAXO,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;QAChB,IAAA,CAAA,QAAQ,GAAY,EAAa,CAAC;QAExC,OAAO,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpE,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAA;AACpB,gBAAA,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;oBAAE,OAAO;AACxC,gBAAA,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD,YAAA,CAAC,CAAC,CAAC;AACJ,QAAA,CAAA;IACH,CAAC;AACD,IAAA,MAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC,CAAA;IAED,MAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IACtC,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,GAAG,GAAH,YAAA;;QAAI,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;AACR,QAAA,CAAA;AACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,GAAG,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,QAAA,CAAQ,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IAChD,CAAC,CAAA;AACD,IAAA,MAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;QAAK,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;AACR,QAAA,CAAA;AACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,IAAI,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,SAAA,CAAS,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IAClD,CAAC,CAAA;AAQD,IAAA,MAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;;QAAM,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AAClB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,UAAA,CAAU,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IACpD,CAAC,CAAA;IACH,OAAA,MAAC,CAAA;AAAD,CAAC,EAnDD,CAAA,CAmDC;AAED,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;;ACzB3D,IAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAClD,SAAU,MAAM,CAAC,IAAY,EAAA;AACjC,IAAA,OAAO,UAAU,KAAU,EAAA;QACzB,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,UAAA,CAAA,MAAA,CAAW,IAAI,EAAA,GAAA,CAAG,CAAC;AAC3D,IAAA,CAAC,CAAC;AACJ,CAAC;AAEK,SAAU,WAAW,CAAC,MAAW,EAAE,IAAmB,EAAA;IAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,UAAA,CAAA,MAAA,CAAW,IAAI,EAAA,GAAA,CAAG,CAAC;AAC5D,CAAC;SAEe,sBAAsB,CAAC,MAAW,EAAE,UAAkB,EAAE,UAAyB,EAAA;AAC/F,IAAA,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IACjD,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,EAAA,CAAA,MAAA,CAAG,UAAU,sCAAQ,UAAU,EAAA,uCAAA,CAAA,CAAA,MAAA,CAAU,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA,cAAA,CAAI,CAAC,CAAC;AACxH,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEK,SAAU,qBAAqB,CAAY,SAAyC,EAAA;IAA1F,IAAA,KAAA,GAAA,IAAA,CAEC;AADC,IAAA,SAAS,CAAC,OAAO,CAAC,UAAC,EAAgC,EAAA;AAA/B,QAAA,IAAA,MAAM,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAAM,QAAA,OAAA,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,KAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAA;AAArF,IAAA,CAAqF,CAAC,CAAC;AACjJ,CAAC;AAMM,IAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,SAAS,EAAE,MAAM,CAAA,SAAA,CAAuB;IACxC,MAAM,EAAE,MAAM,CAAA,MAAA,CAAoB;IAClC,WAAW,EAAE,MAAM,CAAA,WAAA,CAAyB;IAC5C,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,UAAU,EAAE,MAAM,CAAA,UAAA,CAAwB;IAC1C,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,OAAO,EAAE,MAAM,CAAA,OAAA,CAAqB;IACpC,SAAS,EAAE,MAAM,CAAA,SAAA,CAAuB;IACxC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;CACvC,CAAC;AASI,SAAU,OAAO,CAAC,GAAQ,EAAA;IAC9B,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AACzG,CAAC;SAgDe,YAAY,GAAA;AAC1B,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AAUK,SAAU,SAAS,CAAC,MAAc,EAAE,MAAc,EAAA;IACtD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AA4BK,SAAU,kBAAkB,CAAC,QAAkB,EAAA;AAEnD,IAAA,QAAQ,EAAE,CAAC;AAEb;;AC5KA,IAAA,KAAA,IAAA,YAAA;AAIE,IAAA,SAAA,KAAA,GAAA;QAFQ,IAAA,CAAA,KAAK,GAAU,EAAE,CAAC;QAClB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IACD,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,EAAc,EAAA;QAAtB,IAAA,KAAA,GAAA,IAAA,CAWC;QAVC,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,OAAO;AACrC,QAAA,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AAC3B,YAAA,EAAE,EAAE,CAAC;YACL,OAAO;AACR,QAAA,CAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAA,EAAM,OAAA,KAAI,CAAC,UAAU,EAAE,CAAA,CAAjB,CAAiB,CAAC,CAAC;AAC1C,QAAA,CAAA;IACH,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;AACE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,KAAiB,UAAI,EAAJ,MAAA,GAAA,IAAI,EAAJ,EAAA,GAAA,MAAA,CAAA,MAAI,EAAJ,IAAI,EAAE;AAAlB,YAAA,IAAM,EAAE,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AACX,YAAA,EAAE,EAAE,CAAC;AACN,QAAA,CAAA;IACH,CAAC,CAAA;IAEH,OAAA,KAAC,CAAA;AAAD,CAAC,EAnCD,CAAA;;ACGA,IAAA,aAAA,IAAA,YAAA;AAME,IAAA,SAAA,aAAA,GAAA;QALA,IAAA,CAAA,GAAG,GAAG,EAAE,CAAC;QACT,IAAA,CAAA,MAAM,GAAG,EAAE,CAAC;QACZ,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC;AAItB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC;IAKD,aAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAmB,EAAA;AACrB,QAAA,IAAA,GAAG,GAA+B,OAAO,CAAA,GAAtC,EAAE,MAAM,GAAuB,OAAO,CAAA,MAA9B,EAAE,gBAAgB,GAAK,OAAO,iBAAZ,CAAa;AAClD,QAAA,IAAM,SAAS,GAAG;YAChB,CAAC,GAAG,EAAE,KAAK,EAAA,QAAA,CAAuB;YAClC,CAAC,MAAM,EAAE,QAAQ,EAAA,QAAA,CAAuB;YACxC,CAAC,gBAAgB,EAAE,kBAAkB,EAAA,UAAA,CAAyB;SAC/D,CAAC;AACF,QAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAA;AAQD,IAAA,aAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;AACE,QAAA,IAAM,MAAM,GAAa;AACvB,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;IAChB,CAAC,CAAA;AAEK,IAAA,aAAA,CAAA,SAAA,CAAA,IAAI,GAAV,UAAW,IAAS,EAAE,UAAyC,EAAA;AAAzC,QAAA,IAAA,UAAA,KAAA,MAAA,EAAA,EAAA,UAAA,GAAA,EAAyC,CAAA,CAAA,CAAA;;;;;;wBACzD,aAAa,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA,EAAA,EAC9B,UAAU,EAAA,UAAA,EAAA,CACX,CAAC;8BACE,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAA,EAA3C,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAA2C;AAC7B,wBAAA,OAAA,CAAA,CAAA,EAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA,CAAA;;wBAA1D,aAAa,GAAG,SAA0C,CAAC;AAC3D,wBAAA,IAAI,CAAC,aAAa;4BAAE,OAAA,CAAA,CAAA,CAAA,CAAO;;;AAEzB,wBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,wBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAChB,4BAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;4BAC1C,OAAA,CAAA,CAAA,CAAA,CAAO;AACR,wBAAA,CAAA;wBACD,OAAA,CAAA,CAAA,EAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA,CAAC;;;;AAC9C,IAAA,CAAA,CAAA;IASD,aAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,SAAiB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAA;IAuBH,OAAA,aAAC,CAAA;AAAD,CAAC,EAvFD;;ACIA,IAAA,WAAA,IAAA,YAAA;AAKE,IAAA,SAAA,WAAA,GAAA;QAJA,IAAA,CAAA,iBAAiB,GAAG,CAAC,CAAC;QAEtB,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC;IAEpB,CAAC;IAEhB,WAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAA;IAED,WAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAU,EAAA;AACZ,QAAA,IAAA,iBAAiB,GAAsD,OAAO,CAAA,iBAA7D,EAAE,kBAAkB,GAAkC,OAAO,CAAA,kBAAzC,EAAE,2BAA2B,GAAK,OAAO,4BAAZ,CAAa;AACvF,QAAA,IAAM,SAAS,GAAG;YAChB,CAAC,iBAAiB,EAAE,mBAAmB,EAAA,QAAA,CAAuB;YAC9D,CAAC,kBAAkB,EAAE,oBAAoB,EAAA,QAAA,CAAuB;YAChE,CAAC,2BAA2B,EAAE,6BAA6B,EAAA,QAAA,CAAuB;SACnF,CAAC;AACF,QAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAA;IACH,OAAA,WAAC,CAAA;AAAD,CAAC,EApBD;;ACGA,IAAA,UAAA,IAAA,YAAA;AAIE,IAAA,SAAA,UAAA,CAAY,OAAwB,EAAA;AAAxB,QAAA,IAAA,OAAA,KAAA,MAAA,EAAA,EAAA,OAAA,GAAA,EAAwB,CAAA,CAAA,CAAA;QAH5B,IAAA,CAAA,cAAc,GAAG,EAAE,CAAC;QACpB,IAAA,CAAA,oBAAoB,GAAY,IAAI,CAAC;QACrC,IAAA,CAAA,KAAK,GAA6B,EAAE,CAAC;AAE3C,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAOD,UAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,IAA4B,EAAA;QAAjC,IAAA,KAAA,GAAA,IAAA,CAWC;AAVC,QAAA,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU,EAAE;YACnD,IAAI,QAAM,GAA2B,IAAI,CAAC;AAC1C,YAAA,IAAM,sBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,YAAA,kBAAkB,CAAC,YAAA;gBACjB,QAAM,GAAG,sBAAoB,CAAC,IAAI,CAAC,KAAI,EAAE,KAAI,EAAE,IAAI,CAAC,CAAC;AACvD,YAAA,CAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAM;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAM,CAAC,CAAC;AACnC,QAAA,CAAA;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAA;IAEO,UAAA,CAAA,SAAA,CAAA,aAAa,GAArB,UAAsB,IAA4B,EAAA;QAChD,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,QAAA,CAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA,CAAf,CAAe,CAAC,CAAC;AAC3C,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;AAEO,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAb,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,SAAS,CAAC;IAC1C,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;AACE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;IAED,UAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAwB,EAAA;AAAxB,QAAA,IAAA,OAAA,KAAA,MAAA,EAAA,EAAA,OAAA,GAAA,EAAwB,CAAA,CAAA,CAAA;AAClC,QAAA,IAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC9C,QAAA,IAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAA;AACzD,QAAA,sBAAsB,CAAC,cAAc,EAAE,gBAAgB,EAAA,QAAA,CAAuB,KAAK,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;AACzH,QAAA,sBAAsB,CAAC,oBAAoB,EAAE,sBAAsB,EAAA,UAAA,CAAyB;AAC1F,aAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;IACvD,CAAC,CAAA;IACH,OAAA,UAAC,CAAA;AAAD,CAAC,EAzDD;;;;"}
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
- this.events.set(eventName, fns.concat(callback));
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 (error) { }
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 = version;
223
+ var SDK_VERSION = '';
213
224
 
214
- var isBrowserEnv = typeof window !== 'undefined' ? window : 0;
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 logger = _support.logger || (_support.logger = new Logger());
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("Number"),
312
- isString: isType("String"),
313
- isBoolean: isType("Boolean"),
314
- isNull: isType("Null"),
315
- isUndefined: isType("Undefined"),
316
- isSymbol: isType("Symbol"),
317
- isFunction: isType("Function"),
318
- isObject: isType("Object"),
319
- isArray: isType("Array"),
320
- isProcess: isType("process"),
321
- isWindow: isType("Window")
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', "String"],
387
- [apiKey, 'apiKey', "String"],
388
- [beforeDataReport, 'beforeDataReport', "Function"]
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
- [throttleDelayTime, 'throttleDelayTime', "Number"],
444
- [filterXhrUrlRegExp, 'filterXhrUrlRegExp', "RegExp"],
445
- [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', "RegExp"]
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', "Number") && (this.maxBreadcrumbs = maxBreadcrumbs);
498
- toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', "Function") &&
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":";;AAEA,IAAA,SAAA,IAAA,YAAA;AAEE,IAAA,SAAA,SAAA,GAAA;AADA,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;IACxB,CAAC;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,SAAY,EAAE,QAAkB,EAAA;QACpC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,OAAO;AACR,QAAA,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC,CAAA;AAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,SAAY,EAAE,IAAS,EAAA;QAC5B,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;YAAE,OAAO;AAC/B,QAAA,GAAG,CAAC,OAAO,CAAC,UAAC,EAAE,EAAA;YACb,IAAI;gBACF,EAAE,CAAC,IAAI,CAAC,CAAC;AACV,YAAA,CAAA;YAAC,OAAO,KAAK,EAAE,EAAA,CAAE;AACpB,QAAA,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;IACH,OAAA,SAAC,CAAA;AAAD,CAAC,EArBD;;ACGA,IAAA,UAAA,IAAA,YAAA;AAOE,IAAA,SAAA,UAAA,CAAY,OAAU,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAGD,UAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAA4B,EAAA;QAAhC,IAAA,KAAA,GAAA,IAAA,CAUC;AATC,QAAA,IAAM,SAAS,GAAG,IAAI,SAAS,EAAK,CAAC;AACrC,QAAA,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAA;AACrB,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAM,gBAAgB,GAAG,YAAA;gBAAC,IAAA,IAAA,GAAA,EAAA,CAAc;qBAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;oBAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AACtC,gBAAA,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,GAAG,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACjD,QAAA,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC,CAAA;IAOH,OAAA,UAAC,CAAA;AAAD,CAAC,EAjCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA,IAAY,iBAGX,CAAA;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAG5B;AAED,IAAY,sBAUX,CAAA;AAVD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,sBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,sBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAVW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ACClC,IAAY,aAaX,CAAA;AAbD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAbW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA,CAaxB;AAKD,IAAY,UAWX,CAAA;AAXD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAXW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA,CAWrB;AAED,IAAY,SAGX,CAAA;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA,CAGpB;AAED,IAAY,WAKX,CAAA;AALD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EALW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA,CAKtB;AAED,IAAY,SAIX,CAAA;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB,CAAA;AAClB,IAAA,SAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB,CAAA;AAC1B,CAAC,EAJW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA,CAIpB;AAeD,IAAY,mBAMX,CAAA;AAND,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;;;ACpExB,IAAM,QAAQ,GAAG,WAAW,CAAC;AAG7B,IAAM,WAAW,GAAG,OAAO;;ACD3B,IAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;SAWvD,SAAS,GAAA;AACvB,IAAA,IAAI,YAAY;AAAE,QAAA,OAAO,MAAkC,CAAC;AAC9D,CAAC;AAED,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;AAC5B,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AAE3C,SAAS,uBAAuB,GAAA;IAC9B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAK,EAAqB,CAAC;IACpE,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B;;ACtBA,IAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,IAAA,MAAA,IAAA,YAAA;AAGE,IAAA,SAAA,MAAA,GAAA;QAAA,IAAA,KAAA,GAAA,IAAA,CASC;QAXO,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;QAChB,IAAA,CAAA,QAAQ,GAAY,EAAa,CAAC;QAExC,OAAO,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpE,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAA;AACpB,gBAAA,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;oBAAE,OAAO;AACxC,gBAAA,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD,YAAA,CAAC,CAAC,CAAC;AACJ,QAAA,CAAA;IACH,CAAC;AACD,IAAA,MAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC,CAAA;IAED,MAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IACtC,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC,CAAA;AAED,IAAA,MAAA,CAAA,SAAA,CAAA,GAAG,GAAH,YAAA;;QAAI,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;AACR,QAAA,CAAA;AACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,GAAG,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,QAAA,CAAQ,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IAChD,CAAC,CAAA;AACD,IAAA,MAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;QAAK,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;AACR,QAAA,CAAA;AACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,IAAI,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,SAAA,CAAS,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IAClD,CAAC,CAAA;AAQD,IAAA,MAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;;QAAM,IAAA,IAAA,GAAA,EAAA,CAAc;aAAd,IAAA,EAAA,GAAA,CAAc,EAAd,EAAA,GAAA,SAAA,CAAA,MAAc,EAAd,EAAA,EAAc,EAAA;YAAd,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAc;;AAClB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,UAAA,CAAU,CAAA,EAAK,IAAI,EAAA,KAAA,CAAA,CAAA,CAAE;IACpD,CAAC,CAAA;IACH,OAAA,MAAC,CAAA;AAAD,CAAC,EAnDD,CAAA,CAmDC;AAED,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;;ACzB3D,IAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAClD,SAAU,MAAM,CAAC,IAAY,EAAA;AACjC,IAAA,OAAO,UAAU,KAAU,EAAA;QACzB,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,UAAA,CAAA,MAAA,CAAW,IAAI,EAAA,GAAA,CAAG,CAAC;AAC3D,IAAA,CAAC,CAAC;AACJ,CAAC;AAEK,SAAU,WAAW,CAAC,MAAW,EAAE,IAAmB,EAAA;IAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,UAAA,CAAA,MAAA,CAAW,IAAI,EAAA,GAAA,CAAG,CAAC;AAC5D,CAAC;SAEe,sBAAsB,CAAC,MAAW,EAAE,UAAkB,EAAE,UAAyB,EAAA;AAC/F,IAAA,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IACjD,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,EAAA,CAAA,MAAA,CAAG,UAAU,sCAAQ,UAAU,EAAA,uCAAA,CAAA,CAAA,MAAA,CAAU,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA,cAAA,CAAI,CAAC,CAAC;AACxH,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEK,SAAU,qBAAqB,CAAY,SAAyC,EAAA;IAA1F,IAAA,KAAA,GAAA,IAAA,CAEC;AADC,IAAA,SAAS,CAAC,OAAO,CAAC,UAAC,EAAgC,EAAA;AAA/B,QAAA,IAAA,MAAM,QAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAAM,QAAA,OAAA,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,KAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAA;AAArF,IAAA,CAAqF,CAAC,CAAC;AACjJ,CAAC;AAMM,IAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,SAAS,EAAE,MAAM,CAAA,SAAA,CAAuB;IACxC,MAAM,EAAE,MAAM,CAAA,MAAA,CAAoB;IAClC,WAAW,EAAE,MAAM,CAAA,WAAA,CAAyB;IAC5C,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,UAAU,EAAE,MAAM,CAAA,UAAA,CAAwB;IAC1C,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;IACtC,OAAO,EAAE,MAAM,CAAA,OAAA,CAAqB;IACpC,SAAS,EAAE,MAAM,CAAA,SAAA,CAAuB;IACxC,QAAQ,EAAE,MAAM,CAAA,QAAA,CAAsB;CACvC,CAAC;AASI,SAAU,OAAO,CAAC,GAAQ,EAAA;IAC9B,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AACzG,CAAC;SAgDe,YAAY,GAAA;AAC1B,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AAUK,SAAU,SAAS,CAAC,MAAc,EAAE,MAAc,EAAA;IACtD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AA4BK,SAAU,kBAAkB,CAAC,QAAkB,EAAA;AAEnD,IAAA,QAAQ,EAAE,CAAC;AAEb;;AC5KA,IAAA,KAAA,IAAA,YAAA;AAIE,IAAA,SAAA,KAAA,GAAA;QAFQ,IAAA,CAAA,KAAK,GAAU,EAAE,CAAC;QAClB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IACD,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,EAAc,EAAA;QAAtB,IAAA,KAAA,GAAA,IAAA,CAWC;QAVC,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,OAAO;AACrC,QAAA,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AAC3B,YAAA,EAAE,EAAE,CAAC;YACL,OAAO;AACR,QAAA,CAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAA,EAAM,OAAA,KAAI,CAAC,UAAU,EAAE,CAAA,CAAjB,CAAiB,CAAC,CAAC;AAC1C,QAAA,CAAA;IACH,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;AACE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;AACD,IAAA,KAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,KAAiB,UAAI,EAAJ,MAAA,GAAA,IAAI,EAAJ,EAAA,GAAA,MAAA,CAAA,MAAI,EAAJ,IAAI,EAAE;AAAlB,YAAA,IAAM,EAAE,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AACX,YAAA,EAAE,EAAE,CAAC;AACN,QAAA,CAAA;IACH,CAAC,CAAA;IAEH,OAAA,KAAC,CAAA;AAAD,CAAC,EAnCD,CAAA;;ACGA,IAAA,aAAA,IAAA,YAAA;AAME,IAAA,SAAA,aAAA,GAAA;QALA,IAAA,CAAA,GAAG,GAAG,EAAE,CAAC;QACT,IAAA,CAAA,MAAM,GAAG,EAAE,CAAC;QACZ,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC;AAItB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC;IAKD,aAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAmB,EAAA;AACrB,QAAA,IAAA,GAAG,GAA+B,OAAO,CAAA,GAAtC,EAAE,MAAM,GAAuB,OAAO,CAAA,MAA9B,EAAE,gBAAgB,GAAK,OAAO,iBAAZ,CAAa;AAClD,QAAA,IAAM,SAAS,GAAG;YAChB,CAAC,GAAG,EAAE,KAAK,EAAA,QAAA,CAAuB;YAClC,CAAC,MAAM,EAAE,QAAQ,EAAA,QAAA,CAAuB;YACxC,CAAC,gBAAgB,EAAE,kBAAkB,EAAA,UAAA,CAAyB;SAC/D,CAAC;AACF,QAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAA;AAQD,IAAA,aAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;AACE,QAAA,IAAM,MAAM,GAAa;AACvB,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;IAChB,CAAC,CAAA;AAEK,IAAA,aAAA,CAAA,SAAA,CAAA,IAAI,GAAV,UAAW,IAAS,EAAE,UAAyC,EAAA;AAAzC,QAAA,IAAA,UAAA,KAAA,MAAA,EAAA,EAAA,UAAA,GAAA,EAAyC,CAAA,CAAA,CAAA;;;;;;wBACzD,aAAa,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA,EAAA,EAC9B,UAAU,EAAA,UAAA,EAAA,CACX,CAAC;8BACE,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,CAAA,EAA3C,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAA2C;AAC7B,wBAAA,OAAA,CAAA,CAAA,EAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA,CAAA;;wBAA1D,aAAa,GAAG,SAA0C,CAAC;AAC3D,wBAAA,IAAI,CAAC,aAAa;4BAAE,OAAA,CAAA,CAAA,CAAA,CAAO;;;AAEzB,wBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,wBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAChB,4BAAA,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;4BAC1C,OAAA,CAAA,CAAA,CAAA,CAAO;AACR,wBAAA,CAAA;wBACD,OAAA,CAAA,CAAA,EAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA,CAAC;;;;AAC9C,IAAA,CAAA,CAAA;IASD,aAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,SAAiB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAA;IAuBH,OAAA,aAAC,CAAA;AAAD,CAAC,EAvFD;;ACIA,IAAA,WAAA,IAAA,YAAA;AAKE,IAAA,SAAA,WAAA,GAAA;QAJA,IAAA,CAAA,iBAAiB,GAAG,CAAC,CAAC;QAEtB,IAAA,CAAA,2BAA2B,GAAG,IAAI,CAAC;IAEpB,CAAC;IAEhB,WAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAA;IAED,WAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAU,EAAA;AACZ,QAAA,IAAA,iBAAiB,GAAsD,OAAO,CAAA,iBAA7D,EAAE,kBAAkB,GAAkC,OAAO,CAAA,kBAAzC,EAAE,2BAA2B,GAAK,OAAO,4BAAZ,CAAa;AACvF,QAAA,IAAM,SAAS,GAAG;YAChB,CAAC,iBAAiB,EAAE,mBAAmB,EAAA,QAAA,CAAuB;YAC9D,CAAC,kBAAkB,EAAE,oBAAoB,EAAA,QAAA,CAAuB;YAChE,CAAC,2BAA2B,EAAE,6BAA6B,EAAA,QAAA,CAAuB;SACnF,CAAC;AACF,QAAA,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAA;IACH,OAAA,WAAC,CAAA;AAAD,CAAC,EApBD;;ACGA,IAAA,UAAA,IAAA,YAAA;AAIE,IAAA,SAAA,UAAA,CAAY,OAAwB,EAAA;AAAxB,QAAA,IAAA,OAAA,KAAA,MAAA,EAAA,EAAA,OAAA,GAAA,EAAwB,CAAA,CAAA,CAAA;QAH5B,IAAA,CAAA,cAAc,GAAG,EAAE,CAAC;QACpB,IAAA,CAAA,oBAAoB,GAAY,IAAI,CAAC;QACrC,IAAA,CAAA,KAAK,GAA6B,EAAE,CAAC;AAE3C,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAOD,UAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,IAA4B,EAAA;QAAjC,IAAA,KAAA,GAAA,IAAA,CAWC;AAVC,QAAA,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU,EAAE;YACnD,IAAI,QAAM,GAA2B,IAAI,CAAC;AAC1C,YAAA,IAAM,sBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,YAAA,kBAAkB,CAAC,YAAA;gBACjB,QAAM,GAAG,sBAAoB,CAAC,IAAI,CAAC,KAAI,EAAE,KAAI,EAAE,IAAI,CAAC,CAAC;AACvD,YAAA,CAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAM;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAM,CAAC,CAAC;AACnC,QAAA,CAAA;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAA;IAEO,UAAA,CAAA,SAAA,CAAA,aAAa,GAArB,UAAsB,IAA4B,EAAA;QAChD,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,QAAA,CAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA,CAAf,CAAe,CAAC,CAAC;AAC3C,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;AAEO,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAb,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,SAAS,CAAC;IAC1C,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;AACE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC,CAAA;IAED,UAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,OAAwB,EAAA;AAAxB,QAAA,IAAA,OAAA,KAAA,MAAA,EAAA,EAAA,OAAA,GAAA,EAAwB,CAAA,CAAA,CAAA;AAClC,QAAA,IAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC9C,QAAA,IAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAA;AACzD,QAAA,sBAAsB,CAAC,cAAc,EAAE,gBAAgB,EAAA,QAAA,CAAuB,KAAK,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;AACzH,QAAA,sBAAsB,CAAC,oBAAoB,EAAE,sBAAsB,EAAA,UAAA,CAAyB;AAC1F,aAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;IACvD,CAAC,CAAA;IACH,OAAA,UAAC,CAAA;AAAD,CAAC,EAzDD;;;;;;;;"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@y-monitor/core",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "",
5
5
  "main": "dist/core.js",
6
6
  "module": "dist/core.esm.js",