[http-link-header] Prefer Module-Class Declaration Style (#37422)

- Change declaration style to reflect export style of js source, allow
  instantiation of module
- Fix incorrect return type on set method
- Update tests to ensure correctness of changes
This commit is contained in:
Harris Lummis 2019-08-13 17:57:55 -07:00 committed by Pranav Senthilnathan
parent 44d88ebf9a
commit db177da108
2 changed files with 56 additions and 15 deletions

View File

@ -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(
'<example-twice.com>; rel="example"; title="Example Website Twice", ' +
'<example-01.com>; rel="alternate"; title="Alternate Example Domain"'
);
isReferenceArray(link.refs);
const offsetLink = LinkHeader.parse(' <example.com>; 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();

View File

@ -2,20 +2,53 @@
// Project: https://github.com/jhermsmeier/node-http-link-header
// Definitions by: Christian Rackerseder <https://github.com/screendriver>
// Noah Loomans <https://github.com/nloomans>
// Harris Lummis <https://github.com/lummish>
// 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;
}
}