# harblz

> A Har Parser with some Wrapper utils

Latest version **0.0.2** (published 2023-07-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install harblz
pnpm add harblz
yarn add harblz
bun add harblz
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2023-07-13 |
| First published | 2023-07-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 28.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | ISON |
| Maintainers | azzgo |

## Links

- npm: https://www.npmjs.com/package/harblz
- Homepage: https://github.com/azzgo/har
- npm.io page: https://npm.io/package/harblz

## Dependencies (1)

- [ajv](https://npm.io/package/ajv.md) ^8.12.0

## Recent versions

- 0.0.2 (latest) — 2023-07-13
- 0.0.1 — 2023-07-13

## README

# Har Blz - A Http Archive File parser

HAR stands for Http Archive File, as described in the W3C documentation [HTTP Archive (HAR) format ↗](https://w3c.github.io/web-performance/specs/HAR/Overview.html).

Although the HAR document format has been deprecated, it is still widely used today in modern browsers and other software such as Charles, Fiddler, and Postman.

The purpose of creating this library is to make it easy to extract API data from HAR files for data analysis or to prepare data for mock servers when developing web clients. I hope it can help you too.

## Install

```bash
npm install --save harblz
```

## Usage

### Get all json returned Entry

```ts
import { fromPath, HarWrapper, fromString } from "harbiz";

const har = fromPath(path.resolve(__dirname, "./sample-1.2.har"));
// or const har = fromString('{ "log": { ... } ');

const harWrapper = new HarWrapper(har);

const entires = harWrapper.entryWrapper.filterByMimeType("application/json");

// prepare data and launch a mock server
```

## API

### Load HAR object

```ts
// load from file
const har = fromPath(path.resolve(__dirname, "./sample-1.2.har"));

// load from json string
const har = fromString(
  fs.readFileSync(path.resolve(__dirname, "./sample-1.2.har"), {
    encoding: "utf-8",
  })
);
```

### Exceptions

- InvalidHarFormat: thrown when the content of the HAR file read or the HAR JSON String does not conform to the HAR document format.
- UnsupportSpecVersion: thrown when the HAR document version format is not supported (currently only version 1.2 is supported).

### Wrappers

Provides some wrappers that provide convenient utility functions based on the HAR Object.

**HarWrapper**

```ts
import { HarWrapper } from "harbiz";

// const har = fromString('...')
const harWrapper = new HarWrapper(har);
```

| field        | type         | description              |
| :----------- | ------------ | ------------------------ |
| version      | string       | The version number of the HAR file |
| creator      | Creator      | Information about the creator of the HAR file |
| browser      | Browser      | User Agent related information |
| pageWrapper  | PageWrapper  | Pages wrapper, currently an empty implementation |
| entryWrapper | EntryWrapper | Entries wrapper |

**EntryWrapper**

| method                 | type                                                                 | description                          |
| :--------------------- | -------------------------------------------------------------------- | ------------------------------------ |
| filterByHttpMethod     | (method: string): Entry[]                                            | Filter Entries by HTTP request method |
| filterByRequestHeader  | (headers: Record<string, string>): Entry[]                           | Filter Entries by HTTP request headers |
| filterByResponseHeader | (headers: Record<string, string>): Entry[]                           | Filter Entries by HTTP response headers |
| filterByStatus         | (filterOrFilterFn: ((status: number) => boolean) \| number): Entry[] | Filter Entries by HTTP response status code |
| filterByMimeType       | (mineType: string): Entry[]                                          | Filter Entries by HTTP response mimeType |

---
_Source: https://npm.io/package/harblz · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
