@y-monitor/core 1.0.3 → 1.0.5

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.esm.js CHANGED
@@ -131,6 +131,79 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
131
131
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
132
132
  };
133
133
 
134
+ var BrowserEventTypes;
135
+ (function (BrowserEventTypes) {
136
+ BrowserEventTypes["DOM"] = "dom";
137
+ BrowserEventTypes["XHR"] = "xhr";
138
+ })(BrowserEventTypes || (BrowserEventTypes = {}));
139
+ var BrowserBreadcrumbTypes;
140
+ (function (BrowserBreadcrumbTypes) {
141
+ BrowserBreadcrumbTypes["ROUTE"] = "Route";
142
+ BrowserBreadcrumbTypes["CLICK"] = "Click";
143
+ BrowserBreadcrumbTypes["CONSOLE"] = "Console";
144
+ BrowserBreadcrumbTypes["XHR"] = "Xhr";
145
+ BrowserBreadcrumbTypes["FETCH"] = "Fetch";
146
+ BrowserBreadcrumbTypes["UNHANDLEDREJECTION"] = "Unhandledrejection";
147
+ BrowserBreadcrumbTypes["RESOURCE"] = "Resource";
148
+ BrowserBreadcrumbTypes["CODE_ERROR"] = "Code Error";
149
+ BrowserBreadcrumbTypes["CUSTOMER"] = "Customer";
150
+ })(BrowserBreadcrumbTypes || (BrowserBreadcrumbTypes = {}));
151
+
152
+ var ToStringTypes;
153
+ (function (ToStringTypes) {
154
+ ToStringTypes["String"] = "String";
155
+ ToStringTypes["Number"] = "Number";
156
+ ToStringTypes["Boolean"] = "Boolean";
157
+ ToStringTypes["RegExp"] = "RegExp";
158
+ ToStringTypes["Null"] = "Null";
159
+ ToStringTypes["Undefined"] = "Undefined";
160
+ ToStringTypes["Symbol"] = "Symbol";
161
+ ToStringTypes["Object"] = "Object";
162
+ ToStringTypes["Array"] = "Array";
163
+ ToStringTypes["process"] = "process";
164
+ ToStringTypes["Window"] = "Window";
165
+ ToStringTypes["Function"] = "Function";
166
+ })(ToStringTypes || (ToStringTypes = {}));
167
+ var ErrorTypes;
168
+ (function (ErrorTypes) {
169
+ ErrorTypes["UNKNOWN"] = "UNKNOWN";
170
+ ErrorTypes["UNKNOWN_FUNCTION"] = "UNKNOWN_FUNCTION";
171
+ ErrorTypes["JAVASCRIPT"] = "JAVASCRIPT";
172
+ ErrorTypes["LOG"] = "LOG";
173
+ ErrorTypes["HTTP"] = "HTTP";
174
+ ErrorTypes["VUE"] = "VUE";
175
+ ErrorTypes["REACT"] = "REACT";
176
+ ErrorTypes["RESOURCE"] = "RESOURCE";
177
+ ErrorTypes["PROMISE"] = "PROMISE";
178
+ ErrorTypes["ROUTE"] = "ROUTE";
179
+ })(ErrorTypes || (ErrorTypes = {}));
180
+ var HttpTypes;
181
+ (function (HttpTypes) {
182
+ HttpTypes["XHR"] = "xhr";
183
+ HttpTypes["FETCH"] = "fetch";
184
+ })(HttpTypes || (HttpTypes = {}));
185
+ var MethodTypes;
186
+ (function (MethodTypes) {
187
+ MethodTypes["Get"] = "GET";
188
+ MethodTypes["Post"] = "POST";
189
+ MethodTypes["Put"] = "PUT";
190
+ MethodTypes["Delete"] = "DELETE";
191
+ })(MethodTypes || (MethodTypes = {}));
192
+ var HTTP_CODE;
193
+ (function (HTTP_CODE) {
194
+ HTTP_CODE[HTTP_CODE["BAD_REQUEST"] = 400] = "BAD_REQUEST";
195
+ HTTP_CODE[HTTP_CODE["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
196
+ HTTP_CODE[HTTP_CODE["INTERNAL_EXCEPTION"] = 500] = "INTERNAL_EXCEPTION";
197
+ })(HTTP_CODE || (HTTP_CODE = {}));
198
+ var BREADCRUMBCATEGORYS;
199
+ (function (BREADCRUMBCATEGORYS) {
200
+ BREADCRUMBCATEGORYS["HTTP"] = "http";
201
+ BREADCRUMBCATEGORYS["USER"] = "user";
202
+ BREADCRUMBCATEGORYS["DEBUG"] = "debug";
203
+ BREADCRUMBCATEGORYS["EXCEPTION"] = "exception";
204
+ BREADCRUMBCATEGORYS["LIFECYCLE"] = "lifecycle";
205
+ })(BREADCRUMBCATEGORYS || (BREADCRUMBCATEGORYS = {}));
206
+
134
207
  var version = "1.0.1";
135
208
 
136
209
  var SDK_NAME = 'y-monitor';
@@ -1 +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 '@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 const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.esm.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/global.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type Callback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, Callback[]> = new Map();\n constructor() {}\n watch(eventName: T, callback: Callback) {\n const fns = this.events.get(eventName);\n if (fns) {\n this.events.set(eventName, fns.concat(callback));\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (error) {}\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n options: O;\n abstract breadcrumb: Breadcrumb;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform.apply(this, args);\n plugin.consumer.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -133,6 +133,79 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
133
133
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
134
134
  };
135
135
 
136
+ var BrowserEventTypes;
137
+ (function (BrowserEventTypes) {
138
+ BrowserEventTypes["DOM"] = "dom";
139
+ BrowserEventTypes["XHR"] = "xhr";
140
+ })(BrowserEventTypes || (BrowserEventTypes = {}));
141
+ var BrowserBreadcrumbTypes;
142
+ (function (BrowserBreadcrumbTypes) {
143
+ BrowserBreadcrumbTypes["ROUTE"] = "Route";
144
+ BrowserBreadcrumbTypes["CLICK"] = "Click";
145
+ BrowserBreadcrumbTypes["CONSOLE"] = "Console";
146
+ BrowserBreadcrumbTypes["XHR"] = "Xhr";
147
+ BrowserBreadcrumbTypes["FETCH"] = "Fetch";
148
+ BrowserBreadcrumbTypes["UNHANDLEDREJECTION"] = "Unhandledrejection";
149
+ BrowserBreadcrumbTypes["RESOURCE"] = "Resource";
150
+ BrowserBreadcrumbTypes["CODE_ERROR"] = "Code Error";
151
+ BrowserBreadcrumbTypes["CUSTOMER"] = "Customer";
152
+ })(BrowserBreadcrumbTypes || (BrowserBreadcrumbTypes = {}));
153
+
154
+ var ToStringTypes;
155
+ (function (ToStringTypes) {
156
+ ToStringTypes["String"] = "String";
157
+ ToStringTypes["Number"] = "Number";
158
+ ToStringTypes["Boolean"] = "Boolean";
159
+ ToStringTypes["RegExp"] = "RegExp";
160
+ ToStringTypes["Null"] = "Null";
161
+ ToStringTypes["Undefined"] = "Undefined";
162
+ ToStringTypes["Symbol"] = "Symbol";
163
+ ToStringTypes["Object"] = "Object";
164
+ ToStringTypes["Array"] = "Array";
165
+ ToStringTypes["process"] = "process";
166
+ ToStringTypes["Window"] = "Window";
167
+ ToStringTypes["Function"] = "Function";
168
+ })(ToStringTypes || (ToStringTypes = {}));
169
+ var ErrorTypes;
170
+ (function (ErrorTypes) {
171
+ ErrorTypes["UNKNOWN"] = "UNKNOWN";
172
+ ErrorTypes["UNKNOWN_FUNCTION"] = "UNKNOWN_FUNCTION";
173
+ ErrorTypes["JAVASCRIPT"] = "JAVASCRIPT";
174
+ ErrorTypes["LOG"] = "LOG";
175
+ ErrorTypes["HTTP"] = "HTTP";
176
+ ErrorTypes["VUE"] = "VUE";
177
+ ErrorTypes["REACT"] = "REACT";
178
+ ErrorTypes["RESOURCE"] = "RESOURCE";
179
+ ErrorTypes["PROMISE"] = "PROMISE";
180
+ ErrorTypes["ROUTE"] = "ROUTE";
181
+ })(ErrorTypes || (ErrorTypes = {}));
182
+ var HttpTypes;
183
+ (function (HttpTypes) {
184
+ HttpTypes["XHR"] = "xhr";
185
+ HttpTypes["FETCH"] = "fetch";
186
+ })(HttpTypes || (HttpTypes = {}));
187
+ var MethodTypes;
188
+ (function (MethodTypes) {
189
+ MethodTypes["Get"] = "GET";
190
+ MethodTypes["Post"] = "POST";
191
+ MethodTypes["Put"] = "PUT";
192
+ MethodTypes["Delete"] = "DELETE";
193
+ })(MethodTypes || (MethodTypes = {}));
194
+ var HTTP_CODE;
195
+ (function (HTTP_CODE) {
196
+ HTTP_CODE[HTTP_CODE["BAD_REQUEST"] = 400] = "BAD_REQUEST";
197
+ HTTP_CODE[HTTP_CODE["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
198
+ HTTP_CODE[HTTP_CODE["INTERNAL_EXCEPTION"] = 500] = "INTERNAL_EXCEPTION";
199
+ })(HTTP_CODE || (HTTP_CODE = {}));
200
+ var BREADCRUMBCATEGORYS;
201
+ (function (BREADCRUMBCATEGORYS) {
202
+ BREADCRUMBCATEGORYS["HTTP"] = "http";
203
+ BREADCRUMBCATEGORYS["USER"] = "user";
204
+ BREADCRUMBCATEGORYS["DEBUG"] = "debug";
205
+ BREADCRUMBCATEGORYS["EXCEPTION"] = "exception";
206
+ BREADCRUMBCATEGORYS["LIFECYCLE"] = "lifecycle";
207
+ })(BREADCRUMBCATEGORYS || (BREADCRUMBCATEGORYS = {}));
208
+
136
209
  var version = "1.0.1";
137
210
 
138
211
  var SDK_NAME = 'y-monitor';
package/dist/core.js.map CHANGED
@@ -1 +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 '@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 const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sources":["../src/subscribe.ts","../src/baseClient.ts","../../shared/src/browser.ts","../../shared/src/constant.ts","../../shared/src/config.ts","../../utils/src/global.ts","../../utils/src/logger.ts","../../utils/src/tools.ts","../../utils/src/queue.ts","../src/baseTransport.ts","../src/baseOptions.ts","../src/breadcrumb.ts"],"sourcesContent":["type Callback = (data: any) => any;\n\nexport class Subscribe<T> {\n events: Map<T, Callback[]> = new Map();\n constructor() {}\n watch(eventName: T, callback: Callback) {\n const fns = this.events.get(eventName);\n if (fns) {\n this.events.set(eventName, fns.concat(callback));\n return;\n }\n this.events.set(eventName, [callback]);\n }\n\n notify(eventName: T, data: any) {\n const fns = this.events.get(eventName);\n if (!eventName || !fns) return;\n fns.forEach((fn) => {\n try {\n fn(data);\n } catch (error) {}\n });\n }\n}\n","import { EventTypes } from '@y-monitor/shared';\nimport { BaseClientType, BaseOptionsFieldsIntegrationType, BaseOptionsType, BasePluginType, LogTypes } from '@y-monitor/types';\nimport { Subscribe } from './subscribe';\nimport { Breadcrumb } from './breadcrumb';\n\nexport abstract class BaseClient<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType, E extends EventTypes = EventTypes>\n implements BaseClientType\n{\n SDK_NAME: string;\n options: O;\n abstract breadcrumb: Breadcrumb;\n\n constructor(options: O) {\n this.options = options;\n }\n\n // 引用插件\n use(plugins: BasePluginType<E>[]) {\n const subscribe = new Subscribe<E>();\n plugins.forEach((plugin) => {\n plugin.monitor.call(this, subscribe.notify.bind(subscribe));\n const wrapperTransform = (...args: any[]) => {\n const res = plugin.transform.apply(this, args);\n plugin.consumer.call(this, res);\n };\n subscribe.watch(plugin.name, wrapperTransform);\n });\n }\n\n getOptions() {\n return this.options;\n }\n\n // 判断当前插件是否启用\n abstract isPluginEnable(name: EventTypes): boolean;\n\n // 每个plugin有自己上传data的方式\n abstract log(data: LogTypes): void;\n}\n","export enum BrowserEventTypes {\n DOM = 'dom',\n XHR = 'xhr'\n}\n\nexport enum BrowserBreadcrumbTypes {\n ROUTE = 'Route',\n CLICK = 'Click',\n CONSOLE = 'Console',\n XHR = 'Xhr',\n FETCH = 'Fetch',\n UNHANDLEDREJECTION = 'Unhandledrejection',\n RESOURCE = 'Resource',\n CODE_ERROR = 'Code Error',\n CUSTOMER = 'Customer'\n}\n","import { BrowserBreadcrumbTypes, BrowserEventTypes } from './browser';\n\nexport type EventTypes = BrowserEventTypes;\n\nexport type BreadcrumbTypes = BrowserBreadcrumbTypes;\n\nexport enum ToStringTypes {\n String = 'String',\n Number = 'Number',\n Boolean = 'Boolean',\n RegExp = 'RegExp',\n Null = 'Null',\n Undefined = 'Undefined',\n Symbol = 'Symbol',\n Object = 'Object',\n Array = 'Array',\n process = 'process',\n Window = 'Window',\n Function = 'Function'\n}\n\n/**\n * 上报错误类型\n */\nexport enum ErrorTypes {\n UNKNOWN = 'UNKNOWN',\n UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n JAVASCRIPT = 'JAVASCRIPT',\n LOG = 'LOG',\n HTTP = 'HTTP',\n VUE = 'VUE',\n REACT = 'REACT',\n RESOURCE = 'RESOURCE',\n PROMISE = 'PROMISE',\n ROUTE = 'ROUTE'\n}\n\nexport enum HttpTypes {\n XHR = 'xhr',\n FETCH = 'fetch'\n}\n\nexport enum MethodTypes {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Delete = 'DELETE'\n}\n\nexport enum HTTP_CODE {\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n INTERNAL_EXCEPTION = 500\n}\n\nexport const ERROR_TYPE_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nconst globalVar = {\n isLogAddBreadcrumb: true,\n crossOriginThreshold: 1000\n};\n\nexport const Silent = 'silent';\nexport { globalVar };\n\n/**\n * 用户行为类型\n */\nexport enum BREADCRUMBCATEGORYS {\n HTTP = 'http',\n USER = 'user',\n DEBUG = 'debug',\n EXCEPTION = 'exception',\n LIFECYCLE = 'lifecycle'\n}\n","export const SDK_NAME = 'y-monitor';\nimport { version } from '../package.json';\n\nexport const SDK_VERSION = version;\n","import { Logger } from './logger';\n\nexport const isBrowserEnv = typeof window !== 'undefined' ? window : 0;\n\nexport interface MonitorSupport {\n logger: Logger;\n}\n\ninterface MonitorGlobal {\n console?: Console;\n __MONITOR__?: MonitorSupport;\n}\n\nexport function getGlobal() {\n if (isBrowserEnv) return window as unknown as MonitorGlobal;\n}\n\nconst _global = getGlobal();\nconst _support = getGlobalMonitorSupport();\n\nfunction getGlobalMonitorSupport(): MonitorSupport {\n _global.__MONITOR__ = _global.__MONITOR__ || ({} as MonitorSupport);\n return _global.__MONITOR__;\n}\n\nexport { _global, _support };\n","import { _global, _support } from './global';\nconst PREFIX = 'MONITOR Logger';\n\nexport class Logger {\n private enabled = false;\n private _console: Console = {} as Console;\n constructor() {\n _global.console = console || _global.console;\n if (console || _global.console) {\n const logType = ['log', 'debug', 'info', 'warn', 'error', 'assert'];\n logType.forEach((level) => {\n if (!(level in _global.console)) return;\n this._console[level] = _global.console[level];\n });\n }\n }\n disable(): void {\n this.enabled = false;\n }\n\n bindOptions(debug: boolean): void {\n this.enabled = debug ? true : false;\n }\n\n enable(): void {\n this.enabled = true;\n }\n\n getEnableStatus() {\n return this.enabled;\n }\n\n log(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.log(`${PREFIX}[Log]:`, ...args);\n }\n warn(...args: any[]): void {\n if (!this.enabled) {\n return;\n }\n this._console.warn(`${PREFIX}[Warn]:`, ...args);\n }\n\n /**\n * error不需要开启enable也要打印出来,提示用户错误信息\n *\n * @param {...any[]} args\n * @memberof Logger\n */\n error(...args: any[]): void {\n this._console.error(`${PREFIX}[Error]:`, ...args);\n }\n}\n\nconst logger = _support.logger || (_support.logger = new Logger());\nexport { logger };\n","import { globalVar, ToStringTypes } from '@y-monitor/shared';\nimport { logger } from './logger';\nimport { IAnyObject } from '@y-monitor/types';\n\nexport function throttle(fn: Function, ms: number): Function {\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n isThrottled = true;\n\n fn.apply(this, arguments);\n\n setTimeout(function () {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nexport const nativeToString = Object.prototype.toString;\nexport function isType(type: string) {\n return function (value: any): boolean {\n return nativeToString.call(value) === `[object ${type}]`;\n };\n}\n\nexport function toStringAny(target: any, type: ToStringTypes): boolean {\n return nativeToString.call(target) === `[object ${type}]`;\n}\n\nexport function toStringValidateOption(target: any, targetName: string, expectType: ToStringTypes): boolean {\n if (toStringAny(target, expectType)) return true;\n typeof target !== 'undefined' && logger.error(`${targetName}期望传入:${expectType}类型,当前是:${nativeToString.call(target)}类型`);\n return false;\n}\n\nexport function validateOptionsAndSet(this: any, targetArr: [any, string, ToStringTypes][]) {\n targetArr.forEach(([target, targetName, expectType]) => toStringValidateOption(target, targetName, expectType) && (this[targetName] = target));\n}\n\n/**\n * 检测变量类型\n * @param type\n */\nexport const variableTypeDetection = {\n isNumber: isType(ToStringTypes.Number),\n isString: isType(ToStringTypes.String),\n isBoolean: isType(ToStringTypes.Boolean),\n isNull: isType(ToStringTypes.Null),\n isUndefined: isType(ToStringTypes.Undefined),\n isSymbol: isType(ToStringTypes.Symbol),\n isFunction: isType(ToStringTypes.Function),\n isObject: isType(ToStringTypes.Object),\n isArray: isType(ToStringTypes.Array),\n isProcess: isType(ToStringTypes.process),\n isWindow: isType(ToStringTypes.Window)\n};\n\n/**\n * 检测是否是空字符、undefined、null\n *\n * @export\n * @param {*} wat\n * @return {*} {boolean}\n */\nexport function isEmpty(wat: any): boolean {\n return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null;\n}\n\n/**\n * 安全的转换对象,包括循环引用,如果是循环引用就返回Circular\n *\n * @export\n * @param {object} obj 需要转换的对象\n * @return {*} {string}\n */\nexport function safeStringify(obj: object): string {\n const set = new Set();\n const str = JSON.stringify(obj, function (_key, value) {\n if (set.has(value)) {\n return 'Circular';\n }\n typeof value === 'object' && set.add(value);\n return value;\n });\n set.clear();\n return str;\n}\n\n/**\n * 重写对象上面的某个属性\n *\n * @export\n * @param {IAnyObject} source 需要被重写的对象\n * @param {string} name 需要被重写对象的key\n * @param {(...args: any[]) => any} replacement 以原有的函数作为参数,执行并重写原有函数\n * @param {boolean} [isForced=false] 是否强制重写(可能原先没有该属性)\n */\nexport function replaceOld(source: IAnyObject, name: string, replacement: (...args: any[]) => any, isForced = false): void {\n if (source === undefined) return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n source[name] = wrapped;\n }\n }\n}\n\n/**\n * 获取当前的时间戳\n *\n * @export\n * @return {*} {number}\n */\nexport function getTimestamp(): number {\n return Date.now();\n}\n\n/**\n * 原子字符中是否包含目标字符\n *\n * @export\n * @param {string} origin 原字符\n * @param {string} target 目标字符\n * @return {*} {boolean}\n */\nexport function isInclude(origin: string, target: string): boolean {\n return !!~origin.indexOf(target);\n}\n\ntype TotalEventName = keyof GlobalEventHandlersEventMap | keyof XMLHttpRequestEventTargetEventMap | keyof WindowEventMap;\n\n/**\n * 添加事件监听器\n *\n * @export\n * @param {{ addEventListener: Function }} target 目标对象\n * @param {TotalEventName} eventName 目标对象上的事件名\n * @param {Function} handler 回调函数\n * @param {(boolean | unknown)} [opitons=false] useCapture默认为false\n */\nexport function on(target: { addEventListener: Function }, eventName: TotalEventName, handler: Function, opitons: boolean | unknown = false): void {\n target.addEventListener(eventName, handler, opitons);\n}\n\nexport function getLocationHref(): string {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\n/**\n * 如果用户输入console,并且logger是打开的会造成无限递归,执行callback前,会把监听console的行为关掉\n *\n * @export\n * @param {Function} callback\n */\nexport function silentConsoleScope(callback: Function) {\n globalVar.isLogAddBreadcrumb = false;\n callback();\n globalVar.isLogAddBreadcrumb = true;\n}\n\nexport function getUrlWithEnv(): string {\n return getLocationHref();\n}\n","import { _global } from './global';\nexport class Queue {\n private readonly micro: Promise<void>;\n private stack: any[] = [];\n private isFlushing = false;\n constructor() {\n if (!('Promise' in _global)) return;\n this.micro = Promise.resolve();\n }\n addTask(fn: () => void): void {\n if (typeof fn !== 'function') return;\n if (!('Promise' in _global)) {\n fn();\n return;\n }\n this.stack.push(fn);\n if (!this.isFlushing) {\n this.isFlushing = true;\n this.micro.then(() => this.flushStack());\n }\n }\n clear() {\n this.stack = [];\n }\n getStack() {\n return this.stack;\n }\n flushStack(): void {\n const temp = this.stack.slice(0);\n this.stack.length = 0;\n this.isFlushing = false;\n for (const fn of temp) {\n fn();\n }\n }\n // rollup queue\n}\n","import { ToStringTypes, SDK_NAME, SDK_VERSION } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, AuthInfo, ReportDataType, TransportDataType, BreadcrumbPushDataType } from '@y-monitor/types';\nimport { isEmpty, isInclude, validateOptionsAndSet, logger, Queue } from '@y-monitor/utils';\n\nexport abstract class BaseTransport<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n dsn = '';\n apiKey = '';\n beforeDataReport = null;\n queue: Queue;\n\n constructor() {\n this.queue = new Queue();\n }\n\n /**\n * 绑定配置\n */\n bindOptions(options: Partial<O>) {\n const { dsn, apiKey, beforeDataReport } = options;\n const optionArr = [\n [dsn, 'dsn', ToStringTypes.String],\n [apiKey, 'apiKey', ToStringTypes.String],\n [beforeDataReport, 'beforeDataReport', ToStringTypes.Function]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n\n /**\n * 获取当前SDK信息\n *\n * @return {*} {AuthInfo}\n * @memberof BaseTransport\n */\n getAuthInfo(): AuthInfo {\n const result: AuthInfo = {\n sdkVersion: SDK_VERSION,\n sdkName: SDK_NAME,\n apiKey: this.apiKey\n };\n return result;\n }\n\n async send(data: any, breadcrumb: BreadcrumbPushDataType[] = []): Promise<void> {\n let transportData = {\n ...this.getTransportData(data),\n breadcrumb\n };\n if (typeof this.beforeDataReport === 'function') {\n transportData = await this.beforeDataReport(transportData);\n if (!transportData) return;\n }\n let dsn = this.dsn;\n if (isEmpty(dsn)) {\n logger.error('dsn is empty,please check');\n return;\n }\n return this.sendToServer(transportData, dsn);\n }\n\n /**\n * 判断当前url是不是你配置的dsn\n *\n * @param {string} targetUrl\n * @return {*} {boolean}\n * @memberof BaseTransport\n */\n isSelfDsn(targetUrl: string): boolean {\n return this.dsn && isInclude(targetUrl, this.dsn);\n }\n\n /**\n * 最终上报到服务器的方法,需要子类重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract sendToServer(data: TransportDataType | any, url): void;\n\n /**\n * post方式,子类需要重写\n *\n * @abstract\n * @param {(TransportDataType | any)} data\n * @param {string} url\n * @memberof BaseTransport\n */\n abstract post(data: TransportDataType | any, url: string): void;\n\n abstract getTransportData(data: ReportDataType): TransportDataType;\n}\n","/**\n * 基础配置绑定\n */\n\nimport { ToStringTypes } from '@y-monitor/shared';\nimport { BaseOptionsFieldsIntegrationType, BaseOptionsType } from '@y-monitor/types';\nimport { validateOptionsAndSet } from '@y-monitor/utils';\n\nexport class BaseOptions<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> implements BaseOptionsType<O> {\n throttleDelayTime = 0;\n filterXhrUrlRegExp: RegExp;\n includeHttpUrlTraceIdRegExp = /.*/;\n\n constructor() {}\n\n isFilterHttpUrl(url: string): boolean {\n return this.filterXhrUrlRegExp && this.filterXhrUrlRegExp.test(url);\n }\n\n bindOptions(options: O): void {\n const { throttleDelayTime, filterXhrUrlRegExp, includeHttpUrlTraceIdRegExp } = options;\n const optionArr = [\n [throttleDelayTime, 'throttleDelayTime', ToStringTypes.Number],\n [filterXhrUrlRegExp, 'filterXhrUrlRegExp', ToStringTypes.RegExp],\n [includeHttpUrlTraceIdRegExp, 'includeHttpUrlTraceIdRegExp', ToStringTypes.RegExp]\n ];\n validateOptionsAndSet.call(this, optionArr);\n }\n}\n","import { ToStringTypes } from '@y-monitor/shared';\nimport { logger, getTimestamp, silentConsoleScope, toStringValidateOption } from '@y-monitor/utils';\nimport { BaseOptionsFieldsIntegrationType, BreadcrumbPushDataType } from '@y-monitor/types';\n\n/**\n * 用户行为栈存储,实体类\n *\n * @export\n * @class Breadcrumb\n * @template O\n */\nexport class Breadcrumb<O extends BaseOptionsFieldsIntegrationType = BaseOptionsFieldsIntegrationType> {\n private maxBreadcrumbs = 10;\n private beforePushBreadcrumb: unknown = null;\n private stack: BreadcrumbPushDataType[] = [];\n constructor(options: Partial<O> = {}) {\n this.bindOptions(options);\n }\n /**\n * 添加用户行为栈\n *\n * @param {BreadcrumbPushDataType} data\n * @memberof Breadcrumb\n */\n push(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n if (typeof this.beforePushBreadcrumb === 'function') {\n let result: BreadcrumbPushDataType = null;\n const beforePushBreadcrumb = this.beforePushBreadcrumb;\n silentConsoleScope(() => {\n result = beforePushBreadcrumb.call(this, this, data);\n });\n if (!result) return this.stack;\n return this.immediatePush(result);\n }\n return this.immediatePush(data);\n }\n\n private immediatePush(data: BreadcrumbPushDataType): BreadcrumbPushDataType[] {\n data.time || (data.time = getTimestamp());\n if (this.stack.length >= this.maxBreadcrumbs) {\n this.shift();\n }\n this.stack.push(data);\n // make sure xhr fetch is behind button click\n this.stack.sort((a, b) => a.time - b.time);\n logger.log(this.stack);\n return this.stack;\n }\n\n private shift(): boolean {\n return this.stack.shift() !== undefined;\n }\n\n clear(): void {\n this.stack = [];\n }\n\n getStack(): BreadcrumbPushDataType[] {\n return this.stack;\n }\n\n bindOptions(options: Partial<O> = {}): void {\n const maxBreadcrumbs = options.maxBreadcrumbs;\n const beforePushBreadcrumb = options.beforePushBreadcrumb\n toStringValidateOption(maxBreadcrumbs, 'maxBreadcrumbs', ToStringTypes.Number) && (this.maxBreadcrumbs = maxBreadcrumbs);\n toStringValidateOption(beforePushBreadcrumb, 'beforePushBreadcrumb', ToStringTypes.Function) &&\n (this.beforePushBreadcrumb = beforePushBreadcrumb);\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/core.min.js CHANGED
@@ -1 +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.1",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}({});
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.1",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}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@y-monitor/core",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "",
5
5
  "main": "dist/core.js",
6
6
  "module": "dist/core.esm.js",
@@ -18,9 +18,9 @@
18
18
  "author": "Joanna",
19
19
  "license": "ISC",
20
20
  "dependencies": {
21
- "@y-monitor/shared": "^1.0.1",
22
- "@y-monitor/types": "^1.0.2",
23
- "@y-monitor/utils": "^1.0.3"
21
+ "@y-monitor/shared": "^1.0.3",
22
+ "@y-monitor/types": "^1.0.4",
23
+ "@y-monitor/utils": "^1.0.5"
24
24
  },
25
- "gitHead": "bd3b66f326332b089ef52f7e85cc105bf370772d"
25
+ "gitHead": "41ec475b837a5f099bebd039b5ca4c35e5113656"
26
26
  }