@y-monitor/core 1.0.0

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 ADDED
@@ -0,0 +1,70 @@
1
+ import { AuthInfo } from '@monitor/types';
2
+ import { BaseClientType } from '@monitor/types';
3
+ import { BaseOptionsFieldsIntegrationType } from '@monitor/types';
4
+ import { BaseOptionsType } from '@monitor/types';
5
+ import { BasePluginType } from '@monitor/types';
6
+ import { BreadcrumbPushDataType } from '@monitor/types';
7
+ import { EventTypes } from '@monitor/shared';
8
+ import { LogTypes } from '@monitor/types';
9
+ import { Queue } from '@monitor/utils';
10
+ import { ReportDataType } from '@monitor/types';
11
+ import { TransportDataType } from '@monitor/types';
12
+
13
+ export declare abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes> implements BaseClientType {
14
+ SDK_NAME: string;
15
+ options: O;
16
+ abstract breadcrumb: Breadcrumb;
17
+ constructor(options: O);
18
+ use(plugins: BasePluginType<E>[]): void;
19
+ getOptions(): O;
20
+ abstract isPluginEnable(name: EventTypes): boolean;
21
+ abstract log(data: LogTypes): void;
22
+ }
23
+
24
+ export declare class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {
25
+ throttleDelayTime: number;
26
+ filterXhrUrlRegExp: RegExp;
27
+ includeHttpUrlTraceIdRegExp: RegExp;
28
+ constructor();
29
+ isFilterHttpUrl(url: string): boolean;
30
+ bindOptions(options: O): void;
31
+ }
32
+
33
+ export declare abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {
34
+ dsn: string;
35
+ apiKey: string;
36
+ beforeDataReport: any;
37
+ queue: Queue;
38
+ constructor();
39
+ bindOptions(options: Partial<O>): void;
40
+ getAuthInfo(): AuthInfo;
41
+ send(data: any, breadcrumb?: BreadcrumbPushDataType[]): Promise<void>;
42
+ isSelfDsn(targetUrl: string): boolean;
43
+ abstract sendToServer(data: TransportDataType | any, url: any): void;
44
+ abstract post(data: TransportDataType | any, url: string): void;
45
+ abstract getTransportData(data: ReportDataType): TransportDataType;
46
+ }
47
+
48
+ export declare class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {
49
+ private maxBreadcrumbs;
50
+ private beforePushBreadcrumb;
51
+ private stack;
52
+ constructor(options?: Partial<O>);
53
+ push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[];
54
+ private immediatePush;
55
+ private shift;
56
+ clear(): void;
57
+ getStack(): BreadcrumbPushDataType[];
58
+ bindOptions(options?: Partial<O>): void;
59
+ }
60
+
61
+ declare type Callback = (data: any) => any;
62
+
63
+ export declare class Subscribe<T> {
64
+ events: Map<T, Callback[]>;
65
+ constructor();
66
+ watch(eventName: T, callback: Callback): void;
67
+ notify(eventName: T, data: any): void;
68
+ }
69
+
70
+ export { }
@@ -0,0 +1,430 @@
1
+ var Subscribe = (function () {
2
+ function Subscribe() {
3
+ this.events = new Map();
4
+ }
5
+ Subscribe.prototype.watch = function (eventName, callback) {
6
+ var fns = this.events.get(eventName);
7
+ if (fns) {
8
+ this.events.set(eventName, fns.concat(callback));
9
+ return;
10
+ }
11
+ this.events.set(eventName, [callback]);
12
+ };
13
+ Subscribe.prototype.notify = function (eventName, data) {
14
+ var fns = this.events.get(eventName);
15
+ if (!eventName || !fns)
16
+ return;
17
+ fns.forEach(function (fn) {
18
+ try {
19
+ fn(data);
20
+ }
21
+ catch (error) { }
22
+ });
23
+ };
24
+ return Subscribe;
25
+ }());
26
+
27
+ var BaseClient = (function () {
28
+ function BaseClient(options) {
29
+ this.options = options;
30
+ }
31
+ BaseClient.prototype.use = function (plugins) {
32
+ var _this = this;
33
+ var subscribe = new Subscribe();
34
+ plugins.forEach(function (plugin) {
35
+ plugin.monitor.call(_this, subscribe.notify.bind(subscribe));
36
+ var wrapperTransform = function () {
37
+ var args = [];
38
+ for (var _i = 0; _i < arguments.length; _i++) {
39
+ args[_i] = arguments[_i];
40
+ }
41
+ var res = plugin.transform.apply(_this, args);
42
+ plugin.consumer.call(_this, res);
43
+ };
44
+ subscribe.watch(plugin.name, wrapperTransform);
45
+ });
46
+ };
47
+ BaseClient.prototype.getOptions = function () {
48
+ return this.options;
49
+ };
50
+ return BaseClient;
51
+ }());
52
+
53
+ /******************************************************************************
54
+ Copyright (c) Microsoft Corporation.
55
+
56
+ Permission to use, copy, modify, and/or distribute this software for any
57
+ purpose with or without fee is hereby granted.
58
+
59
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
60
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
61
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
62
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
63
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
64
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
65
+ PERFORMANCE OF THIS SOFTWARE.
66
+ ***************************************************************************** */
67
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
68
+
69
+
70
+ var __assign = function() {
71
+ __assign = Object.assign || function __assign(t) {
72
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
73
+ s = arguments[i];
74
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
75
+ }
76
+ return t;
77
+ };
78
+ return __assign.apply(this, arguments);
79
+ };
80
+
81
+ function __awaiter(thisArg, _arguments, P, generator) {
82
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
83
+ return new (P || (P = Promise))(function (resolve, reject) {
84
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
85
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
86
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
87
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
88
+ });
89
+ }
90
+
91
+ function __generator(thisArg, body) {
92
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
93
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
94
+ function verb(n) { return function (v) { return step([n, v]); }; }
95
+ function step(op) {
96
+ if (f) throw new TypeError("Generator is already executing.");
97
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
98
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
99
+ if (y = 0, t) op = [op[0] & 2, t.value];
100
+ switch (op[0]) {
101
+ case 0: case 1: t = op; break;
102
+ case 4: _.label++; return { value: op[1], done: false };
103
+ case 5: _.label++; y = op[1]; op = [0]; continue;
104
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
105
+ default:
106
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
107
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
108
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
109
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
110
+ if (t[2]) _.ops.pop();
111
+ _.trys.pop(); continue;
112
+ }
113
+ op = body.call(thisArg, _);
114
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
115
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
116
+ }
117
+ }
118
+
119
+ function __spreadArray(to, from, pack) {
120
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
121
+ if (ar || !(i in from)) {
122
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
123
+ ar[i] = from[i];
124
+ }
125
+ }
126
+ return to.concat(ar || Array.prototype.slice.call(from));
127
+ }
128
+
129
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
130
+ var e = new Error(message);
131
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
132
+ };
133
+
134
+ var version = "1.0.0";
135
+
136
+ var SDK_NAME = 'y-monitor';
137
+ var SDK_VERSION = version;
138
+
139
+ var isBrowserEnv = typeof window !== 'undefined' ? window : 0;
140
+ function getGlobal() {
141
+ if (isBrowserEnv)
142
+ return window;
143
+ }
144
+ var _global = getGlobal();
145
+ var _support = getGlobalMonitorSupport();
146
+ function getGlobalMonitorSupport() {
147
+ _global.__MONITOR__ = _global.__MONITOR__ || {};
148
+ return _global.__MONITOR__;
149
+ }
150
+
151
+ var PREFIX = 'MONITOR Logger';
152
+ var Logger = (function () {
153
+ function Logger() {
154
+ var _this = this;
155
+ this.enabled = false;
156
+ this._console = {};
157
+ _global.console = console || _global.console;
158
+ if (console || _global.console) {
159
+ var logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];
160
+ logType.forEach(function (level) {
161
+ if (!(level in _global.console))
162
+ return;
163
+ _this._console[level] = _global.console[level];
164
+ });
165
+ }
166
+ }
167
+ Logger.prototype.disable = function () {
168
+ this.enabled = false;
169
+ };
170
+ Logger.prototype.bindOptions = function (debug) {
171
+ this.enabled = debug ? true : false;
172
+ };
173
+ Logger.prototype.enable = function () {
174
+ this.enabled = true;
175
+ };
176
+ Logger.prototype.getEnableStatus = function () {
177
+ return this.enabled;
178
+ };
179
+ Logger.prototype.log = function () {
180
+ var _a;
181
+ var args = [];
182
+ for (var _i = 0; _i < arguments.length; _i++) {
183
+ args[_i] = arguments[_i];
184
+ }
185
+ if (!this.enabled) {
186
+ return;
187
+ }
188
+ (_a = this._console).log.apply(_a, __spreadArray(["".concat(PREFIX, "[Log]:")], args, false));
189
+ };
190
+ Logger.prototype.warn = function () {
191
+ var _a;
192
+ var args = [];
193
+ for (var _i = 0; _i < arguments.length; _i++) {
194
+ args[_i] = arguments[_i];
195
+ }
196
+ if (!this.enabled) {
197
+ return;
198
+ }
199
+ (_a = this._console).warn.apply(_a, __spreadArray(["".concat(PREFIX, "[Warn]:")], args, false));
200
+ };
201
+ Logger.prototype.error = function () {
202
+ var _a;
203
+ var args = [];
204
+ for (var _i = 0; _i < arguments.length; _i++) {
205
+ args[_i] = arguments[_i];
206
+ }
207
+ (_a = this._console).error.apply(_a, __spreadArray(["".concat(PREFIX, "[Error]:")], args, false));
208
+ };
209
+ return Logger;
210
+ }());
211
+ var logger = _support.logger || (_support.logger = new Logger());
212
+
213
+ var nativeToString = Object.prototype.toString;
214
+ function isType(type) {
215
+ return function (value) {
216
+ return nativeToString.call(value) === "[object ".concat(type, "]");
217
+ };
218
+ }
219
+ function toStringAny(target, type) {
220
+ return nativeToString.call(target) === "[object ".concat(type, "]");
221
+ }
222
+ function toStringValidateOption(target, targetName, expectType) {
223
+ if (toStringAny(target, expectType))
224
+ return true;
225
+ typeof target !== 'undefined' && logger.error("".concat(targetName, "\u671F\u671B\u4F20\u5165:").concat(expectType, "\u7C7B\u578B\uFF0C\u5F53\u524D\u662F:").concat(nativeToString.call(target), "\u7C7B\u578B"));
226
+ return false;
227
+ }
228
+ function validateOptionsAndSet(targetArr) {
229
+ var _this = this;
230
+ targetArr.forEach(function (_a) {
231
+ var target = _a[0], targetName = _a[1], expectType = _a[2];
232
+ return toStringValidateOption(target, targetName, expectType) && (_this[targetName] = target);
233
+ });
234
+ }
235
+ var variableTypeDetection = {
236
+ isNumber: isType("Number"),
237
+ isString: isType("String"),
238
+ isBoolean: isType("Boolean"),
239
+ isNull: isType("Null"),
240
+ isUndefined: isType("Undefined"),
241
+ isSymbol: isType("Symbol"),
242
+ isFunction: isType("Function"),
243
+ isObject: isType("Object"),
244
+ isArray: isType("Array"),
245
+ isProcess: isType("process"),
246
+ isWindow: isType("Window")
247
+ };
248
+ function isEmpty(wat) {
249
+ return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;
250
+ }
251
+ function getTimestamp() {
252
+ return Date.now();
253
+ }
254
+ function isInclude(origin, target) {
255
+ return !!~origin.indexOf(target);
256
+ }
257
+ function silentConsoleScope(callback) {
258
+ callback();
259
+ }
260
+
261
+ var Queue = (function () {
262
+ function Queue() {
263
+ this.stack = [];
264
+ this.isFlushing = false;
265
+ if (!('Promise' in _global))
266
+ return;
267
+ this.micro = Promise.resolve();
268
+ }
269
+ Queue.prototype.addTask = function (fn) {
270
+ var _this = this;
271
+ if (typeof fn !== 'function')
272
+ return;
273
+ if (!('Promise' in _global)) {
274
+ fn();
275
+ return;
276
+ }
277
+ this.stack.push(fn);
278
+ if (!this.isFlushing) {
279
+ this.isFlushing = true;
280
+ this.micro.then(function () { return _this.flushStack(); });
281
+ }
282
+ };
283
+ Queue.prototype.clear = function () {
284
+ this.stack = [];
285
+ };
286
+ Queue.prototype.getStack = function () {
287
+ return this.stack;
288
+ };
289
+ Queue.prototype.flushStack = function () {
290
+ var temp = this.stack.slice(0);
291
+ this.stack.length = 0;
292
+ this.isFlushing = false;
293
+ for (var _i = 0, temp_1 = temp; _i < temp_1.length; _i++) {
294
+ var fn = temp_1[_i];
295
+ fn();
296
+ }
297
+ };
298
+ return Queue;
299
+ }());
300
+
301
+ var BaseTransport = (function () {
302
+ function BaseTransport() {
303
+ this.dsn = '';
304
+ this.apiKey = '';
305
+ this.beforeDataReport = null;
306
+ this.queue = new Queue();
307
+ }
308
+ BaseTransport.prototype.bindOptions = function (options) {
309
+ var dsn = options.dsn, apiKey = options.apiKey, beforeDataReport = options.beforeDataReport;
310
+ var optionArr = [
311
+ [dsn, 'dsn', "String"],
312
+ [apiKey, 'apiKey', "String"],
313
+ [beforeDataReport, 'beforeDataReport', "Function"]
314
+ ];
315
+ validateOptionsAndSet.call(this, optionArr);
316
+ };
317
+ BaseTransport.prototype.getAuthInfo = function () {
318
+ var result = {
319
+ sdkVersion: SDK_VERSION,
320
+ sdkName: SDK_NAME,
321
+ apiKey: this.apiKey
322
+ };
323
+ return result;
324
+ };
325
+ BaseTransport.prototype.send = function (data, breadcrumb) {
326
+ if (breadcrumb === void 0) { breadcrumb = []; }
327
+ return __awaiter(this, void 0, void 0, function () {
328
+ var transportData, dsn;
329
+ return __generator(this, function (_a) {
330
+ switch (_a.label) {
331
+ case 0:
332
+ transportData = __assign(__assign({}, this.getTransportData(data)), { breadcrumb: breadcrumb });
333
+ if (!(typeof this.beforeDataReport === 'function')) return [3, 2];
334
+ return [4, this.beforeDataReport(transportData)];
335
+ case 1:
336
+ transportData = _a.sent();
337
+ if (!transportData)
338
+ return [2];
339
+ _a.label = 2;
340
+ case 2:
341
+ dsn = this.dsn;
342
+ if (isEmpty(dsn)) {
343
+ logger.error('dsn is empty,please check');
344
+ return [2];
345
+ }
346
+ return [2, this.sendToServer(transportData, dsn)];
347
+ }
348
+ });
349
+ });
350
+ };
351
+ BaseTransport.prototype.isSelfDsn = function (targetUrl) {
352
+ return this.dsn && isInclude(targetUrl, this.dsn);
353
+ };
354
+ return BaseTransport;
355
+ }());
356
+
357
+ var BaseOptions = (function () {
358
+ function BaseOptions() {
359
+ this.throttleDelayTime = 0;
360
+ this.includeHttpUrlTraceIdRegExp = /.*/;
361
+ }
362
+ BaseOptions.prototype.isFilterHttpUrl = function (url) {
363
+ return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);
364
+ };
365
+ BaseOptions.prototype.bindOptions = function (options) {
366
+ var throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp;
367
+ var optionArr = [
368
+ [throttleDelayTime, 'throttleDelayTime', "Number"],
369
+ [filterXhrUrlRegExp, 'filterXhrUrlRegExp', "RegExp"],
370
+ [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', "RegExp"]
371
+ ];
372
+ validateOptionsAndSet.call(this, optionArr);
373
+ };
374
+ return BaseOptions;
375
+ }());
376
+
377
+ var Breadcrumb = (function () {
378
+ function Breadcrumb(options) {
379
+ if (options === void 0) { options = {}; }
380
+ this.maxBreadcrumbs = 10;
381
+ this.beforePushBreadcrumb = null;
382
+ this.stack = [];
383
+ this.bindOptions(options);
384
+ }
385
+ Breadcrumb.prototype.push = function (data) {
386
+ var _this = this;
387
+ if (typeof this.beforePushBreadcrumb === 'function') {
388
+ var result_1 = null;
389
+ var beforePushBreadcrumb_1 = this.beforePushBreadcrumb;
390
+ silentConsoleScope(function () {
391
+ result_1 = beforePushBreadcrumb_1.call(_this, _this, data);
392
+ });
393
+ if (!result_1)
394
+ return this.stack;
395
+ return this.immediatePush(result_1);
396
+ }
397
+ return this.immediatePush(data);
398
+ };
399
+ Breadcrumb.prototype.immediatePush = function (data) {
400
+ data.time || (data.time = getTimestamp());
401
+ if (this.stack.length >= this.maxBreadcrumbs) {
402
+ this.shift();
403
+ }
404
+ this.stack.push(data);
405
+ this.stack.sort(function (a, b) { return a.time - b.time; });
406
+ logger.log(this.stack);
407
+ return this.stack;
408
+ };
409
+ Breadcrumb.prototype.shift = function () {
410
+ return this.stack.shift() !== undefined;
411
+ };
412
+ Breadcrumb.prototype.clear = function () {
413
+ this.stack = [];
414
+ };
415
+ Breadcrumb.prototype.getStack = function () {
416
+ return this.stack;
417
+ };
418
+ Breadcrumb.prototype.bindOptions = function (options) {
419
+ if (options === void 0) { options = {}; }
420
+ var maxBreadcrumbs = options.maxBreadcrumbs;
421
+ var beforePushBreadcrumb = options.beforePushBreadcrumb;
422
+ toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', "Number") && (this.maxBreadcrumbs = maxBreadcrumbs);
423
+ toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', "Function") &&
424
+ (this.beforePushBreadcrumb = beforePushBreadcrumb);
425
+ };
426
+ return Breadcrumb;
427
+ }());
428
+
429
+ export { BaseClient, BaseOptions, BaseTransport, Breadcrumb, Subscribe };
430
+ //# sourceMappingURL=core.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.esm.js","sources":["../src/subscribe.ts","../src/baseClient.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 '@monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@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 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 '@monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@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 '@monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@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 '@monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@monitor/types';\nimport { validateOptionsAndSet } from '@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 '@monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@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 ADDED
@@ -0,0 +1,436 @@
1
+ 'use strict';
2
+
3
+ var Subscribe = (function () {
4
+ function Subscribe() {
5
+ this.events = new Map();
6
+ }
7
+ Subscribe.prototype.watch = function (eventName, callback) {
8
+ var fns = this.events.get(eventName);
9
+ if (fns) {
10
+ this.events.set(eventName, fns.concat(callback));
11
+ return;
12
+ }
13
+ this.events.set(eventName, [callback]);
14
+ };
15
+ Subscribe.prototype.notify = function (eventName, data) {
16
+ var fns = this.events.get(eventName);
17
+ if (!eventName || !fns)
18
+ return;
19
+ fns.forEach(function (fn) {
20
+ try {
21
+ fn(data);
22
+ }
23
+ catch (error) { }
24
+ });
25
+ };
26
+ return Subscribe;
27
+ }());
28
+
29
+ var BaseClient = (function () {
30
+ function BaseClient(options) {
31
+ this.options = options;
32
+ }
33
+ BaseClient.prototype.use = function (plugins) {
34
+ var _this = this;
35
+ var subscribe = new Subscribe();
36
+ plugins.forEach(function (plugin) {
37
+ plugin.monitor.call(_this, subscribe.notify.bind(subscribe));
38
+ var wrapperTransform = function () {
39
+ var args = [];
40
+ for (var _i = 0; _i < arguments.length; _i++) {
41
+ args[_i] = arguments[_i];
42
+ }
43
+ var res = plugin.transform.apply(_this, args);
44
+ plugin.consumer.call(_this, res);
45
+ };
46
+ subscribe.watch(plugin.name, wrapperTransform);
47
+ });
48
+ };
49
+ BaseClient.prototype.getOptions = function () {
50
+ return this.options;
51
+ };
52
+ return BaseClient;
53
+ }());
54
+
55
+ /******************************************************************************
56
+ Copyright (c) Microsoft Corporation.
57
+
58
+ Permission to use, copy, modify, and/or distribute this software for any
59
+ purpose with or without fee is hereby granted.
60
+
61
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
62
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
63
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
64
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
65
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
66
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
67
+ PERFORMANCE OF THIS SOFTWARE.
68
+ ***************************************************************************** */
69
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
70
+
71
+
72
+ var __assign = function() {
73
+ __assign = Object.assign || function __assign(t) {
74
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
75
+ s = arguments[i];
76
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
77
+ }
78
+ return t;
79
+ };
80
+ return __assign.apply(this, arguments);
81
+ };
82
+
83
+ function __awaiter(thisArg, _arguments, P, generator) {
84
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
85
+ return new (P || (P = Promise))(function (resolve, reject) {
86
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
87
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
88
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
89
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
90
+ });
91
+ }
92
+
93
+ function __generator(thisArg, body) {
94
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
95
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
96
+ function verb(n) { return function (v) { return step([n, v]); }; }
97
+ function step(op) {
98
+ if (f) throw new TypeError("Generator is already executing.");
99
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
100
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
101
+ if (y = 0, t) op = [op[0] & 2, t.value];
102
+ switch (op[0]) {
103
+ case 0: case 1: t = op; break;
104
+ case 4: _.label++; return { value: op[1], done: false };
105
+ case 5: _.label++; y = op[1]; op = [0]; continue;
106
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
107
+ default:
108
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
109
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
110
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
111
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
112
+ if (t[2]) _.ops.pop();
113
+ _.trys.pop(); continue;
114
+ }
115
+ op = body.call(thisArg, _);
116
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
117
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
118
+ }
119
+ }
120
+
121
+ function __spreadArray(to, from, pack) {
122
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
123
+ if (ar || !(i in from)) {
124
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
125
+ ar[i] = from[i];
126
+ }
127
+ }
128
+ return to.concat(ar || Array.prototype.slice.call(from));
129
+ }
130
+
131
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
132
+ var e = new Error(message);
133
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
134
+ };
135
+
136
+ var version = "1.0.0";
137
+
138
+ var SDK_NAME = 'y-monitor';
139
+ var SDK_VERSION = version;
140
+
141
+ var isBrowserEnv = typeof window !== 'undefined' ? window : 0;
142
+ function getGlobal() {
143
+ if (isBrowserEnv)
144
+ return window;
145
+ }
146
+ var _global = getGlobal();
147
+ var _support = getGlobalMonitorSupport();
148
+ function getGlobalMonitorSupport() {
149
+ _global.__MONITOR__ = _global.__MONITOR__ || {};
150
+ return _global.__MONITOR__;
151
+ }
152
+
153
+ var PREFIX = 'MONITOR Logger';
154
+ var Logger = (function () {
155
+ function Logger() {
156
+ var _this = this;
157
+ this.enabled = false;
158
+ this._console = {};
159
+ _global.console = console || _global.console;
160
+ if (console || _global.console) {
161
+ var logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];
162
+ logType.forEach(function (level) {
163
+ if (!(level in _global.console))
164
+ return;
165
+ _this._console[level] = _global.console[level];
166
+ });
167
+ }
168
+ }
169
+ Logger.prototype.disable = function () {
170
+ this.enabled = false;
171
+ };
172
+ Logger.prototype.bindOptions = function (debug) {
173
+ this.enabled = debug ? true : false;
174
+ };
175
+ Logger.prototype.enable = function () {
176
+ this.enabled = true;
177
+ };
178
+ Logger.prototype.getEnableStatus = function () {
179
+ return this.enabled;
180
+ };
181
+ Logger.prototype.log = function () {
182
+ var _a;
183
+ var args = [];
184
+ for (var _i = 0; _i < arguments.length; _i++) {
185
+ args[_i] = arguments[_i];
186
+ }
187
+ if (!this.enabled) {
188
+ return;
189
+ }
190
+ (_a = this._console).log.apply(_a, __spreadArray(["".concat(PREFIX, "[Log]:")], args, false));
191
+ };
192
+ Logger.prototype.warn = function () {
193
+ var _a;
194
+ var args = [];
195
+ for (var _i = 0; _i < arguments.length; _i++) {
196
+ args[_i] = arguments[_i];
197
+ }
198
+ if (!this.enabled) {
199
+ return;
200
+ }
201
+ (_a = this._console).warn.apply(_a, __spreadArray(["".concat(PREFIX, "[Warn]:")], args, false));
202
+ };
203
+ Logger.prototype.error = function () {
204
+ var _a;
205
+ var args = [];
206
+ for (var _i = 0; _i < arguments.length; _i++) {
207
+ args[_i] = arguments[_i];
208
+ }
209
+ (_a = this._console).error.apply(_a, __spreadArray(["".concat(PREFIX, "[Error]:")], args, false));
210
+ };
211
+ return Logger;
212
+ }());
213
+ var logger = _support.logger || (_support.logger = new Logger());
214
+
215
+ var nativeToString = Object.prototype.toString;
216
+ function isType(type) {
217
+ return function (value) {
218
+ return nativeToString.call(value) === "[object ".concat(type, "]");
219
+ };
220
+ }
221
+ function toStringAny(target, type) {
222
+ return nativeToString.call(target) === "[object ".concat(type, "]");
223
+ }
224
+ function toStringValidateOption(target, targetName, expectType) {
225
+ if (toStringAny(target, expectType))
226
+ return true;
227
+ typeof target !== 'undefined' && logger.error("".concat(targetName, "\u671F\u671B\u4F20\u5165:").concat(expectType, "\u7C7B\u578B\uFF0C\u5F53\u524D\u662F:").concat(nativeToString.call(target), "\u7C7B\u578B"));
228
+ return false;
229
+ }
230
+ function validateOptionsAndSet(targetArr) {
231
+ var _this = this;
232
+ targetArr.forEach(function (_a) {
233
+ var target = _a[0], targetName = _a[1], expectType = _a[2];
234
+ return toStringValidateOption(target, targetName, expectType) && (_this[targetName] = target);
235
+ });
236
+ }
237
+ var variableTypeDetection = {
238
+ isNumber: isType("Number"),
239
+ isString: isType("String"),
240
+ isBoolean: isType("Boolean"),
241
+ isNull: isType("Null"),
242
+ isUndefined: isType("Undefined"),
243
+ isSymbol: isType("Symbol"),
244
+ isFunction: isType("Function"),
245
+ isObject: isType("Object"),
246
+ isArray: isType("Array"),
247
+ isProcess: isType("process"),
248
+ isWindow: isType("Window")
249
+ };
250
+ function isEmpty(wat) {
251
+ return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;
252
+ }
253
+ function getTimestamp() {
254
+ return Date.now();
255
+ }
256
+ function isInclude(origin, target) {
257
+ return !!~origin.indexOf(target);
258
+ }
259
+ function silentConsoleScope(callback) {
260
+ callback();
261
+ }
262
+
263
+ var Queue = (function () {
264
+ function Queue() {
265
+ this.stack = [];
266
+ this.isFlushing = false;
267
+ if (!('Promise' in _global))
268
+ return;
269
+ this.micro = Promise.resolve();
270
+ }
271
+ Queue.prototype.addTask = function (fn) {
272
+ var _this = this;
273
+ if (typeof fn !== 'function')
274
+ return;
275
+ if (!('Promise' in _global)) {
276
+ fn();
277
+ return;
278
+ }
279
+ this.stack.push(fn);
280
+ if (!this.isFlushing) {
281
+ this.isFlushing = true;
282
+ this.micro.then(function () { return _this.flushStack(); });
283
+ }
284
+ };
285
+ Queue.prototype.clear = function () {
286
+ this.stack = [];
287
+ };
288
+ Queue.prototype.getStack = function () {
289
+ return this.stack;
290
+ };
291
+ Queue.prototype.flushStack = function () {
292
+ var temp = this.stack.slice(0);
293
+ this.stack.length = 0;
294
+ this.isFlushing = false;
295
+ for (var _i = 0, temp_1 = temp; _i < temp_1.length; _i++) {
296
+ var fn = temp_1[_i];
297
+ fn();
298
+ }
299
+ };
300
+ return Queue;
301
+ }());
302
+
303
+ var BaseTransport = (function () {
304
+ function BaseTransport() {
305
+ this.dsn = '';
306
+ this.apiKey = '';
307
+ this.beforeDataReport = null;
308
+ this.queue = new Queue();
309
+ }
310
+ BaseTransport.prototype.bindOptions = function (options) {
311
+ var dsn = options.dsn, apiKey = options.apiKey, beforeDataReport = options.beforeDataReport;
312
+ var optionArr = [
313
+ [dsn, 'dsn', "String"],
314
+ [apiKey, 'apiKey', "String"],
315
+ [beforeDataReport, 'beforeDataReport', "Function"]
316
+ ];
317
+ validateOptionsAndSet.call(this, optionArr);
318
+ };
319
+ BaseTransport.prototype.getAuthInfo = function () {
320
+ var result = {
321
+ sdkVersion: SDK_VERSION,
322
+ sdkName: SDK_NAME,
323
+ apiKey: this.apiKey
324
+ };
325
+ return result;
326
+ };
327
+ BaseTransport.prototype.send = function (data, breadcrumb) {
328
+ if (breadcrumb === void 0) { breadcrumb = []; }
329
+ return __awaiter(this, void 0, void 0, function () {
330
+ var transportData, dsn;
331
+ return __generator(this, function (_a) {
332
+ switch (_a.label) {
333
+ case 0:
334
+ transportData = __assign(__assign({}, this.getTransportData(data)), { breadcrumb: breadcrumb });
335
+ if (!(typeof this.beforeDataReport === 'function')) return [3, 2];
336
+ return [4, this.beforeDataReport(transportData)];
337
+ case 1:
338
+ transportData = _a.sent();
339
+ if (!transportData)
340
+ return [2];
341
+ _a.label = 2;
342
+ case 2:
343
+ dsn = this.dsn;
344
+ if (isEmpty(dsn)) {
345
+ logger.error('dsn is empty,please check');
346
+ return [2];
347
+ }
348
+ return [2, this.sendToServer(transportData, dsn)];
349
+ }
350
+ });
351
+ });
352
+ };
353
+ BaseTransport.prototype.isSelfDsn = function (targetUrl) {
354
+ return this.dsn && isInclude(targetUrl, this.dsn);
355
+ };
356
+ return BaseTransport;
357
+ }());
358
+
359
+ var BaseOptions = (function () {
360
+ function BaseOptions() {
361
+ this.throttleDelayTime = 0;
362
+ this.includeHttpUrlTraceIdRegExp = /.*/;
363
+ }
364
+ BaseOptions.prototype.isFilterHttpUrl = function (url) {
365
+ return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);
366
+ };
367
+ BaseOptions.prototype.bindOptions = function (options) {
368
+ var throttleDelayTime = options.throttleDelayTime, filterXhrUrlRegExp = options.filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp = options.includeHttpUrlTraceIdRegExp;
369
+ var optionArr = [
370
+ [throttleDelayTime, 'throttleDelayTime', "Number"],
371
+ [filterXhrUrlRegExp, 'filterXhrUrlRegExp', "RegExp"],
372
+ [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', "RegExp"]
373
+ ];
374
+ validateOptionsAndSet.call(this, optionArr);
375
+ };
376
+ return BaseOptions;
377
+ }());
378
+
379
+ var Breadcrumb = (function () {
380
+ function Breadcrumb(options) {
381
+ if (options === void 0) { options = {}; }
382
+ this.maxBreadcrumbs = 10;
383
+ this.beforePushBreadcrumb = null;
384
+ this.stack = [];
385
+ this.bindOptions(options);
386
+ }
387
+ Breadcrumb.prototype.push = function (data) {
388
+ var _this = this;
389
+ if (typeof this.beforePushBreadcrumb === 'function') {
390
+ var result_1 = null;
391
+ var beforePushBreadcrumb_1 = this.beforePushBreadcrumb;
392
+ silentConsoleScope(function () {
393
+ result_1 = beforePushBreadcrumb_1.call(_this, _this, data);
394
+ });
395
+ if (!result_1)
396
+ return this.stack;
397
+ return this.immediatePush(result_1);
398
+ }
399
+ return this.immediatePush(data);
400
+ };
401
+ Breadcrumb.prototype.immediatePush = function (data) {
402
+ data.time || (data.time = getTimestamp());
403
+ if (this.stack.length >= this.maxBreadcrumbs) {
404
+ this.shift();
405
+ }
406
+ this.stack.push(data);
407
+ this.stack.sort(function (a, b) { return a.time - b.time; });
408
+ logger.log(this.stack);
409
+ return this.stack;
410
+ };
411
+ Breadcrumb.prototype.shift = function () {
412
+ return this.stack.shift() !== undefined;
413
+ };
414
+ Breadcrumb.prototype.clear = function () {
415
+ this.stack = [];
416
+ };
417
+ Breadcrumb.prototype.getStack = function () {
418
+ return this.stack;
419
+ };
420
+ Breadcrumb.prototype.bindOptions = function (options) {
421
+ if (options === void 0) { options = {}; }
422
+ var maxBreadcrumbs = options.maxBreadcrumbs;
423
+ var beforePushBreadcrumb = options.beforePushBreadcrumb;
424
+ toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', "Number") && (this.maxBreadcrumbs = maxBreadcrumbs);
425
+ toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', "Function") &&
426
+ (this.beforePushBreadcrumb = beforePushBreadcrumb);
427
+ };
428
+ return Breadcrumb;
429
+ }());
430
+
431
+ exports.BaseClient = BaseClient;
432
+ exports.BaseOptions = BaseOptions;
433
+ exports.BaseTransport = BaseTransport;
434
+ exports.Breadcrumb = Breadcrumb;
435
+ exports.Subscribe = Subscribe;
436
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sources":["../src/subscribe.ts","../src/baseClient.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 '@monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@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 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 '@monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@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 '@monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@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 '@monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@monitor/types';\nimport { validateOptionsAndSet } from '@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 '@monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@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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"}
@@ -0,0 +1 @@
1
+ var MONITOR=function(t){"use strict";var n=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}(),e=function(){function t(t){this.options=t}return t.prototype.use=function(t){var e=this,r=new n;t.forEach(function(t){t.monitor.call(e,r.notify.bind(r));r.watch(t.name,function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var o=t.transform.apply(e,n);t.consumer.call(e,o)})})},t.prototype.getOptions=function(){return this.options},t}(),r=function(){return r=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},r.apply(this,arguments)};function o(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 i(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 s(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;var c="undefined"!=typeof window?window:0;var a=function(){if(c)return window}(),u=(a.__MONITOR__=a.__MONITOR__||{},a.__MONITOR__);var l="MONITOR Logger",f=function(){function t(){var t=this;if(this.enabled=!1,this._console={},a.console=console||a.console,console||a.console){["log","debug","info","warn","error","assert"].forEach(function(n){n in a.console&&(t._console[n]=a.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,s(["".concat(l,"[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,s(["".concat(l,"[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,s(["".concat(l,"[Error]:")],n,!1))},t}(),p=u.logger||(u.logger=new f),h=Object.prototype.toString;function d(t){return function(n){return h.call(n)==="[object ".concat(t,"]")}}function y(t,n,e){return!!function(t,n){return h.call(t)==="[object ".concat(n,"]")}(t,e)||(void 0!==t&&p.error("".concat(n,"期望传入:").concat(e,"类型,当前是:").concat(h.call(t),"类型")),!1)}function b(t){var n=this;t.forEach(function(t){var e=t[0],r=t[1];return y(e,r,t[2])&&(n[r]=e)})}var v={isNumber:d("Number"),isString:d("String"),isBoolean:d("Boolean"),isNull:d("Null"),isUndefined:d("Undefined"),isSymbol:d("Symbol"),isFunction:d("Function"),isObject:d("Object"),isArray:d("Array"),isProcess:d("process"),isWindow:d("Window")};var g=function(){function t(){this.stack=[],this.isFlushing=!1,"Promise"in a&&(this.micro=Promise.resolve())}return t.prototype.addTask=function(t){var n=this;"function"==typeof t&&("Promise"in a?(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}(),m=function(){function t(){this.dsn="",this.apiKey="",this.beforeDataReport=null,this.queue=new g}return t.prototype.bindOptions=function(t){var n=[[t.dsn,"dsn","String"],[t.apiKey,"apiKey","String"],[t.beforeDataReport,"beforeDataReport","Function"]];b.call(this,n)},t.prototype.getAuthInfo=function(){return{sdkVersion:"1.0.0",sdkName:"y-monitor",apiKey:this.apiKey}},t.prototype.send=function(t,n){return void 0===n&&(n=[]),o(this,void 0,void 0,function(){var e,o;return i(this,function(i){switch(i.label){case 0:return e=r(r({},this.getTransportData(t)),{breadcrumb:n}),"function"!=typeof this.beforeDataReport?[3,2]:[4,this.beforeDataReport(e)];case 1:if(!(e=i.sent()))return[2];i.label=2;case 2:return o=this.dsn,s=o,v.isString(s)&&""===s.trim()||null==s?(p.error("dsn is empty,please check"),[2]):[2,this.sendToServer(e,o)]}var s})})},t.prototype.isSelfDsn=function(t){return this.dsn&&(n=t,e=this.dsn,!!~n.indexOf(e));var n,e},t}(),w=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"]];b.call(this,n)},t}(),k=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}),p.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;y(n,"maxBreadcrumbs","Number")&&(this.maxBreadcrumbs=n),y(e,"beforePushBreadcrumb","Function")&&(this.beforePushBreadcrumb=e)},t}();return t.BaseClient=e,t.BaseOptions=w,t.BaseTransport=m,t.Breadcrumb=k,t.Subscribe=n,t}({});
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@y-monitor/core",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "dist/core.js",
6
+ "module": "dist/core.esm.js",
7
+ "types": "dist/core.d.ts",
8
+ "scripts": {
9
+ "test": "echo \"Error: no test specified\" && exit 1"
10
+ },
11
+ "files": ["dist"],
12
+ "publishConfig": {
13
+ "access": "public",
14
+ "registry": "https://registry.npmjs.org/"
15
+ },
16
+ "author": "Joanna",
17
+ "license": "ISC",
18
+ "dependencies": {
19
+ "@monitor/shared": "1.0.0",
20
+ "@monitor/types": "1.0.0",
21
+ "@monitor/utils": "1.0.0"
22
+ }
23
+ }