ketting
Version:
Opiniated HATEAOS / Rest client.
26 lines (22 loc) • 800 B
text/typescript
import * as uriTemplate from 'uri-template';
import { resolve } from './uri';
import { LinkVariables, Link } from '../link';
export function expand(context: string, template: string, vars: LinkVariables): string;
export function expand(link: Link, vars: LinkVariables): string;
export function expand(arg1: string|Link, arg2: string|LinkVariables, arg3?: LinkVariables): string {
let context:string;
let template:string;
let vars:LinkVariables;
if (typeof arg1 === 'string') {
context = arg1;
template = arg2 as string;
vars = arg3 as LinkVariables;
} else {
context = arg1.context;
template = arg1.href;
vars = arg2 as LinkVariables;
}
const templ = uriTemplate.parse(template);
const expanded = templ.expand(vars);
return resolve(context, expanded);
}