@har-sdk/core

The base package can be used to import specification files (i.e. HAR, OAS and Postman Collection) and detect their type.

Usage no npm install needed!

<script type="module">
  import harSdkCore from 'https://cdn.skypack.dev/@har-sdk/core';
</script>

README

@har-sdk/core

The base package can be used to import specification files (i.e. HAR, OAS and Postman Collection) and detect their type.

Setup

npm i --save @har-sdk/core

Usage

To import a specification you just need to create an instance of SpecImporter and call its import method passing the data file. The importer performs syntactic analysis and parses a provided file.

import { SpecImporter } from '@har-sdk/core';

const result = await new SpecImporter().import(sourceAsString);
console.log(result);
// {
//   type: 'postman',
//   format: 'json',
//   doc: {
//     info: {
//       name: 'Postman Sample',
//       schema: 'https://schema.getpostman.com/json/collection/v2.1.0/collection.json'
//     },
//     item: [
//       // ...
//     ]
//   },
//   name: 'Postman Sample.json'
// }

To configure the list of importers, you can pass them as an array to the constructor.

import { SpecImporter, HarImporter } from '@har-sdk/core';

const explorer = new SpecImporter([new HarImporter()]);

To extend an explorer by adding a new custom importer, you can easily implement an Importer interface.

import { Importer, Doc, Spec, Importer } from '@har-sdk/core';

class RamlImporter implements Importer<'raml'> {
  get type(): 'raml' {
    return 'raml';
  }

  async import(content: string): Promise<Spec<'raml'>> {
    // your code

    return {
      // other fields
      type: this.type,
      format: 'yaml'
    };
  }
}

The package also contains a set of useful utilities like normalizeUrl:

import { normalizeUrl } from '@har-sdk/core';

normalizeUrl('HTTP://example.COM////foo////dummy/../bar/?'); // http://example.com/foo/bar