1.0.1 • Published 6 months ago

@windyroad/link-header v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

@windyroad/link-header

Parse & format HTTP link headers according to RFC 8288, based on the awesome HTTP Link Header library.

A huge shout-out goes to the team behind the HTTP Link Header library. The comprehensive implementation and set of tests, made porting it to Typescript a breeze.

Why?

I needed something that worked in the browser and the HTTP Link Header library's support for node.js Buffer's prevent that.

Installation

You can install @windyroad/link-header using npm:

npm install @windyroad/link-header

Usage

Parsing a Link Header

To parse a link header string, you can use the parseLinkHeader function:

import { parseLinkHeader } from '@windyroad/link-header';

const linkHeader = '<https://api.example.com/users?page=2>; rel="next", <https://api.example.com/users?page=5>; rel="last"';
const links = parse(linkHeader);

console.log(links);

This will output:

[
  {
    uri: 'https://api.example.com/users?page=2',
    rel: 'next'
  },
  {
    uri: 'https://api.example.com/users?page=5',
    rel: 'last'
  }
]

this is equivalent to

import { LinkHeader } from '@windyroad/link-header';

const linkHeader = '<https://api.example.com/users?page=2>; rel="next", <https://api.example.com/users?page=5>; rel="last"';
const links = new LinkHeader(linkHeader);

console.log(links);

Manipulating a Link Header

To manipulate a link header, you can use the LinkHeader class:

import { LinkHeader } from '@windyroad/link-header';

const linkHeaderString = '<https://api.example.com/users?page=2>; rel="next", <https://api.example.com/users?page=5>; rel="last"';
const linkHeader = LinkHeader.parse(linkHeaderString);

// Find the link with rel="next" and change its URI.
const nextLink = linkHeader.rel('next');
nextLink.uri = 'https://api.example.com/users?page=3';

// Add a new link with rel="prev".
linkHeader.set({ uri: 'https://api.example.com/users?page=1', rel: 'prev' }));

const newLinkHeaderString = linkHeader.toString();

console.log(newLinkHeaderString);

This will output:

<https://api.example.com/users?page=3>; rel="next", <https://api.example.com/users?page=1>; rel="prev"

API

parse(linkHeader: string): LinkHeader

Parses a link header string into an array of LinkHeader object.

Contributing

Contributions are welcome! Please read the contributing guidelines for more information.

License

@windyroad/link-header is lovingly licensed under the MIT License. ❤️