@zhongxiaobing/monitor-vue 0.1.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/README.md +51 -0
- package/dist/index.d.mts +133 -0
- package/dist/index.d.ts +133 -0
- package/dist/index.js +750 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +723 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../monitor-shared/src/utils/uuid.ts","../../monitor-shared/src/utils/error.ts","../../monitor-shared/src/utils/browser.ts","../../monitor-transport/src/queue.ts","../../monitor-transport/src/sender.ts","../../monitor-core/src/context.ts","../../monitor-core/src/plugin-system.ts","../../monitor-core/src/monitor.ts","../../monitor-plugin-blank-screen/src/dedupe.ts","../../monitor-plugin-blank-screen/src/root.ts","../../monitor-plugin-blank-screen/src/sampler.ts","../../monitor-plugin-blank-screen/src/score.ts","../../monitor-plugin-blank-screen/src/detect.ts","../../monitor-plugin-blank-screen/src/normalize.ts","../../monitor-plugin-blank-screen/src/route-change.ts","../../monitor-plugin-blank-screen/src/index.ts","../../monitor-plugin-error/src/normalize.ts","../../monitor-plugin-error/src/unhandledrejection.ts","../../monitor-plugin-error/src/onerror.ts","../../monitor-plugin-error/src/index.ts","../../monitor-plugin-network/src/normalize.ts","../../monitor-plugin-network/src/url.ts","../../monitor-plugin-network/src/patch-fetch.ts","../../monitor-plugin-network/src/index.ts","../src/symbols.ts","../src/plugin.ts","../src/createVueMonitor.ts","../src/useMonitor.ts"],"sourcesContent":["export function createEventId() {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID()\n }\n\n return `evt_${Date.now()}_${Math.random().toString(16).slice(2)}`\n}\n","interface NormalizedError {\n name?: string\n message: string\n stack?: string\n}\n\nexport function normalizeError(error: unknown): NormalizedError {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack\n }\n }\n\n if (typeof error === 'string') {\n return {\n message: error\n }\n }\n\n if (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof (error as { message?: unknown }).message === 'string'\n ) {\n const maybeError = error as { name?: unknown; message: string; stack?: unknown }\n\n return {\n name: typeof maybeError.name === 'string' ? maybeError.name : undefined,\n message: maybeError.message,\n stack: typeof maybeError.stack === 'string' ? maybeError.stack : undefined\n }\n }\n\n return {\n message: 'Unknown error'\n }\n}\n","export function getLocationInfo() {\n return {\n url: window.location.href,\n pathname: window.location.pathname,\n title: document.title,\n userAgent: navigator.userAgent\n }\n}\n","import type { MonitorEvent } from '@company/monitor-types'\n\nexport class EventQueue {\n private events: MonitorEvent[] = []\n\n add(event: MonitorEvent) {\n this.events.push(event)\n }\n\n drain() {\n const current = [...this.events]\n this.events = []\n return current\n }\n\n size() {\n return this.events.length\n }\n}\n","import type { MonitorEvent } from '@company/monitor-types'\n\nexport async function sendEvents(dsn: string, events: MonitorEvent[]) {\n if (!events.length) return\n\n if (navigator.sendBeacon) {\n const blob = new Blob([JSON.stringify({ events })], {\n type: 'application/json'\n })\n navigator.sendBeacon(dsn, blob)\n return\n }\n\n await fetch(dsn, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ events }),\n keepalive: true\n })\n}\n","import type { MonitorInitOptions } from '@company/monitor-types'\nimport { getLocationInfo } from '@company/monitor-shared'\n\nexport function createBaseContext(options: MonitorInitOptions) {\n const locationInfo = getLocationInfo()\n\n return {\n appId: options.appId,\n appName: options.appName,\n env: options.env,\n release: options.release,\n ...locationInfo\n }\n}\n","import type {\n MonitorApi,\n MonitorInitOptions,\n MonitorPlugin\n} from '@company/monitor-types'\n\nexport function setupPlugins(\n plugins: MonitorPlugin[],\n api: MonitorApi,\n options: MonitorInitOptions\n) {\n const disposers: Array<() => void> = []\n\n for (const plugin of plugins) {\n const disposer = plugin.setup({ api, options })\n if (typeof disposer === 'function') {\n disposers.push(disposer)\n }\n }\n\n return () => {\n for (const dispose of disposers) {\n dispose()\n }\n }\n}\n","import type {\n ExceptionEvent,\n MonitorApi,\n MonitorEvent,\n MonitorInitOptions\n} from '@company/monitor-types'\nimport { createEventId, normalizeError } from '@company/monitor-shared'\nimport { EventQueue, sendEvents } from '@company/monitor-transport'\nimport { createBaseContext } from './context'\nimport { setupPlugins } from './plugin-system'\n\nexport class Monitor implements MonitorApi {\n private queue = new EventQueue()\n private options: MonitorInitOptions\n private context: ReturnType<typeof createBaseContext>\n private disposePlugins: (() => void) | null = null\n\n constructor(options: MonitorInitOptions) {\n this.options = options\n this.context = createBaseContext(options)\n this.disposePlugins = setupPlugins(options.plugins ?? [], this, options)\n }\n\n emit(event: MonitorEvent) {\n const mergedEvent: MonitorEvent = {\n ...this.context,\n ...event,\n appId: event.appId || this.context.appId,\n appName: event.appName || this.context.appName,\n env: event.env || this.context.env,\n release: event.release || this.context.release,\n url: event.url || this.context.url,\n pathname: event.pathname || this.context.pathname,\n title: event.title || this.context.title,\n userAgent: event.userAgent || this.context.userAgent,\n eventId: event.eventId || createEventId(),\n timestamp: event.timestamp || Date.now()\n }\n\n const finalEvent = this.options.beforeSend\n ? this.options.beforeSend(mergedEvent)\n : mergedEvent\n\n if (!finalEvent) return\n\n this.queue.add(finalEvent)\n void this.flush()\n }\n\n captureException(error: unknown, extra?: Record<string, unknown>) {\n const normalized = normalizeError(error)\n\n const event: ExceptionEvent = {\n eventId: '',\n eventType: 'exception',\n appId: '',\n env: '',\n url: '',\n pathname: '',\n title: '',\n timestamp: 0,\n userAgent: '',\n extra,\n error: {\n name: normalized.name,\n message: normalized.message,\n stack: normalized.stack,\n source: 'react'\n }\n }\n\n this.emit(event)\n }\n\n async flush() {\n const events = this.queue.drain()\n await sendEvents(this.options.dsn, events)\n }\n\n destroy() {\n this.disposePlugins?.()\n this.disposePlugins = null\n }\n}\n\nexport function initMonitor(options: MonitorInitOptions) {\n return new Monitor(options)\n}\n","interface BlankScreenDedupeInput {\n pathname: string\n trigger: 'initial' | 'route_change' | 'manual'\n score: number\n}\n\nfunction normalizeScore(score: number) {\n return score.toFixed(1)\n}\n\nfunction createDedupeKey(input: BlankScreenDedupeInput) {\n return [input.pathname, input.trigger, normalizeScore(input.score)].join('|')\n}\n\nexport function createBlankScreenDedupe(windowMs: number) {\n const cache = new Map<string, number>()\n\n function shouldReport(input: BlankScreenDedupeInput) {\n const now = Date.now()\n const key = createDedupeKey(input)\n const lastReportedAt = cache.get(key)\n\n if (!lastReportedAt || now - lastReportedAt > windowMs) {\n cache.set(key, now)\n return true\n }\n\n return false\n }\n\n function cleanup() {\n const now = Date.now()\n\n for (const [key, timestamp] of cache.entries()) {\n if (now - timestamp > windowMs) {\n cache.delete(key)\n }\n }\n }\n\n return {\n shouldReport,\n cleanup\n }\n}\n","export function getRootElement(rootSelector?: string) {\n if (rootSelector) {\n const customRoot = document.querySelector(rootSelector)\n if (customRoot) {\n return customRoot\n }\n }\n\n const appRoot = document.querySelector('#app')\n if (appRoot) {\n return appRoot\n }\n\n const reactRoot = document.querySelector('#root')\n if (reactRoot) {\n return reactRoot\n }\n\n return document.body\n}\n","const DEFAULT_SAMPLE_POINTS: Array<[number, number]> = [\n [0.5, 0.5],\n [0.2, 0.2],\n [0.5, 0.2],\n [0.8, 0.2],\n [0.2, 0.5],\n [0.8, 0.5],\n [0.2, 0.8],\n [0.5, 0.8],\n [0.8, 0.8]\n]\n\nexport function getSamplePoints(samplePoints?: Array<[number, number]>) {\n return samplePoints?.length ? samplePoints : DEFAULT_SAMPLE_POINTS\n}\n\nexport function sampleElements(points: Array<[number, number]>) {\n const width = window.innerWidth\n const height = window.innerHeight\n\n return points.map(([xRatio, yRatio]) => {\n const x = Math.floor(width * xRatio)\n const y = Math.floor(height * yRatio)\n const element = document.elementFromPoint(x, y)\n\n return {\n x,\n y,\n element\n }\n })\n}\n","function matchesIgnoreSelectors(\n element: Element,\n ignoreSelectors: string[]\n) {\n return ignoreSelectors.some((selector) => {\n try {\n return element.matches(selector) || !!element.closest(selector)\n } catch {\n return false\n }\n })\n}\n\nfunction isContainerElement(element: Element, rootElement: Element) {\n const tagName = element.tagName.toLowerCase()\n\n if (tagName === 'html' || tagName === 'body') {\n return true\n }\n\n if (element === rootElement) {\n return true\n }\n\n return false\n}\n\nfunction getElementSummary(element: Element | null) {\n if (!element) return 'null'\n\n const tagName = element.tagName.toLowerCase()\n const id = element.id ? `#${element.id}` : ''\n const className =\n typeof element.className === 'string' && element.className.trim()\n ? `.${element.className.trim().split(/\\s+/).join('.')}`\n : ''\n\n return `${tagName}${id}${className}`\n}\n\nexport function calculateBlankScore(\n sampledElements: Array<{ element: Element | null }>,\n rootElement: Element,\n ignoreSelectors: string[]\n) {\n let blankCount = 0\n\n const domSummary = sampledElements.map(({ element }) => {\n if (!element) {\n blankCount += 1\n return 'null'\n }\n\n if (matchesIgnoreSelectors(element, ignoreSelectors)) {\n blankCount += 1\n return `${getElementSummary(element)}(ignored)`\n }\n\n if (isContainerElement(element, rootElement)) {\n blankCount += 1\n return `${getElementSummary(element)}(container)`\n }\n\n return getElementSummary(element)\n })\n\n return {\n score: sampledElements.length ? blankCount / sampledElements.length : 0,\n domSummary\n }\n}\n","import { getRootElement } from './root'\nimport { getSamplePoints, sampleElements } from './sampler'\nimport { calculateBlankScore } from './score'\nimport type { BlankScreenPluginOptions } from './types'\n\nexport interface BlankScreenDetectionResult {\n score: number\n rootSelector?: string\n domSummary: string[]\n}\n\nexport function runBlankScreenCheck(options: BlankScreenPluginOptions) {\n const {\n rootSelector,\n scoreThreshold = 0.8,\n samplePoints,\n ignoreSelectors = []\n } = options\n\n const rootElement = getRootElement(rootSelector)\n const points = getSamplePoints(samplePoints)\n const sampledElements = sampleElements(points)\n const { score, domSummary } = calculateBlankScore(\n sampledElements,\n rootElement,\n ignoreSelectors\n )\n\n if (score < scoreThreshold) {\n return null\n }\n\n return {\n score,\n rootSelector,\n domSummary\n } satisfies BlankScreenDetectionResult\n}\n","import type { BlankScreenEvent } from '@company/monitor-types'\n\ninterface CreateBlankScreenEventParams {\n score: number\n rootSelector?: string\n domSummary: string[]\n trigger: 'initial' | 'route_change' | 'manual'\n}\n\nexport function createBlankScreenEvent({\n score,\n rootSelector,\n domSummary,\n trigger\n}: CreateBlankScreenEventParams): BlankScreenEvent {\n return {\n eventId: '',\n eventType: 'blank_screen',\n appId: '',\n env: '',\n url: '',\n pathname: '',\n title: '',\n timestamp: 0,\n userAgent: '',\n blankScreen: {\n score,\n rootSelector,\n domSummary,\n readyState: document.readyState,\n trigger\n }\n }\n}\n","export function registerRouteChangeListener(onRouteChange: () => void) {\n const originalPushState = history.pushState\n const originalReplaceState = history.replaceState\n\n const handleRouteChange = () => {\n onRouteChange()\n }\n\n history.pushState = function (...args) {\n const result = originalPushState.apply(this, args)\n handleRouteChange()\n return result\n }\n\n history.replaceState = function (...args) {\n const result = originalReplaceState.apply(this, args)\n handleRouteChange()\n return result\n }\n\n window.addEventListener('popstate', handleRouteChange)\n window.addEventListener('hashchange', handleRouteChange)\n\n return () => {\n history.pushState = originalPushState\n history.replaceState = originalReplaceState\n window.removeEventListener('popstate', handleRouteChange)\n window.removeEventListener('hashchange', handleRouteChange)\n }\n}\n","import type { MonitorPlugin } from '@company/monitor-types'\nimport { createBlankScreenDedupe } from './dedupe'\nimport { runBlankScreenCheck } from './detect'\nimport { createBlankScreenEvent } from './normalize'\nimport { registerRouteChangeListener } from './route-change'\nimport type { BlankScreenPluginOptions } from './types'\n\nexport function blankScreenPlugin(\n options: BlankScreenPluginOptions = {}\n): MonitorPlugin {\n const {\n delayMs = 3000,\n detectOnRouteChange = true,\n routeChangeDelayMs = 2000,\n dedupeWindowMs = 10000\n } = options\n\n return {\n name: 'blank-screen-plugin',\n setup({ api }) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return\n }\n\n const dedupe = createBlankScreenDedupe(dedupeWindowMs)\n\n const emitIfNeeded = (trigger: 'initial' | 'route_change' | 'manual') => {\n dedupe.cleanup()\n\n const result = runBlankScreenCheck(options)\n if (!result) {\n return\n }\n\n const pathname = window.location.pathname\n const shouldReport = dedupe.shouldReport({\n pathname,\n trigger,\n score: result.score\n })\n\n if (!shouldReport) {\n return\n }\n\n api.emit(\n createBlankScreenEvent({\n score: result.score,\n rootSelector: result.rootSelector,\n domSummary: result.domSummary,\n trigger\n })\n )\n }\n\n const initialTimer = window.setTimeout(() => {\n emitIfNeeded('initial')\n }, delayMs)\n\n let routeTimer: number | null = null\n\n const disposeRouteChange = detectOnRouteChange\n ? registerRouteChangeListener(() => {\n if (routeTimer !== null) {\n window.clearTimeout(routeTimer)\n }\n\n routeTimer = window.setTimeout(() => {\n emitIfNeeded('route_change')\n }, routeChangeDelayMs)\n })\n : () => {}\n\n return () => {\n window.clearTimeout(initialTimer)\n\n if (routeTimer !== null) {\n window.clearTimeout(routeTimer)\n }\n\n disposeRouteChange()\n }\n }\n }\n}\n\nexport type { BlankScreenPluginOptions } from './types'\n","import type { ExceptionEvent } from '@company/monitor-types'\nimport { normalizeError } from '@company/monitor-shared'\n\ninterface CreateExceptionEventParams {\n error: unknown\n source: 'window.onerror' | 'unhandledrejection'\n}\n\nexport function createExceptionEvent({\n error,\n source\n}: CreateExceptionEventParams): ExceptionEvent {\n const normalized = normalizeError(error)\n\n return {\n eventId: '',\n eventType: 'exception',\n appId: '',\n env: '',\n url: '',\n pathname: '',\n title: '',\n timestamp: 0,\n userAgent: '',\n error: {\n name: normalized.name,\n message: normalized.message,\n stack: normalized.stack,\n source\n }\n }\n}\n","import type { MonitorApi } from '@company/monitor-types'\nimport { createExceptionEvent } from './normalize'\n\nexport function registerUnhandledRejection(api: MonitorApi) {\n const handler = (event: PromiseRejectionEvent) => {\n const exceptionEvent = createExceptionEvent({\n error: event.reason,\n source: 'unhandledrejection'\n })\n\n api.emit(exceptionEvent)\n }\n\n window.addEventListener('unhandledrejection', handler)\n\n return () => {\n window.removeEventListener('unhandledrejection', handler)\n }\n}\n","import type { MonitorApi } from '@company/monitor-types'\nimport { createExceptionEvent } from './normalize'\n\nexport function registerWindowOnError(api: MonitorApi) {\n const handler = (\n message: Event | string,\n _source?: string,\n _lineno?: number,\n _colno?: number,\n error?: Error\n ) => {\n const targetError = error ?? message\n const event = createExceptionEvent({\n error: targetError,\n source: 'window.onerror'\n })\n\n api.emit(event)\n return false\n }\n\n window.onerror = handler\n\n return () => {\n if (window.onerror === handler) {\n window.onerror = null\n }\n }\n}\n","import type { MonitorPlugin } from '@company/monitor-types'\nimport { registerUnhandledRejection } from './unhandledrejection'\nimport { registerWindowOnError } from './onerror'\nimport type { ErrorPluginOptions } from './types'\n\nexport function errorPlugin(options: ErrorPluginOptions = {}): MonitorPlugin {\n const {\n captureOnError = true,\n captureUnhandledRejection = true\n } = options\n\n return {\n name: 'error-plugin',\n setup({ api }) {\n const disposers: Array<() => void> = []\n\n if (captureOnError) {\n disposers.push(registerWindowOnError(api))\n }\n\n if (captureUnhandledRejection) {\n disposers.push(registerUnhandledRejection(api))\n }\n\n return () => {\n for (const dispose of disposers) {\n dispose()\n }\n }\n }\n }\n}\n\nexport type { ErrorPluginOptions } from './types'\n","import type { HttpErrorEvent } from '@company/monitor-types'\n\ninterface CreateHttpErrorEventParams {\n url: string\n method: string\n status?: number\n duration: number\n responseMessage?: string\n}\n\nexport function createHttpErrorEvent({\n url,\n method,\n status,\n duration,\n responseMessage\n}: CreateHttpErrorEventParams): HttpErrorEvent {\n return {\n eventId: '',\n eventType: 'http_error',\n appId: '',\n env: '',\n url: '',\n pathname: '',\n title: '',\n timestamp: 0,\n userAgent: '',\n request: {\n url,\n method,\n status,\n duration,\n success: false,\n source: 'fetch'\n },\n response: {\n message: responseMessage\n }\n }\n}\n","export function resolveUrlObject(url: string) {\n return new URL(url, window.location.origin)\n}\n\nexport function isMonitorRequest(requestUrl: string, dsn: string) {\n try {\n const request = resolveUrlObject(requestUrl)\n const target = resolveUrlObject(dsn)\n\n return (\n request.origin === target.origin &&\n request.pathname === target.pathname\n )\n } catch {\n return requestUrl === dsn\n }\n}\n","import type { MonitorApi, MonitorInitOptions } from '@company/monitor-types'\nimport { createHttpErrorEvent } from './normalize'\nimport type { NetworkPluginOptions } from './types'\nimport { isMonitorRequest } from './url'\n\nexport function patchFetch(\n api: MonitorApi,\n sdkOptions: MonitorInitOptions,\n options: NetworkPluginOptions\n) {\n if (typeof window === 'undefined' || typeof window.fetch !== 'function') {\n return () => {}\n }\n\n const originalFetch = window.fetch.bind(window)\n const {\n capture5xx = true,\n captureNetworkError = true\n } = options\n\n window.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {\n const method = (init?.method || 'GET').toUpperCase()\n const requestUrl =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.toString()\n : input.url\n\n if (isMonitorRequest(requestUrl, sdkOptions.dsn)) {\n return originalFetch(input, init)\n }\n\n const startedAt = Date.now()\n\n try {\n const response = await originalFetch(input, init)\n const duration = Date.now() - startedAt\n\n if (capture5xx && response.status >= 500) {\n api.emit(\n createHttpErrorEvent({\n url: requestUrl,\n method,\n status: response.status,\n duration,\n responseMessage: response.statusText\n })\n )\n }\n\n return response\n } catch (error) {\n const duration = Date.now() - startedAt\n\n if (captureNetworkError) {\n api.emit(\n createHttpErrorEvent({\n url: requestUrl,\n method,\n duration,\n responseMessage:\n error instanceof Error ? error.message : 'Fetch request failed'\n })\n )\n }\n\n throw error\n }\n }\n\n return () => {\n window.fetch = originalFetch\n }\n}\n","import type { MonitorPlugin } from '@company/monitor-types'\nimport { patchFetch } from './patch-fetch'\nimport type { NetworkPluginOptions } from './types'\n\nexport function networkPlugin(\n options: NetworkPluginOptions = {}\n): MonitorPlugin {\n return {\n name: 'network-plugin',\n setup({ api, options: sdkOptions }) {\n const disposeFetch = patchFetch(api, sdkOptions, options)\n\n return () => {\n disposeFetch()\n }\n }\n }\n}\n\nexport type { NetworkPluginOptions } from './types'\n","export const monitorInjectionKey = Symbol('monitor')\n","import type { App } from 'vue'\nimport type { MonitorApi } from '@company/monitor-types'\nimport { monitorInjectionKey } from './symbols'\n\nexport function createVueMonitorPlugin(monitor: MonitorApi) {\n return {\n install(app: App) {\n app.provide(monitorInjectionKey, monitor)\n\n const previousErrorHandler = app.config.errorHandler\n\n app.config.errorHandler = (error, instance, info) => {\n monitor.captureException(error, {\n vueInfo: info\n })\n\n previousErrorHandler?.(error, instance, info)\n }\n }\n }\n}\n","import type { App, Plugin } from 'vue'\nimport { initMonitor } from '@company/monitor-core'\nimport { blankScreenPlugin, type BlankScreenPluginOptions } from '@company/monitor-plugin-blank-screen'\nimport { errorPlugin, type ErrorPluginOptions } from '@company/monitor-plugin-error'\nimport { networkPlugin, type NetworkPluginOptions } from '@company/monitor-plugin-network'\nimport type { MonitorInitOptions, MonitorApi, MonitorPlugin } from '@company/monitor-types'\nimport { createVueMonitorPlugin } from './plugin'\n\nexport type DefaultVueMonitorPluginName = 'error' | 'network' | 'blankScreen'\n\nexport interface CreateVueMonitorOptions\n extends Omit<MonitorInitOptions, 'plugins'> {\n plugins?: MonitorPlugin[]\n disableDefaultPlugins?: DefaultVueMonitorPluginName[]\n error?: ErrorPluginOptions\n network?: NetworkPluginOptions\n blankScreen?: BlankScreenPluginOptions\n}\n\nexport interface VueMonitorInstance {\n monitor: MonitorApi\n plugin: Plugin\n install: (app: App) => void\n}\n\nexport function createVueMonitor(\n options: CreateVueMonitorOptions\n): VueMonitorInstance {\n const monitor = initMonitor({\n ...options,\n plugins: [\n ...getDefaultPlugins(options),\n ...(options.plugins ?? [])\n ]\n })\n\n const plugin = createVueMonitorPlugin(monitor)\n\n return {\n monitor,\n plugin,\n install(app: App) {\n app.use(plugin)\n }\n }\n}\n\nfunction getDefaultPlugins(options: CreateVueMonitorOptions): MonitorPlugin[] {\n const disabled = new Set(options.disableDefaultPlugins ?? [])\n const plugins: MonitorPlugin[] = []\n\n if (!disabled.has('error')) {\n plugins.push(errorPlugin(options.error))\n }\n\n if (!disabled.has('network')) {\n plugins.push(networkPlugin(options.network))\n }\n\n if (!disabled.has('blankScreen')) {\n plugins.push(blankScreenPlugin(options.blankScreen))\n }\n\n return plugins\n}\n","import { inject } from 'vue'\nimport type { MonitorApi } from '@company/monitor-types'\nimport { monitorInjectionKey } from './symbols'\n\nexport function useMonitor() {\n const monitor = inject<MonitorApi | null>(monitorInjectionKey, null)\n\n if (!monitor) {\n throw new Error('Monitor instance is not provided')\n }\n\n return monitor\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zhongxiaobing/monitor-vue",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Vue bindings for @company/monitor",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": ["dist"],
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"keywords": ["monitor", "vue", "frontend", "observability"],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/zhongxiaobing-bs/monitor.git"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"vue": "^3.0.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@company/monitor-core": "workspace:*",
|
|
31
|
+
"@company/monitor-plugin-blank-screen": "workspace:*",
|
|
32
|
+
"@company/monitor-plugin-error": "workspace:*",
|
|
33
|
+
"@company/monitor-plugin-network": "workspace:*",
|
|
34
|
+
"@company/monitor-types": "workspace:*"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsup",
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"lint": "tsc --noEmit",
|
|
40
|
+
"typecheck": "tsc --noEmit"
|
|
41
|
+
}
|
|
42
|
+
}
|