open-index/open-npm huggingface dataset:
npm package: @leanscope/inspection
Description: ## Warning
Author: Patrick Andre Decker
Latest version: 0.1.7

# Inspection

## Warning

Inspection is currently still under development. Therefore be careful when using this package in production since breaking changes will very likely occur.

We currently have a dependency to firebase since our data sender service sends data to a firebase instance. However this does not mean that you have to use firebase in order to use this package. You can also write your own sender service that covers your needs.

## About

Inspection is a lightweight package that enables you to track usage data from your app and cache it locally before sending it to a backend server.

## Usage

### Tracking events

In order to track events and save them locally you need to create an inspector.
The type will define what the event context must look like when you call the trackEvent() method.
If you have two use cases where the event context differs, the intended way would be to create an inspector for each of the use cases.

```typescript
const inspector = Inspection.instance().createInspector<T>();
```

That inspector can then be used to track events. As parameter the trackEvent method take a object that contains the context to the tracked event. The event context gets added to some metadata to create an observation.

```typescript
const eventContext = {};
inspector.trackEvent(eventContext);
```

### Sending observations to a backend

To send the locally stored observations to a backend you need to add a `IDataSenderService` to the `Inspection` instance. As second parameter of the `addDataSenderService` method you can specify the interval in which the service should send data to the backend. If left empty this defaults to 60000 ms.

```typescript
const senderService = new ConsoleSenderService();
const sendingIntervalInMs = 120000;
Inspection.instance().addDataSenderService(senderService, sendingIntervalInMs);
```

If you want to stop the sender service from continually sending data you can also remove it from the inspection instance.
Therefore you need the id of the sender service which you get from the `addDataSenderService` method.

```typescript
const id = Inspection.instance().addDataSenderService(senderService);
Inspection.instance().removeDataSenderService(id);
```