Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 1x 1x 1x 1x 1x 1x 1x 26x 26x 1x 1x 30x 1x 1x 29x 29x 29x 30x 1x 1x 30x 1x 1x 5x 5x 4x 2x 2x 2x 1x 1x 2x 4x 4x 5x 1x 1x 2x 2x 1x 1x 8x 8x 1x 1x 5x 5x 8x 7x 7x 7x 1x 1x 5x 7x 1x 1x 7x 8x 4x 5x 1x 1x 3x 5x 4x 4x 4x 1x 1x 4x 5x 3x 1x 1x 4x 6x 4x 4x 4x 1x 1x 4x 6x 4x 4x 1x | import type { LightPlugin, LightClient, SentryEvent } from '../types';
export class PluginManager {
private plugins: Map<string, LightPlugin> = new Map();
private client: LightClient;
constructor(client: LightClient) {
this.client = client;
}
add(plugin: LightPlugin): void {
if (this.plugins.has(plugin.name)) {
return;
}
this.plugins.set(plugin.name, plugin);
try {
plugin.setup(this.client);
} catch (e) {
console.error(`[LightSDK] Plugin "${plugin.name}" setup error:`, e);
}
}
remove(name: string): void {
const plugin = this.plugins.get(name);
if (plugin) {
if (plugin.destroy) {
try {
plugin.destroy();
} catch (e) {
console.error(`[LightSDK] Plugin "${name}" destroy error:`, e);
}
}
this.plugins.delete(name);
}
}
get(name: string): LightPlugin | undefined {
return this.plugins.get(name);
}
has(name: string): boolean {
return this.plugins.has(name);
}
applyBeforeReport(event: SentryEvent): SentryEvent | null {
let result: SentryEvent | null = event;
for (const plugin of this.plugins.values()) {
if (plugin.beforeReport) {
try {
const modified = plugin.beforeReport(result);
if (modified === null) {
return null;
}
result = modified;
} catch (e) {
console.error(`[LightSDK] Plugin "${plugin.name}" beforeReport error:`, e);
}
}
}
return result;
}
applyAfterReport(event: SentryEvent): void {
for (const plugin of this.plugins.values()) {
if (plugin.afterReport) {
try {
plugin.afterReport(event);
} catch (e) {
console.error(`[LightSDK] Plugin "${plugin.name}" afterReport error:`, e);
}
}
}
}
destroy(): void {
for (const plugin of this.plugins.values()) {
if (plugin.destroy) {
try {
plugin.destroy();
} catch (e) {
console.error(`[LightSDK] Plugin "${plugin.name}" destroy error:`, e);
}
}
}
this.plugins.clear();
}
}
|