diff --git a/types/http-link-header/http-link-header-tests.ts b/types/http-link-header/http-link-header-tests.ts index 2ee32108d0..0be4ad087e 100644 --- a/types/http-link-header/http-link-header-tests.ts +++ b/types/http-link-header/http-link-header-tests.ts @@ -1,4 +1,8 @@ -import * as LinkHeader from 'http-link-header'; +import LinkHeader = require('http-link-header'); + +function isLinkHeader(l: LinkHeader): null { + return null; +} function isBool(bool: boolean): null { return null; @@ -17,6 +21,9 @@ const link = LinkHeader.parse( '; rel="example"; title="Example Website Twice", ' + '; rel="alternate"; title="Alternate Example Domain"' ); +isReferenceArray(link.refs); + +const offsetLink = LinkHeader.parse(' ; rel="example"', 1); const has = link.has('rel', 'alternate'); isBool(has); @@ -28,8 +35,9 @@ const rel = link.rel('alternate'); rel[0]['title'] !== 'bar'; isReferenceArray(rel); -const set = link.set({ rel: 'next', uri: 'http://example.com/next' }); -isReferenceArray(set); +isLinkHeader(link.set({ rel: 'next', uri: 'http://example.com/next' })); const str = link.toString(); isString(str); + +const constructedLink = new LinkHeader(); diff --git a/types/http-link-header/index.d.ts b/types/http-link-header/index.d.ts index 176d02bcf1..e6096ef5d6 100644 --- a/types/http-link-header/index.d.ts +++ b/types/http-link-header/index.d.ts @@ -2,20 +2,53 @@ // Project: https://github.com/jhermsmeier/node-http-link-header // Definitions by: Christian Rackerseder // Noah Loomans +// Harris Lummis // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +export = Link; -export interface Reference { - uri: string; - rel: string; - [index: string]: string; -} - -export interface Link { - refs: Reference[]; +declare class Link { + /** + * Creates a new Link by parsing a link header beginning at the provided + * offset + * @param value The header to parse + * @param offset The offset to start at. Defaults to 0. + * @return A new Link + */ + static parse(value: string, offset?: number): Link; + /** + * Link + * @param value Link header to parse + */ + constructor(value?: string); + refs: Link.Reference[]; has(attribute: string, value: string): boolean; - get(attribute: string, value: string): Reference[]; - rel(value: string): Reference[]; - set(ref: Reference): Reference[]; + /** + * Get refs where the given attribute has a given value + * @param attribute Attribute name + * @param value Value to match + * @return An array of references + */ + get(attribute: string, value: string): Link.Reference[]; + /** + * Get refs with given relation type + * @param value The rel value + * @return An array of references + */ + rel(value: string): Link.Reference[]; + set(ref: Link.Reference): Link; + /** + * Parse a link header beginning at the provided offset + * @param value The header to parse + * @param offset The offset to start at. Defaults to 0. + * @return The calling instance + */ + parse(value: string, offset?: number): Link; } -export function parse(header: string): Link; +declare namespace Link { + interface Reference { + uri: string; + rel: string; + [index: string]: string; + } +}