bug-reporterjs-lib
Version:
A lightweight and framework-agnostic JavaScript bug reporter with screenshot capture, error logging, and Axios error tracking. Designed to work seamlessly in Vue, React, and plain JavaScript projects.
152 lines (105 loc) • 3.02 kB
Markdown
# 🛡️ Error Catcher
## Easy bug reporting and error capturing library for web apps
---
## Overview
Error Catcher is a lightweight TypeScript library for capturing errors and reporting bugs in web applications. It provides a simple UI modal for users to submit bug reports, and utilities for developers to catch and log errors efficiently.
## Installation
```bash
npm install bug-reporterjs-lib
```
## Usage in Frontend Frameworks
### Handling Report Status
You can pass an object to `openModal` with the following options:
- `callback`: a function that receives a boolean `status` argument. If `status` is `true`, the report was sent successfully. If `false`, sending failed.
- `locale`: set the modal language. Supported values: `'uz'`, `'ru'`, `'en'`, or `'o'z'`.
**Example:**
```js
reporter.openModal({
callback: (status) => {
if (status) {
alert('Report sent!');
} else {
alert('Failed to send report.');
}
},
locale: 'ru', // or 'uz', 'en', "o'z"
});
```
### BugReporter Options
You can also pass an additional option to the `BugReporter` constructor:
- `isJiraCredsRequired` (optional): if set to `true`, the modal will require JIRA credentials from the user.
**Example:**
```js
const reporter = new BugReporter({
project: 'EFS',
isJiraCredsRequired: true,
});
```
### React
```tsx
import React from 'react';
import { BugReporter } from 'bug-reporterjs-lib';
const reporter = new BugReporter({ project: 'EFS' });
function App() {
const handleReport = () => {
reporter.openModal();
};
return (
<button onClick={handleReport}>Report Bug</button>
);
}
export default App;
```
### Vue 3
```vue
<script setup lang="ts">
import { BugReporter } from 'bug-reporterjs-lib';
const reporter = new BugReporter({ project: 'EFS' });
function handleReport() {
reporter.openModal();
}
</script>
<template>
<button @click="handleReport">Report Bug</button>
</template>
```
### Vue 2
```vue
<template>
<button @click="handleReport">Report Bug</button>
</template>
<script>
import { BugReporter } from 'bug-reporterjs-lib';
const reporter = new BugReporter({ project: 'EFS' });
export default {
methods: {
handleReport() {
reporter.openModal();
}
}
}
</script>
```
### Angular
```typescript
import { Component } from '@angular/core';
import { BugReporter } from 'bug-reporterjs-lib';
const reporter = new BugReporter({ project: 'EFS' });
@Component({
selector: 'app-root',
template: `<button (click)="handleReport()">Report Bug</button>`
})
export class AppComponent {
handleReport() {
reporter.openModal();
}
}
```
## How It Works
- The library automatically listens for errors from Axios and fetch requests.
- Errors are stored in localStorage with useful metadata.
- Calling `openModal()` shows a modal with the latest error and allows users to add comments and send bug reports.
## Contributing
Pull requests and suggestions are welcome! Please open an issue to discuss your ideas.
## License
MIT